什么是实模式,平面模式,保护模式(指操作系统)

这个说来话长了. 8086体系的CPU一开始是20根地址线, 寻址寄存器是16位, 16位的寄存器可以访问64K的地址空间, 如果程序要想访问大于64K的内存, 就要把内存分段, 每段64K, 用段地址+偏移量的方法来访问.

   后来386CPU出来之后, 采用了32条地址线, 地址寄存器也扩为32位, 这样就可以不用分段了, 直接用一个地址寄存器来线性访问4G的内存了. 这就叫平面模式. PS:也就是说,32位的CPU最多可以寻址4GB的内存空间,如果物理内存大于4GB,超出的部分CPU是无法寻址到的。这就是为什么32位CPU不支持4GB以上内存的原因。

   为了和16位的软件保持兼容, 386的线性内存访问功能只在一种叫"保护模式"的状态上使用, 在这种状态下, 一切程序都可以用线性地址(不分段)访问自己所拥有的4G的内存空间, 但是不能访问其他程序的空间. 如果有程序要访问不该访问的内存(一般只有病毒才会这么作), 就会出系统错误, CPU就用中断通知OS, 这样的进程会被OS发现, 并杀死, 不会影响其他程序. 在windows里常见的系统错误"某某内存不能读写"就是这种问题, 这都不是windows的问题, 而是一些破程序的问题.

在这种情况下, 实际是CPU和OS一起保护了程序的内存, 因此叫做保护模式.

  实际上不可能每个程序都要有4G的空间. 为了为每个程序都提供4G内存, 386及以后的CPU采用"页"的方式来管理内存, 把内存分为一个个的页, 页的物理地址与每个程序虚拟的4G线性地址用一个表格保存.

  程序用线性地址访问内存. 如果这个内存还没有用过, 就找一个内存页来假装涉及的线性内存段. 如果这个内存长期不用, 操作系统就把内存页存到硬盘上去, 就叫虚存交换文件. 如果这个内存所在的页已经分配过, 但是没有在实存里, 那么CPU就出现一个缺页中断, 由操作系统把硬盘交换文件里的页内数据读出来, 在实存中找一块写进去, 修改页地址和线性地址的对应表格, 然后请程序继续运行.

  386可以假装自己是一个16位的CPU, 用16位的分段方式工作, 和保护模式相对的, 这种模式就叫做实模式. 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值