操作系统之存储器管理
一、分页管理
1.1 基本原理
分页存储管理是将一个进程的地址空间划分为若干个大小相等的区域,称为“页”。
将内存空间划分为与页面相同大小的若干个物理块,称为“页面”或“页框”。
“页表”:实现从页号到物理块号的地址映射。系统为每个进程建立一张页表,每个页在页表中占一个表项,记录该页在内存中对应的物理块号。
地址结构:
页号(31,12)+页内地址(11,0),也即,每页的大小为4KB,允许有1M个页
地址转换方式为:根据“页号”查找页表中的页表项;根据页表项找到所在的物理块,块内偏移地址与页内地址一致
根据进程是全部还是部分进驻内存,将分页管理分为“静态分页”和“请求分页管理”两类。
1.2 请求分页管理
1.2.1 基本思想
只需在内存中装入作业的部分页面就能执行该作业,当进程访问的页面不在内存中时,通过产生缺页中断,由缺页中断处理程序吧所缺页面调入内存。可以以页面为单位进行加载。
1.2.2 页表
页号+物理块号+状态位+访问字段+修改位+外存地址
状态位:指示该页是否以调入外存
访问字段:用于记录本页在一段时间内被访问的次数
修改位:表示该页在调入内存后是否被修改过
外存地址:用于指示该页在外存上的地址
1.2.3 置换算法
a 先进先出算法(FIFO)
该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最长的页面予以淘汰
b 最近最少使用算法(LRU Least Recently Used)
当需要淘汰一页时,选择最近一段时间内最久没有被使用过的页面。基于假定:某页面在过去一段时间内没有被使用的时间最长,则它在将来一段时间内也不会被使用。
c 最近未使用页面算法(NUR Not Used Recently)
该算法为每个页设置一位访问位,将内存中的所有页面都通过链接指针连成一个循环队列。当某页被访问时,访问位置1。在选择一页淘汰时,就检查其访问位,如果是0,就选择该页换出;若为1,则重新置0,暂不换出该页。在循环链表中检查下一个页面,直到访问位为0的页面为止。
二、分段管理
2.1 基本原理
将程序的地址空间按程序的逻辑结构划分为若干个段,段式系统的逻辑地址由段号和段内偏移地址组成,程序执行中可以用段名和段内地址进行访问。
三、段页式存储管理
1、基本原理
把用户程序按程序的逻辑关系分为若干个段,并为每个段赋予一个段名,再把每个段划分为若干个页面,将整个主存划分为与页面大小相等的页架,以页架为单位离散分配。
2、地址
段号+段内页号+页内地址
a 利用段表起始和段号求出该段对应的段表项在段表中得位置,从中得到该段的页表初始地址。
b 利用逻辑地址中得段内页号获得对应的页表项位置,从中得到该页所在的物理块号
c 利用物理块号和页内地址构成物理地址。