8086处理器为什么要采用分段机制

只要学过汇编的人都知道8086处理器对存储器采用分段管理机制,为什么要这么设计呢?采用线性地址直接访问存储器该多好,直接明了。

其实Intel的工程师绝对不会那么傻,当然是有他的道理:

首先,地址总线有20根,可寻址1M的地址空间,而寄存器是16位,仅能寻址64K,总不能白白浪费多出来的空间。要知道在8086的那个年代,内存是非常昂贵的。

所以Intel的工程师想出了分段管理的方法:段地址x4+偏移地址。

另外,分段管理还有利于代码的组织,对内存实现有效的管理。例如,将代码段、数据段隔离等。

学习过程中,如果按照书中所描述,照搬的学习,既不方便记忆,也不能将知识融会贯通。

时间: 2024-11-20 22:57:08

8086处理器为什么要采用分段机制的相关文章

Linux内存寻址之分段机制

http://blog.xiaohansong.com/2015/10/03/Linux内存寻址之分段机制/ .段的起始地址.段的长度等等,而在保护模式下则复杂一些.IA32将它们结合在一起用一个8字节的数表示,称为描述符 .IA32的一个通用的段描述符的结构从图可以看出,一个段描述符指出了段的32位基地址和20位段界限(即段长).这里我们只关注基地址和段界限,其他的属性略过. 段描述符表 各种各样的用户描述符和系统描述符,都放在对应的全局描述符表.局部描述符表和中断描述符表中.描述符表(即段表

内核保护模式之分段机制

CPU的三种模式 1982年,intel推出了80286处理器,第一次提出了保护模式,在保护模式下,段寄存器中存储的不再是段基址,而是段选择子. 真正的段基址存储在描述符高速缓存中,80286处理器访问内存,不需要段寄存器左移加上偏移. 在x86体系的CPU下,支持三种模式 实模式:兼容16位CPU的模式,当前的PC系统处于实模式(16位模式)运行状态,在这种状态下软件可访问的物理内存空间不能超过1MB,且无法发挥Intel 80386以上级别的32位CPU的4GB内存管理能力.实模式将整个物理

操作系统篇-分段机制与GDT|LDT

|| 版权声明:本文为博主原创文章,未经博主允许不得转载. 一.前言 在<操作系统篇-浅谈实模式与保护模式>中提到了两种模式,我们说在操作系统中,其实大部分时间是待在保护模式中的.因此若想理解操作系统程序中的启动相关的部分,必须要理解保护模式下的编程,而分段机制是保护模式编程下的基础.而且,由于实模式与保护模式的不同,对保护模式下的分段机制更需要注意. 二.线性地址 在保护模式下编程,访问内存时,需要在程序中给出段地址和偏移量,因为分段是保护模式的基本特征之一.传统上,段地址和偏移地址称为逻辑

分段机制(个人理解)

分段机制可用于实现多种系统设计.这些设计范围从使用分段机制的最小功能来保护程序的平坦模型,到使用分段机制创建一个可同时可靠地运行多个程序(或任务)的具有稳固操作环境的多段模型. 多段模型能够利用分段机制全部功能提供由硬件增强的代码,数据结构,程序和任务的保护措施.通常,每个程序(或任务)都是用自己的段描述符以及自己的段.对程序来说段能够完全是私有的,或者是程序之间共享的.对所有段以及系统上运行程序各自执行环境的访问都由硬件控制. 访问检查不仅能够用来保护对段界限以外地址的引用,而且也能用来在某些

分段机制

段的定义 段的介绍 分段机制就是把虚拟地址空间中的虚拟内存组织成一些长度可变的称为段的内存单元. 80386虚拟地址空间中的虚拟地址(逻辑地址)由一个段部分和一个偏移部分构成.段是虚拟地址到线性地址转化的基础.每个段有三个参数定义: 段基地址,指定段在线性地址空间中的开始地址.基地址是线性地址对应于段中偏移 0 处. 段限长,是虚拟地址空间中段内最大可用偏移地址.定义了段的长度. 段属性,指定段的特性.如该段是否可读.可写或可作为一个程序执行,段的特权级等. 多个段映射到线性地址中的范围可以部分

Strut2 采用token机制防御CSRF同时也可以防止表单重复提交

一 未配置Struts2 token的情况下测试 1.从表单提交数据,可以从下图看出,快速点击保存按钮,请求提交了两次 2.检查post提交的数据中未含有token参数 3.查看数据列表,有重复数据 4.将刚才的请求由post请求转换为get请求(CSRF攻击),从下图可以看出请求成功 二 配置Struts2 token值后再次测试 1. 在工程中的Struts文件中配置token机制,针对新增与修改的form请求 2.在页面头部添加<%@ taglib uri="/struts-tags

通过分段机制和分页机制实现禁止数据写入

今天调试程序的时候,对windows对R3的保护机制很感兴趣,为什么rdata段只可读,为什么data可读写,为什么text段不可写入,只可执行,正好今天没事干,这里就做了个测试,首先查看程序断到入口点后,它的物理页的情况 kd> !dd 1db69000 #1db69000 120a5025 80000000 1e642025 00000000 #1db69010 03481025 80000000 1e85e225 80000000 #1db69020 1db96025 80000000 0

工具类之数据库工具类:DBUtil(采用反射机制)

经常操作数据库的码农们一定知道操作数据库是一项很复杂的工作,它不仅要解决各种乱码的问题还要解决各种数据表的增删改查等的操作. 另外每次操作数据库都要用到数据库连接.执行SQL语句.关闭连接的操作,所以在这里我就把这些功能封装到了一个工具类中,该类使用的是反射机制写成的,也就是说它可以帮助你完成对任何数据表的操作.关键代码如下: 首先是配置文件:config.properties driverName=com.mysql.jdbc.Driver url=jdbc:mysql://localhost

内存映射与访问机制

通过参考内存布局及访问机制的相关文章,本文试着整合一下相关知识点,希望能对有需要的朋友提供一点参考.但由于所参考文章皆为网友所作,相关知识并没有形成系统的认识,所以有些知识点仍然不够清楚,也难免有谬误之处.如果大家发现错误,敬请指出,另外倘若有关于“系统启动及内存布局”方面的可靠的资料或书籍,恳请大神留言告知. 参考文章(只列出几个重要的):http://www.cnblogs.com/clover-toeic/p/3754433.html http://blog.chinaunix.net/u