汤晓丹的第四版计算机操作系统--第四章总结概述

第四章 存储器管理

4.1存储分类

通用计算机而言,存储层次至少应具有三级:最高层为CPU寄存器,中间为主存,最底层是辅存。在较高档的计算机中,还可以根据具体的功能细分为寄存器、高速缓存、主存储器、磁盘缓存、固定磁盘、可移动存储介质等6层。

程序的装入和链接:

(1) 编译,由编译程序(Compiler)对用户源程序进行编译,形成若干个目标模块(Object Module);

(2) 链接,由链接程序(Linker)将编译后形成的一组目标模块以及它们所需要的库函数链接在一起,形成一个完整的装入模块(Load Module);有静态链接,装入时动态链接和运行时动态链接。

(3) 装入,由装入程序(Loader)将装入模块装入内存。有绝对装入方式,可重定位装入方式,动态运行时的装入方式。

4.2 连续分配存储管理方式

1.单一连续分配:当时的存储器管理方式是把内存分为系统区和用户区两部分,系统区仅提供给OS使用,它通常是放在内存的低址部分。而在用户区内存中,仅装有一道用户程序,即整个内存的用户空间由该程序独占。这样的存储器分配方式被称为单一连续分配方式。

2.固定分区分配:划分分区和内存分配。

3.动态分区分配:主要涉及到① 空闲分区表,② 空闲分区链:为了实现对空闲分区的分配和链接。

基于顺序搜索的动态分区分配算法

1.首次适应(first fit,FF)算法:要求空闲分区链以地址递增的次序链接。在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留在空闲链中。

2.循环首次适应(next fit,NF)算法:不再是每次都从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找。从而找个和作业相同大小的分区。

3.最佳适应(best fit,BF)算法:每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业,该算法要求将所有的空闲分区按其容量以从小到大的顺序形成一空闲分区链。

4.最坏适应(worst fit,WF)算法:扫描整个空闲分区表或链表时,总是挑选一个最大的空闲区,从中分割一部分存储空间给作业使用。

基于索引搜索的动态分区分配算法

1.快速适应(quick fit)算法:通过空闲分区链的索引表,找到合适的分区。

2.伙伴系统(buddy system)。

3.哈希算法

动态可重定位分区分配

4.3分页存储管理方式

程序与内存的存储管理分为离散的和连续的,分区是连续的,分页,分段和段页式都是离散的。

1.分页管理

就是把进程分成若干页,然后把内存分成若干个页框,把页装入页框中。中间需要用到页表,然后利用寄存器来进行页与页框的逻辑映射。页表功能是由一组专门的寄存器来实现的。一个页表项用一个寄存器

2.分段管理

将进程分为若干个程序段,装入内存中的不同的分区中。然后利用段表对他们进行映射管理,同时也是通过寄存器进行管理的。

分页和分段的主要区别

(1) 页是信息的物理单位。
(2) 页的大小固定且由系统决定。
(3) 分页的用户程序地址空间是一维的。

3.段页式存储管理

即先将用户程序分成若干个段,再把每个段分成若干个页,并为每一个段赋予一个段名。该作业有三个段:主程序段、子程序段和数据段;页面大小为 4 KB。在段页式系统中,其地址结构由段号、段内页号及页内地址三部分所组成。

4.分区管理

就是把一个进程直接放入一个分区里面,那样对于大小不合适的分区和进程,容易产生空间浪费。对于产生的其他碎片零头,可以紧凑方法,把若干个小碎片整理成大的分区空间。

本文链接:https://my.lmcjl.com/post/10527.html

展开阅读全文

4 评论

留下您的评论.