目录

2025-01-01-计算机操作系统复习基本存储管理

计算机操作系统(复习)基本存储管理

内存 :包含系统区(加载操作系统常驻内存部分(内核))和用户区(供当前正在执行的用户程序使用)

物理地址/绝对地址 :数据在内存的实际存放位置

逻辑地址/相对地址 :与物理地址无关的访问地址

https://i-blog.csdnimg.cn/blog_migrate/ad8bf801fcf3842a5e42e2693a92f41a.png

地址重定位/地址变换/地址映射 :把用户程序中的逻辑地址转换为内存中的物理地址

静态地址重定位 :发生在程序装入内存的过程中,在程序运行之前就完成了地址重定位。

物理地址 = 装入内存的起始地址 + 逻辑地址

动态地址重定位 :发生在程序运行过程中,当执行到某条指令需要进行内存访问时,再将逻辑地址转换为相应的物理地址。(需要硬件的支持,使用重定位寄存器:存放正在执行的用户进程在内存的起始地址)

物理地址 = 重定位寄存器的值 + 逻辑地址

碎片 :内存中无法被利用的空间

https://i-blog.csdnimg.cn/blog_migrate/37ffd919719f7783e842fd7bfc9e76c9.png

https://i-blog.csdnimg.cn/blog_migrate/ed2d430074c19493d7fafc2dd33c3b73.png

https://i-blog.csdnimg.cn/blog_migrate/c7f80a5f731b74faca3a05f57e2d38fc.png

  • 首次适应算法:按照地址递增的顺序组织空闲分区
  • 循环首次适应算法:从上次找到的空闲分区的下一个空闲分区开始查找,直至找到一个能满足要求的空闲分区
  • 最佳适应算法:将空闲分区按照分区大小依次递增的顺序排列,再从头查找
  • 最坏适应算法 :将空闲分区按照分区大小依次递减的顺序排列,再从头查找最大的空闲分区,按进程大小进行分配
  • 伙伴系统

例1:  假定最近一次分配的如图所示,一个8MB的进程又提出了分配请求,下图展示了各个算法的分配结果。

https://i-blog.csdnimg.cn/blog_migrate/0607686a3d2b62403c19b3ca93de9d27.png

首次适应算法:从头开始查找 6MB<8MB放不下,4MB<8MB放不下,13MB>8MB可以存放,因此存放在该分区,剩余5MB的空闲分区

循环首次适应算法:从最近一次分配之后开始查找 12MB>8MB可以存放,因此存放在该分区,剩余4MB的空闲分区

最佳适应算法:排序之后的空闲分区顺序应为 4MB、6MB、10MB、12MB、13MB、25MB,从头开始查找,存放在10MB的分区中,剩余4MB

最坏适应算法:排序之后的空闲分区顺序应为25MB、13MB、12MB、10MB、6MB、4MB,从头开始查找,最大的空闲分区为25MB,存放在该分区中,剩余17MB

紧凑技术 :移动内存中原来的进程,将分散的多个空闲分区拼接成一个大的空闲分区

动态重定位分区存储管理 :采用紧凑技术的动态分区分配方式

覆盖技术 :将一个程序按照逻辑结构划分成若干个程序段,将不同时执行的程序段组成一个覆盖段小组。

例2:

https://i-blog.csdnimg.cn/blog_migrate/866607fd09b48032bd1234efc26778a7.png

交换技术 :把内存中暂时不能运行的进程或者暂时不用的代码和数据调到外存上,腾出足够的内存空间把已具备运行条件的进程或进程所需要的程序和数据从外存调入内存。

工作原理 :把内存空间划分成若干大小相等的物理块,把程序的逻辑地址空间按物理块的大小划分为若干大小相等的页。(即 内存空间分块,逻辑空间分页,块大小=页大小 )

页表 :系统为每个进程创建的数据结构,用来记录页与分配的物理块的对应关系

分页后的逻辑地址表示为“页号,页内地址”。(页号=int(逻辑地址/页面大小);页内地址=逻辑地址%页面大小)

内存块表 :系统设置的一个数据结构,记录内存的使用情况,包含物理块的总数、哪些物理块已经分配、哪些物理块还未分配等信息。

分页的缺点:

  1. 不方便编程
  2. 不便于信息共享
  3. 不便于信息保护
  4. 不允许动态增长
  5. 不便于动态链接

