OS-CH8-课内课外题

内容仅供参考

1. 什么是地址转换?为什么要进行地址转换?

答:(1)什么是地址转换:

地址转换也被称为地址映射,是操作系统实现内存管理的一种技术。地址转换的主要目的是为了实现虚拟内存,使得程序能够以一种连续的、统一的方式来访问内存,而不需要关心物理内存的实际布局和限制。

地址转换的过程通常包括分段分页两个部分:

分段:分段机制是将进程的代码、数据、栈分在不同的虚拟地址段上,从而避免进程间的互相影响。分段之前的地址称为逻辑地址,它有两部分组成,高位的段选择符和低位的段内偏移。在分段时先用段选择符在相应的段描述符表中找到段描述符,也就是某一个段的基地址,再加上段内偏移量就得到了对应的线性地址,线性地址也称之为虚拟地址。

分页:分页是将虚拟地址空间和物理地址空间都划分为固定大小的页,然后通过页表来实现虚拟地址到物理地址的映射。这样,即使物理内存被分散使用,也可以在虚拟内存中呈现出连续的地址空间。

(注:虚拟地址由运行在用户模式下的程序生成,通常是从程序的角度来看的;物理地址是实际存在于计算机内存硬件中的地址。)

(2)为什么要进行地址转换:

  • 内存保护:每个进程有自己的地址空间,这可以防止一个进程访问或修改另一个进程的内存,从而提供了一种内存保护机制。

  • 内存抽象:通过地址转换,每个进程都认为自己拥有全部的地址空间,这极大地简化了程序的编写。

  • 内存管理:操作系统可以更有效地管理物理内存,例如,通过将不常用的内存页交换到磁盘上,从而释放物理内存。

  • 共享和复制:地址转换使得多个进程能够共享相同的物理内存,或者在需要时复制物理内存。

2. P261 - 8.13
BTV操作系统有一个21位的虚拟地址,但在某些嵌入式设备上,它只有一个16位的物理地址。它也有2KB的页面大小。以下每个页表各有多少条目?
a. 传统的单级页表 b. 倒置页表

虚拟地址空间大小:由于BTV操作系统有一个21位的虚拟地址,所以虚拟地址空间的大小为2^21。

物理地址空间大小:在某些嵌入式设备上,它只有一个16位的物理地址,所以物理地址空间的大小为2^16。

页面大小:页面大小为2KB。

a. 对于传统的单级页表,页表中的条目数量为:
2 21 2 × 2 10 = 2 10 \frac{2^{21}}{2\times2^{10}}=2^{10} 2×210221=210
b. 对于倒置页表,页表中的条目数量为:
2 16 2 × 2 10 = 2 5 \frac{2^{16}}{2\times2^{10}}=2^{5} 2×210216=25

3. 某系统的空闲分区表如下,系统采用可变分区存储管理模式,现由一个程序序列:96K、20K、200K。若用首次适应算法和最佳适应算法来为这些程序分配内存,试问哪一种算法可以满足所有程序的请求,为什么?

分区号大小起始地址
132K100K
210K150K
35K200K
4218K220K
596K530K

首次适应算法:从内存的开始位置开始搜索,分配给第一个满足需求的空闲分区。

  • 对于96K的程序,找到分区4(218K)。分配后,分区4还剩下218K - 96K = 122K。
  • 对于20K的程序,找到分区1(32K)。分配后,分区1还剩下32K - 20K = 12K。
  • 对于200K的程序,找不到足够大的分区,因此无法满足所有程序的请求。

最佳适应算法:搜索整个内存,找到能够满足需求的最小的空闲分区进行分配。

  • 对于96K的程序,找到分区5(96K)。分配后,分区5剩余96K - 96K = 0,所以分区5被完全占用。

  • 对于20K的程序,找到分区1(32K)。分配后,分区1还剩下32K - 20K = 12K。

  • 对于200K的程序,找到分区4(218K)。分配后,分区4还剩下218K - 200K = 18K。

  • 该算法的空闲分区表如下:

分区号大小起始地址
112K120K
210K150K
35K200K
418K420K
50K530K

4. 有一分页存储管理系统,向用户提供的逻辑地址空间最大位16页,每页2048字节,内存共有8个存储块,问逻辑地址至少应为多少位?逻辑地址的结构是怎样的?内存空间有多大?

在分页存储管理系统中,逻辑地址通常由两部分组成:页号和页内偏移。

页号:用于标识页表中的条目,也就是指定的页。

页内偏移:用于标识在指定页中的具体位置。

  • 页号:因为有16页,
    2 4 = 16 2^4=16 24=16
    所以页号需要4位来表示。
  • 页内偏移:每页有2048字节,
    2 11 = 2048 2^{11}=2048 211=2048
    所以页内偏移需要11位来表示。

所以,逻辑地址至少应为 4 + 11 = 15 位。

因为内存共有8个存储块,每个存储块的大小等于一页的大小,即2048字节,所以内存空间的大小为
8 × 2048 = 2 3 × 2 11 = 2 14 8 \times 2048 = 2^3 \times 2^{11}=2^{14} 8×2048=23×211=214
字节,即16KB。

5. 在分页管理系统中,某程序的0、1、2、3页依次存放在物理块2、3、1、6中。已知页面大小为1024字节,问逻辑地址2148所对应的物理地址是多少?画出地址转换图。

在分页管理系统中,逻辑地址被分为两部分:页号和页内偏移。页面大小为1024字节,即2^10,所以页内偏移需要10位来表示。

对于逻辑地址2148,我们可以将其分为页号和页内偏移:

  • 页号 = 2148 / 1024 = 2
  • 页内偏移 = 2148 % 1024 = 100

所以,逻辑地址2148对应的是第2页的第100字节。

因为第2页存放在物理块1中。所以,物理地址 = 物理块号 * 页面大小 + 页内偏移 = 1 * 1024 + 100 = 1124

所以,逻辑地址2148对应的物理地址是1124。

地址转换图如下:
请添加图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值