IO知识基础篇(2) -虚拟存储管理

本文将介绍虚拟存储管理的页式管理模型,包括以下几点:
  • 内存的物理地址、程序的虚拟地址(逻辑地址)
  • 虚拟存储管理、分页、分段的概念
  • 虚拟存储管理的页式管理模型

一 内存的物理地址、程序的虚拟地址(逻辑地址)

1 内存的物理地址:

         内存是由存储单元组成的,存储单元都有编号,这个编号就是物理地址,物理地址是内存的绝对地址.

 

2 程序的虚拟地址(逻辑地址)

        虚拟地址指程序中使用的地址,这种地址是相对于程序的起始位的,也称为逻辑地址,在程序编译时每个目标模块的虚拟地址都是从0开始编号,32位cpu对应32位操作系统,在程序中的指针用4字节表示,可映射到4G的虚拟地址空间

 

二 虚拟存储管理、分页、分段的概念

1 虚拟存储管理的概念

         首先,得提一下虚拟存储管理与IO中断,DMA等的联系.IO中断,DMA是指数据在外存与内存之间传递的机制; 而虚拟存储管理是程序运行时数据的管理机制.

        其次,得提一下的,与虚拟存储管理相反的概念,是实存储器管理,在实存储器管理模式中,要求程序在运行前全部装入内存,之后就一直驻留在内存中直到运行结束,其中某些程序并没有一直处于运行状态,却长期占用着内存资源,从而降低了内存的利用率;更严峻的情况是,当程序的存储空间要求大于实际的内存空间时,内存就难以支撑程序的运行了.

        而虚拟存储管理就是利用实际内存空间和相对大的多的外部储存器存储空间相结合构成一个远远大于实际内存空间的虚拟存储空间,让程序运行在这个虚拟存储空间中.

 

2 分页及分段

(1)分页: 

        虚拟存储管理机制中,操作系统会根据程序的虚拟地址空间,把程序数据划分为大小相等的若干单元,即分为若干页,每个页都有自己的页号,并在程序运行时动态将页映射到在内存中划分的与页相等的内存块(每个块也有自己的块号),操作系统按需要把需要的程序页调入内存,而不需要的页可以留在硬盘里,当在内存的某些页暂时不需要时,又可以把其调出内存,放到硬盘的页对换区里暂时存放,这样就解决了程序文件的大小大于内存大小而导致程序难以运行的问题,也大大提高了内存的利用率.

 

(2)分段: 

        把程序按内容或过程(函数)等关系分成段,每个段有自己的段号,使程序段的虚拟地址空间都对应于一个由(段号:段内偏移)构成的二维地址.段式管理以段为单位分配内存,然后通过地址变换将段式虚拟地址转换成实际的内存物理地址.和页式管理一样,段式管理也采用只把那些需要的段驻留内存,而把不需要的段调出,待需要时才调入内存

 

(3)区别与联系:

         分页及分段都是把程序虚拟地址划分为若干单元,分页的大小相等,一个页内的程序数据没有逻辑关系,分段的大小可以不相等,每个段定义了一组逻辑上完整的程序或数据.

        根据硬件特性,操作系统的存储管理实现中可能将二者结合起来,构成段页式存储管理机制,先将程序分成若干个段,再把每个段分成若干个页进行管理.

 

        后面将使用分页来讲解虚拟内存管理技术,分段的情形可类比之.

        

三 页式管理模型

       

1 操作系统会将硬盘当成两个区域:   

(1)文件区: 通常意义上的永久存储区域,用于存放一切文件;

(2)对换区: 用于暂时存放从内存调出来的程序运行暂时不需要的页数据.通常,对换区是采用连续分配方式,而文件区是采用离散分配方式,故对换区的磁盘I/O速度比文件区高.

 

2 页表

        操作系统会为每一进程建立一张页表,实现从页号到物理块号的映射.在页表中的项叫页表项,每一项对应一个页,保存着页号与物理块号的映射的相关信息.

 

3 页表的建立

        程序文件被执行时,系统根据自身的页式管理机制,将程序文件分页并建立程序对应的页表,及程序页对应的页表项(注意,操作系统并不会真的把程序文件切割成页大小,而仅是建立了程序对应的页表等相关的数据结构)

 

4 页面调入调出过程

        每当程序所要访问的页面未在内存时,便向CPU发出一缺页中断,中断处理程序首先保留CPU环境,分析中断原因后,转入缺页中断处理程序.该程序通过查找页表,得到该页在外存的物理块后,如果此时内存能容纳新页,则启动磁盘I/O将所缺之页调入内存,然后修改页表.如果内存已满,则须先按照某种置换算法从内存中选出一页准备换出;如果该页未被修改过,可不必将该页写回磁盘,直接覆盖之;但如果此页已被修改,则必须将它写回磁盘,然后再把所缺的页调入内存,并修改页表中的相应表项的相关状态信息.在缺页调入内存后,利用修改后的页表,去形成所要访问数据的物理地址,再去访问内存数据.

 

5 关于从何处调入页面

(1)如果系统拥有足够的对换区空间,这时可以全部从对换区调入所需页面,以提高调页速度.为此,在进程运行前,便须将与该进程有关的文件从文件区拷贝到对换区.

 

(2)如果系统缺少足够的对换区空间,这时凡是不会被修改的文件,都直接从文件区调入;而当不需要这些页面呆在内存时,由于它们未被修改而不必再将它们换出(替换即可),以后再调入时,仍从文件区直接调入.但对于那些被修改的部分,在将它们换出时,便须调到对换区,以后需要时,再从对换区调入.

 

(3)在UNIX操作系统中,与进程有关的文件都放在文件区,故凡是未运行过的页面,都从文件区调入.而对于曾经运行过但又被换出的页面,由于被放在对换区,因此在下次需要时,应从对换区调入.由于UNIX系统允许页面共享,因此,某进程所请求的页面有可能已被其它进程调入内存,此时也就无须再从对换区调入.

 

6 模型总结:

 虚拟存储管理,就是操作系统根据建立的页表,按一定的策略将页数据进行换进换出的机制

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值