第五章 存储管理
分页技术
分页存储管理的基本概念
- 页、块的概念
- 逻辑空间分页:一个进程的逻辑地址空间分成等大小的部分,叫做页。
- 内存空间分块:内存(物理存储空间)分为等大小的部分,叫做块。
- 页表、块表的作用
- 页表:页表的作用是实现页号到物理块号的地址映射。(页表放在cache中叫快表,页表放在内存中叫慢表。)
- 块表:整个操作系统有一个内存块表。每个内存块在内存块表占一项,表明当前块是空闲还是已经分出去了;如果已分出去,是分给哪个进程的哪个页面了。
- 内存分配原则
- 当一个进程装入内存时,首先检查它有多少页,若有n页,若内存中空闲块满足>=n,则分配n个空闲块,将进程装入内存,且在该进程的页表中记下一页号和块号的对应关系。(即系统以块为单位把内存分配给进程)
- 逻辑地址结构
- (高位)页号p+(低位)页内地址d ;如果地址字长是m位,而页面大小是2^n字节,那么页号占m-n位(高位),低n位表示页内地址。
- 给定逻辑地址A,页面大小L,则
- 页号p=(int)A/L
- 页内地址d=A %L
- 逻辑地址(页号+页内地址)=>物理地址(块号+页内地址)
特点
- 分页技术存在内部碎片,不存在外部碎片。
- 页面设计越小,
- 优点
可以减少内部碎片。 - 缺点
同一进程,需要的页面更多。所以:1:需要更大的页表,页表寄存器装入的时间更长。2.页面传送的次数更多,而传送大页面和小页面的时间大致相同,从而增加了总的传送时间。
- 优点
页表的构造(todo 继续看书)
- 问题:
由于每个进程的页表要连续的较大的内存,也不现实。 - 解决方法:
- 1.多级页表
把页表本身也分页,离散地存储在内存中,并且只将当前需要部分的表项掉入内存,其余的表项根据与需要动态地掉入内存。
例如两级页表:
地址结构:外层页号+内层页号+页内地址
外层页项每一项是相应内层页表的起始地址,内层页项每一项是相应页面在内存中的物理块号。 - 2.散列页表
散列表每一项是一个散列值对应的链表,链表节点是页号、页号对应的块号、以及连着下一个节点的指针。 - 3.成簇页表
64位大地址往往采用这种方式。【与散列表相似,差别是:散列页表中的每一项不是仅对应一页,而是涉及若干页构成的簇。这样一个页表项就可以保存多个物理块的映像。】?
- 1.多级页表
分段技术
分页技术中提供给用户的逻辑地址空间是一维的线性空间,这与内存的物理组织基本相同,但用户所写的程序的逻辑结构却不是这样的。
我们希望程序的地址空间按照程序自身的逻辑关系划分成若干段,例如每个函数一个段,各段单独占用一片内存空间。
分页和分段的区别
- 页:页的大小是系统决定的,由机器硬件把逻辑地址划分成页号和页内地址两部分,在一个系统中只能有一种页的大小。
段:一个程序各段的长度可以各不相同,取决于用户编写的程序。 - 页:分页的进程,地址空间是一维的,地址编号从0递增,一直排到末尾。
段:分段的的进程,地址空间是二维的,标识一个地址时,除给出段内地址外,还必须给出段名。 - 页:分页系统很难实现过程和数据的分离
段:分段系统可以很容易实现。
段页式(todo 继续看书)
分页存储管理:有效地提供内存利用率;分段存储管理:很好的满足用户需要。段页式将二者结合。
基本原理
- 等分内存。内从块从0开始依次编号。
- 进程的地址空间采用分段方式。把进程的程序和数据划分成若干段,每段有一个段名。
- 段内分页,页面大小与内存块相同。每段内的各个页面都分别从0开始依次编号。
- 逻辑地址结构:段号+段内页号+页内地址
- 内存分配的单位是内存块。
- 段表、页表、段表地址寄存器。
系统有一个段表地址寄存器,指出每个进程的段表长度和段表起始地址。
系统为每个进程建一个段表(记录页表长度和页表地址)。
系统还为每个进程的段表中的每个段建立页表。
第6章 文件系统
磁盘空闲存储空间管理
1 空闲空间表法
2 空闲块链接法
3 位示图法(BitMap)法
用一串二进制值反应磁盘空间的分配情况,位示图大小由盘块总数决定。每个盘块对应一个二进制位,表示空闲/已分配。
优点:寻找第一个空闲块或几个连续的空闲块时相对简单有效(利用位操作)。
4 空闲块成组链接法