工作原理 :作业的地址被划分成若干段,每个段都是一组有意义的逻辑信息合集。每个段从0开始编址,各段的长度并不要求相等,可根据需要动态增长,每个段都有自己的名字和段号。

分段后的逻辑地址表示为“段号,段内地址”

段表 :系统为每个进程创建的,用来记录每个逻辑段在内存的存放地址和相关信息。( 存放在内存中 )

段表寄存器 :用于存放段表在内存的始址和段表长度。

  1. 页是信息的物理单位,段是信息的逻辑单位
  2. 分页存储管理是为了实现内存的离散分配,以减少内存碎片,提高内存的利用率。或者说,分页存储管理是系统管理的需要而不是用户的需要。分段存储管理是为了能更好地满足用户的需要。
  3. 页的大小是固定的,由系统决定,即系统中只能有一 种大小的页面。而段的长度是不固定的,取决于用户所编写的程序。
  4. 分页的逻辑地址空间是一维的, 即只需一个编号就可以表示一个逻辑地址。 而分段的逻辑地址空间是二维的,要表示一个逻辑地址,既要给出段号,又要给出段内地址。

工作原理 :将 用户程序 按照逻辑关系划分成若干段,每段都是从0开始编址,其逻辑地址形式为(段号,段内地址)。在 内存空间 管理上,将内存划分为若干大小相等的物理块,以物理块为单位进行内存空间的分配。当某个进程申请装入内存执行时,系统为该进程中每个段赋予一个段号,并为其分配内存空间。在为每个段分配内存空间时,首先将该段划分成若干页,为每个页分配一个空闲的物理块,同时为该段建立一个页表来记录段中每一个页与物理块的对应关系。为记录所有段的整体存储情况,系统为每个进程再设立一个段表来记录每个段的页表信息,包含页表长度和页表在内存的存储位置。

https://i-blog.csdnimg.cn/blog_migrate/7dc95fbb5a6de22b4095b2210c95efa8.png

例3:  某进程的大小为 25F3H字节,被分配到内存的3A6BH字节开始的空间。在进程运行

时,若使用上、下界寄存器,寄存器的值是多少?如何进行存储保护?若使用地址、限长寄存器,寄存器的值是多少?如何进行存储保护?

https://i-blog.csdnimg.cn/blog_migrate/a89a58294b83c1951c061984671c2950.png

例4: 己知内存的系统区大小为126KB,用户区大小为 386KB,在动态分区存储管理下,果

采用空闲分区表和首次适应算法进行内存空闲区的管理和分配。若存在下述的申请序列:

作业1申请80KB;作业2申请 56KB;作业3申请120KB;作业1完成;作业3完成;作业4申请156KB;作业5申请80KB。请给出作业4和作业5装入内存后,内存的使用情况示意图。

https://i-blog.csdnimg.cn/blog_migrate/6fc4fb6792bde1d7faf63cf4dd159a27.png

例5: 假设某系统采用分页存储管理,内存的大小为64KB,被分成16块,块号为0、1、2、… 、15。设某进程有4页,其页号为0、1、2、3,被分别装入内存的2、4、7、5块,试

计算逻辑地址 4146对应的物理地址。

https://i-blog.csdnimg.cn/blog_migrate/e5311de6ddc4ff132da51626ed218e20.png

例6:假设一个分页存储管理系统的页表存放在内存,那么

(1)如果访问内存需要0.2us,计算系统的有效访问时间是多少?

(2)如果增加一张快表,且假设在快表中找到页表项的概率高达90%,则系统的有效

访问时间又是多少?(假定查阅快表时间忽略不计)

https://i-blog.csdnimg.cn/blog_migrate/1b0001d0d09f5ea53e79f93e8fc12ac4.png

例7: 某分段存储管理系统的段表如下表所示:

段号段长段始址
015KB40KB
18KB80KB
210KB100KB

请将逻辑地址(0,137)、(1,9000)、(2,3600)、(3,230)转换成物理地址

https://i-blog.csdnimg.cn/blog_migrate/f96a4a4f94134f1e7c65e6006a182e28.png

参考:《计算机操作系统》电子工业出版社

68747470733a:2f2f626c6f672e6373646e2e6e65742f435f5f68657272792f:61727469636c652f64657461696c732f313231373139383933