彻底理解操作系统:CPU与实模式
寻址,最重要的就是寻址
直接告诉我们一个编号,我们拿到这个编号后按个去找,就像下面这张图,我们需要找到东西在第15号储物柜中,那么我们根据15这个地址就能找到第15号储物柜。 当然我们也可以将储物柜划分区域,还是以刚才的储物柜为例我们可以划分为3个区域,当我们需要找东西时告诉我们其在储物柜的哪个区域,以及在该区域中的"偏移"是多少。
以下图为例我们需要的东西在第二个区域,区域内的偏移为6(该区域中的第6个储物柜)。
死板 vs 灵活
绝对路径与相对路径
/user/xiaofeng/doc/a.c
./a.c
物理地址 = 起始地址 + 相对地址
分段式内存管理
保存机器指令的区域,这个区域就是我们所说的代码段(Code Segment),因此我们可以使用一个寄存器来专门指向代码段,这就是CS寄存器的作用,CS也是Code Segment的缩写。
同样的道理,程序运行起来后还有专门的区域用来保存数据,因此必须要专门的寄存器指向数据段(Data Segment),这就是DS寄存器的作用,DS是Data Segment的缩写。
程序运行起来后还有运行时栈(Stack Segment),因此可以使用SS寄存器来指向程序员运行时栈,SS是Stack Segment的缩写。
此外还有ES寄存器,Extra Segment,其用作临时段寄存器。
没有内存保护会怎样?
实模式
绝对的内存地址不好用,这样的地址必须将程序加载到内存的特定位置上,为解决这个问题使用相对地址,x86中为每个程序的区域都配备有专用的寄存器用来存放该段在内存中的起始地址,这样就可以根据基址加偏移计算出物理内存地址,注意,这里计算出来的是真实的物理内存地址。 内存读写没有任何保护,程序可以读写内存的任何区域。
16 ∗ selector + offset
寻址空间有限,只有1MB 利用 selector:offset的方式利用两个16位寄存器来寻址1MB内存 没有内存保护机制,当然,没有内存保护机制的一大优点就在于内存读写速度要更快,原因就在于不需要经过虚拟内存地址到物理内存地址的转换,也不需要进行任何检查(这可能是实模式下仅有的优点)
实模式与操作系统
把物理内存暴露给程序
没有内存保护机制
总结
w3cschool编程狮
专门学习编程的学习网站
评论