分段机制与分页机制

今天开始从软硬件的基础开始学起,看了周明德的《微型计算机系统原理及应用》。
前面的收获先不说,先讲下‘分段机制与分页机制’,主要从网上查找了一些信息:
1. 概念:
http://www.diybl.com/course/6_system/linux/Linuxjs/20090317/162144.html
里面提到了很多术语:逻辑地址,线性地址,物理地址,虚拟地址;  
http://www.diybl.com/course/6_system/linux/Linuxjs/2008923/144961.html 

http://www.diybl.com/course/6_system/linux/Linuxjs/20071129/88885.html
大致的从宏观上解释了一下一些概念;
主要讲解如何将一个逻辑地址转换成物理地址;

2. 分页机制:
http://www.diybl.com/course/6_system/linux/Linuxjs/20090312/160874.html
http://www.diybl.com/course/6_system/linux/Linuxxl/2007625/67287.html

http://book.51cto.com/art/200907/138358.htm

3. 虚拟内存(互动百科)
     当程序的存储空间要求大于实际的内存空间时,就使得程序难以运行了.虚拟存储技术就是利用实际内存空间和相对大的多的外部储存器存储空间相结合构成一个远远大于实际内存空间的虚拟存储空间,程序就运行在这个虚拟存储空间中.能够实现虚拟存储的依据是程序的局部性原理,即程序在运行过程中经常体现出运行在某个局部范围之内的特点.在时间上,经常运行相同的指令段和数据(称为时间局部性),在空间上,经常运行与某一局部存储空间的指令和数据(称为空间局部性),有些程序段不能同时运行或根本得不到运行.
  虚拟存是把一个程序所需要的存储空间分成落干页或段,程序运行用到页和段就放在内存里,暂时不用就放在外存中.当用到外存中的页和段时,就把它们调到内存,反之就把它们送到外存中.装入内存中的页或段可以分散存放.
     虚拟页式存储管理和一般的页式管理有相同之处,只不过各进程页表要增加指明每个页面所在的位置,也就是这个页面是在内存还是外存中的具体物理地址.当进程工作到需要使用某个页面时,如果通过查页表发现该页表是在外存中,此时要进行缺页中断处理.也就是暂停当前进程的运行,CPU转而执行缺页中断处理程序,把所需要的页面调入内存,在页表上填写该页面的物理页面号,注名该页面已经进入内存,再恢复当前进程的运行
    
     内存----外存;  段、页

4.  我的理解:
80X86的主流结构是IA-32结构微处理器。早期的8086,8088并不是采用这种结构,而是16位机。但是IA-32也可以兼容这些早期的版本。(数字大概代表寄存器位数)
实地址:物理地址
8086的地址总线是20位的,可以寻址2^20=1MB的空间,即地址从00000H到FFFFFH,但是寄存器是16位的,放不下20位的地址,最多可以寻址2^16=64MB的地址,因此,采用的分段的方法,将整个1MB的空间分成若干64KB的段。基地址由段寄存器生成,偏移量由SP\IP\BP\SI\DI等得到,物理地址=基地址左移4位+偏移量=20位。








posted @ 2009-08-25 15:31  小饭  阅读(1095)  评论(0编辑  收藏  举报