《操作系统》第四章 存储器管理

第四章

4.1 程序的装入和连接

4.1.1 程序的装入

1.绝对装入方式
用户程序经编译后,将产生绝对地址(物理地址)的目标代码。

2.可重定位装入方式
根据内存的具体情况将装入模块装入到内存的适当位置。

3.动态运行时的装入方式
把装入模块装入内存后,并不立即把装入模块中的逻辑地址转换为物理地址,而是把这种地址转换推迟到程序真正要执行时才进行。

4.1.2 程序的链接

1.静态链接方式
- 事先进行链接以后不再拆开的链接方式

2.装入时动态链接
- 用户源程序经编译后所得到的目标模块,是在装入主存时,边装入边链接的

3.运行时动态链接
- 可将某些目标模块的链接,推迟到执行时才进行

4.2 连续分配存储管理方式

4.2.1 单一连续分配

在单道程序环境下,存储器管理方式将内存分为系统区用户区系统区仅提供给OS使用,它通常是放在内存的低址部分。而用户区内存中,仅装有一道用户程序,即整个内存的用户空间由该程序独占

4.2.2 固定分区分配

为了能在内存中装入多道程序,且使这些程序之间又不会发生相互干扰,于是将整个用户空间划分为若干个固定大小的区域。

存储管理方法:将内存空间划分为若干个固定大小的分区,除 OS 占一区外,其余的一个分区装入一道程序。分区的大小可以相等,也可以不等,但事先必须确定,在运行时不能改变。即分区大小及边界在运行时不能改变。

4.2.3 动态分区分配

动态分区分配又称可变分区分配,它是根据进程的实际需要,动态地为之分配内存空间。

存储管理方法
1.内存不是预先划分好的,作业装入时,根据作业的需求和内存空间的使用情况来决定是否分配。
2.若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待内存空间。

4.2.4 动态分区分配算法

1.首次适应算法(first fit) FF
在分配内存时,从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存空间,分配给请求者,余下的空闲分区仍留在空闲链中。若从链首直至链尾都不能找到一个能满足要求的分区,则表明系统中已没有足够大的内存分配给该进程,内存分配失败,返回。
2.循环首次适应算法(next fit) NF
在为进程分配内存空间时,不再是每次从链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区,从中划出一块与请求大小相等的内存空间分配作业。
3.最佳适用法(best fit) BF
再为内存分配空间前先将所有的空闲分区按容量以小到大的顺序形成一空闲分区链,分配空间时总是将既能满足要求、又是最小的空闲分区分配给作业。
4.最坏适用法(worst fit) WF
该算法与最佳适用法分配分区的策略相反。在扫描整个空闲分区或链表时,总是挑选一个最大的空闲区,从中分割一部分存储空间给作业使用,以至于存储器中缺乏大的空闲分区。

4.3 分页存储管理方式

4.3.1. 分页存储管理的基本方法


  1. 页面和物理块
    地址结构由页号位移量W(页内地址)组成。

  2. 地址结构

  3. 页表

每个进程的页表放在该进程的PCB中

4.3.2 地址变换机构

1.基本的地址变换机构
地址变换机构实现将逻辑地址到物理地址的转换,借助于页表来完成。页表功能是由一组专门的寄存器来实现的——页表寄存器 PTR,其中存放着页表在内存的始址页表的长度
当调度程序调度到某进程时,才将这两个数据装入页表寄存器中。
当进程访问某个逻辑地址中的数据时,分页地址变换机构会自动地将有效地址分为页号页内地址两部分,再以页号为索引去检索页表。
在执行索引之前,先将页号页表长度进行比较,如果页号大于或等于页表长度,则表示本次访问的地址已超越进程的地址空间,于是出现越界错误。若未出现越界错误,则将页表实址+(页号x页表项)

2.具有快表的地址变换机构
由于页表是存放在内存中的,这使CPU在每存取一个数据时,都要两次访问内存。

第一次是访问内存中的页表,从中找到指定页的物理块号,再将块号与页内偏移量W(页内地址,等于块内地址)拼接,形成物理地址
第二次访问内存时,才是从第一次所得地址中获得所需数据(或向此地址中写入数据)。因此,采用这种方式将使计算机的处理速度降低近1/2.可见,以此高昂代价来换取存储器空间利用率的提高,是得不偿失的。
为了提高地址变换速度,可在地址变换机构中增设一个具有并行查询能力的特殊高速缓冲寄存器(快表)。用以存放当前访问的那些页表项

引入快表后的地址变换过程:
(1)CPU给出有效地址后,由地址变换机构自动地将逻辑地址分为页号和页内偏移量(页内地址)两部分。
(2)将页号送进快表中,若在其中找到相匹配的页号,则直接取出物理快号,拼接成物理地址,并送到物理地址寄存器中。若未找到匹配的页号,则还需访问页表寄存器,找到物理块号拼接成物理地址,并将页表项存入快表中。
image

4.2.3 内存的有效访问时间

有效访问时间是指给定逻辑地址找到内存中对应物理地址单元中的数据所花的总时间

4.4 分段存储管理方式

1.基本原理
地址结构由段号段内页号页内地址组成

2.分页与分段的区别:
(1)页是信息的基本单位,分页仅仅是系统管理上的需要,分段的主要目的在于更好地满足用户的需要。
(2)页的大小固定且由系统决定。而段的长度却不固定,决定于用户所编写的程序。
(3)分页的用户程序地址空间是一维的,分段系统中,用户程序的地址空间是二维的。
(4)通常段比页大,因而段表比页表短,可以缩短查找时间,提高访问速度。

3.地址变换过程
在段页式系统中,需要三次访问内存第一次是访问内存中的段表,从中取得页表实址。第二次访问是访问内存中的页表,从中取出该页所在的物理块号,并将该块号与页内地址拼接形成物理地址。第三次才是真正从第二次访问所得的地址中取出数据。
于是为了提高执行速度,在地址变换机构中增加快表。每次访问它时,都须同时利用段号和页号去检索高速缓存,若找到匹配的表项,便可获得相应页的物理块号,用来与页内地址一起形成物理地址。若未找到,则仍需三次访问内存。

猜你喜欢

转载自blog.csdn.net/swpu_ocean/article/details/80444036