操作系统概念-第9章~第13章
本文最后更新于一年前或更久前,其中的信息可能已经有所发展或是发生改变。

第九章:虚拟内存

9.1什么情况下会发生页面错误?描述发生缺页错误时操作系统采取的动作。

回答:

每当进程试图访问在该页的页表条目中标记为无效的页时,就会发生页错误。

页错误会产生一个中断,在特权模式下调用操作系统代码。然后操作系统检查一些内部表(通常与此进程的进程控制块一起保存)以确定页面是否在磁盘上。如果页面在磁盘上(即它确实是一个有效的内存引用),则操作系统会分配一个空闲帧,启动磁盘 I/O 以将所需页面读入新分配的帧中,然后启动下一个进程。

当磁盘 I/O 完成时,与进程和页表一起保存的内部表被更新以指示该页现在在内存中。被非法地址陷阱中断的指令被重新启动。该进程现在可以访问该页面,就像它一直在内存中一样。

 

9.1 对于具有 12 位虚拟和物理地址以及 256 字节页面的系统,考虑图 9.30 所示的页表。第l空闲页面帧的IST是d,E ,F(即,d是在枪头O f对list,E是第二个,和F是最后一个)。

将以下虚拟地址转换为其等效的十六进制物理地址。所有数字均以十六进制给出。(页面框架的破折号表示该页面不在内存中。)

 9EF             

  111

  700

 0FF             

回答:

• 9EF – 0EF             

•  111 – 211

•  700 – D00

• 0FF – EFF             

当页面发生发生时,OS将所需页面加载到从空闲页面帧列表分配的帧中。

 

9.4考虑以下页面替换算法。根据页面错误率,将这些算法从“坏”到“完美”的五分制进行排名。将受到 Belady异常影响的算法与没有受到影响的算法分开。             

a. LRU更换             

b. 先进先出替换             

c. 最佳替换             

d. 二次机会更换 

回答:

由于 LRU 不受 Belady 异常影响,并且由于第二次机会是 LRU 的近似值,因此第二次机会不受 Belady 异常影响。

 

9.5讨论支持按需寻呼所需的硬件支持。             

回答:

对于每一个内存访问操作中,页表需要进行磋商,以检查相应的页面是否驻留在内存中或没有,并确定页面错误是否被触发。这些检查必须在硬件( MMU ) 中执行。TLB 可以用作缓存并提高查找操作的性能。

9.7考虑二维数组A……             

Q:考虑二维数组A:int A[][] = new int[100][100];

其中 A[0][0] 位于页面大小为 200 的分页内存系统中的位置 200。操作矩阵的小进程驻留在页面 0(位置 0 到 199)中。因此,每次取指令都将从第 0 页开始。对于三个页框,使用 LRU 替换并假设页框 1 包含进程而其他两个初始为空时,以下数组初始化循环会产生多少页错误?

回答:

在这个系统中,每页包含 50 个整数(整数大小为 4 个字节),因此一行 A 需要 2 页,整个 A 需要 2 *100 = 200 页。

(a) for (int I=0; I<100; I++)

for (int J=0; J < 100; J++)

    A[I][J]=0;

在这种情况下,数组 A 被逐行访问,因此每行都会产生 2 个页面错误,因为对页面的第一次引用总是会产生一个页面错误。使用 LRU,它将产生 200 个页面错误。

(b) for (int I=0; I<100; I++)

for (int J=0; J < 100; J++)

    A[J][I]=0;

在这种情况下,数组 A 被逐列访问,因此进程在每个外部循环 (I) 中引用 100 页,这是程序的工作集。但是我们只有 2 帧,因此每个数组引用都会产生一个页面错误。使用 LRU,它将产生 100 * 100 = 10,000 个页面错误。

这个例子表明,一个编写良好的程序可以比一个没有仔细编写的程序快得多。

 

9.8 考虑以下页面引用字符串……         

Q:考虑以下页面引用字符串:1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6。

假设一、二、三、四、五、六或七帧,以下替换算法会发生多少页错误?请记住,所有框架最初都是空的,因此您的第一个独特页面每个都会花费一个错误。

 LRU 更换             

•先进先出替换             

•最佳更换  

           

回答:

页面数·              LRU    FIFO      Optimal

1      20   20    20

2      18   18    15

3      15   16    11

4      10   14    8

5      8   10    7

6      7   10    7

7      7   7    7

 

9 .15 线程状态的简化视图是就绪、运行和阻塞,其中线程准备就绪并等待调度、正在处理器上运行或被阻塞(例如,等待 I/O)……

Q:线程状态的简化视图是就绪、运行和阻塞,其中线程准备就绪并等待调度、正在处理器上运行或被阻塞(例如,等待 I/O)。这被示于图9.31。假设一个线程处于 Running 状态,请回答以下问题,并解释您的答案

a.如果发生页面错误,线程会改变状态吗?如果是这样,它会变成什么状态?

答案:

是的,当发生页面错误时,tread 从 Running 状态变为 Blocked 状态。当页面错误发生时,进程开始等待 I/O 操作完成。

操作系统检查页面是否真的无效或只是在磁盘上,找到一个空闲的内存框架,安排磁盘访问以将页面加载到框架中,当磁盘 I/O为时,使用新的逻辑物理映射更新页表Completed ,更新该条目的有效位,并最终通过将其状态从 Blocked 更改为 Ready 来重新启动进程。

b. 如果线程生成在页表中解决的 TLB 未命中,它是否会更改状态?如果是这样,它会变成什么状态?

答案:

不必要。如果在 TLB 中没有找到页表条目(TLB 未命中),则使用页号对页表进行索引和处理。如果页面已经在主内存中,则 TLB 被更新以包含新的页面条目,同时进程继续执行,因为不需要I/O 操作。如果页面不在主内存中,则会产生页面错误。在这种情况下,进程需要切换到 Blocked 状态,等待 I/O 访问磁盘。这与第一个问题中的过程相同。

c. 如果在页表中解析地址引用,线程会改变状态吗?如果是这样,它会变成什么状态?

答案:

不需要,因为不需要 I/O 操作,所以地址引用在页表中解析,这表明所需的页面已经加载到主内存中。

9 .18 某台计算机为其用户提供了一个2 32字节的虚拟内存空间。计算机有 2 18字节的物理内存。虚拟内存通过分页实现,页面大小为4096字节。用户进程生成虚拟地址0x 11123456 。解释系统如何建立相应的物理位置。区分软件和硬件操作。

答案:

二进制形式的虚拟地址是

0001 0001 0001 0010 0011 0100 0101 0110

由于页大小为2^12 ,因此页表大小为2^20 。因此,低位 12 位 0100 0101 0110 用作页表中的位移,而其余 20 位 0001 0001 0001 0010 0011 用作页表中的位移。然后将偏移位连接到结果物理页号(来自页表),以形成最终地址。

9 .21 考虑以下页面引用字符串……

Q:考虑以下页面引用字符串7, 2, 3, 1, 2, 5, 3, 4, 6, 7, 7, 1, 0, 5, 4, 6, 2, 3, 0, 1.假设需要用三帧分页,以下替换算法会发生多少次缺页?

 LRU

•先进先出替换

•最佳更换

答案:

18

17

13

 

9.22 图 9.32 所示的页表适用于具有 16 位虚拟和物理地址以及 4,096 字节页的系统。当页面被引用时,引用位设置为 1……

Q:图 9.32 所示的页表适用于具有 16 位虚拟和物理地址以及 4,096 字节页的系统。当页面被引用时,引用位设置为 1。线程周期性地将参考位的所有值清零。页框的破折号表示该页不在内存中。页替换算法是本地化的LRU,所有数字都以十进制提供。

a. 将以下虚拟地址(十六进制)转换为等效的物理地址。您可以提供十六进制或十进制的答案。还要为页表中的适当条目设置引用位。

  0xE12C

• 0x3A9D

• 0xA9D9

• 0x7001

• 0xACA1

b. 使用上述地址作为指导,提供导致页面错误的逻辑地址(十六进制)的示例。

c. LRU页面替换算法在解决页面错误时将从哪一组页面帧中选择?

 

9.32抖动的原因是什么?系统如何检测抖动?一旦检测到抖动,系统可以做些什么来消除这个问题?

一个答案:

抖动是由于进程所需的最小页数分配不足导致的,迫使它不断出现页面错误。系统可以通过评估 CPU 使用水平与多道程序水平相比来检测抖动。它可以通过降低多道程序的级别来消除。

9 .34 考虑用于定义工作集模型中工作集窗口的参数。当设置为较小的值时,对页面错误频率和系统中当前正在执行的活动(非挂起)进程数有何影响?设置为非常高的值时有什么影响?

答案:

当设置为较小的值时,可能会低估进程的常驻页面集,从而允许安排一个进程,即使它需要的所有页面都没有托管。这可能会导致大量页面错误。

当设置为较大的值时,高估进程的常驻集可能会阻止许多进程被调度,即使它们需要驻留的页面也是如此。但是,一旦一个进程被调度,高估常驻集就不可能产生缺页错误

15、在一个请求分页存储管理系统中,一个程序的页面走向为4,3,2,1,4,3,5,4,3,2,1,5,采用LRU页面置换算法。设分配给该程序的存储块数为M,当M分别为3和4时,试求出在访问过程中发生缺页中断的次数和缺页率。比较两种结果,从中可得出什么启示?

答案:

 

16、某分段式存储管理中采用如表5.9所示的结构。

Q:试回答:
(1)给定段号和段内地址,完成段式管理中的地址变换过程。
(2)给定[0,340],[1,10],[2,500],[3,400]的内存地址,其中方括号内的第一元素为段号,第二元素为段内地址。

(3)存取主存中的一条指令或者数据至少要访问几次主存?

段号

段的长度(字节)

主存起始地址

0

660

219

1

14

3300

2

100

90

3

580

1237

4

96

1952

 

答案:

(1)根据段表起始地址与段号,得到段表中的相应表项(判断段号是否超出段表长度范围),得到物理内存对应分区的起始地址,判断段内地址是否超出段长度,最终的物理地址为:主存起始地址+段内地址;

(2)219+340 = 559

 3300+10 = 3310

 90+500 =  ?,超出段长度,地址非法

 1237+400 = 1637

(3)访问内存两次,一次为获取段表表项,一次根据最终物理地址获取指令或数据

 

 

18、某系统采用页式存储管理,现有J1、J2和J3共3个作业同驻内存。其中,J2有4个页面,被分别装入到内存的第3、4、6、8块中。假定页面和存储块的大小均为1024字节,内存的容量为10KB。

(1)写出J2的页面映像表。

(2)当J2在CPU上运行时,执行到其地址空间第500号处遇到一条传送指令:

 MOV 2100,3100

请用地址变换图计算出MOV指令中两个操作数的物理地址。

答案:

 

20、在一个请求分页管理的系统中,内存容量为1MB,被划分为256块,每块4KB。现有一个作业,它的页表如表5.11所示。

(1)若给定一个逻辑地址为9016,其物理地址是多少?

(2)若给定一个逻辑地址为12300,给出其物理地址的计算过程。

表5.11

页号

块号

状态

0

24

0

1

26

0

2

32

0

3

1

4

1

答案:

(1)9016 = 4096×2 + 824

 32×4096 + 824 = 131896

 

(2)12300 = 4096×3 + 12

 缺页,请求调页,假设调入得物理块号为x,则物理地址为x×4096 + 12

 

第十章——大容量存储

 10.4 为什么在多任务环境中平衡系统上的磁盘和控制器之间的文件系统 I/O 很重要?

回答:

系统只能以其最慢瓶颈的速度运行。磁盘或磁盘控制器通常是现代系统的瓶颈,因为它们的单独性能无法跟上 CPU 和系统总线的性能。通过平衡磁盘和控制器之间的I/O,单个磁盘和控制器都不会不堪重负,从而避免瓶颈。

10.5 从文件系统重新读取代码页与使用交换空间来存储它们的权衡是什么?

回答:

如果代码页存储在交换空间中,它们可以更快地传输到主内存(因为交换空间分配被调整为比一般文件系统分配更快的性能)。如果在进程调用时将页面复制到那里而不是按需调出到交换空间,则使用交换空间可能需要启动时间。此外,如果它用于代码和数据页,则必须分配更多的交换空间。

10.9 除了 FCFS 之外,没有任何磁盘调度规程是真正公平的(可能会出现饥饿)。

A. 解释为什么这个断言是正确的。

B. 描述一种修改算法(如 SCAN)以确保公平性的方法。

C. 解释为什么公平是分时系统中的一个重要目标。

d. 给出三个或更多情况的例子,在这些情况下,操作系统在处理 I/O 请求时不公平是很重要的。

回答:

A. 对磁头当前所在磁道的新请求理论上可以与这些请求得到服务一样快地到达。

B. 所有超过某个预定时间的请求都可以被“强制”排到队列的顶部,并且可以为每个请求设置一个相关的位,以指示不能在这些请求之前移动新请求。对于 SSTF,队列的其余部分必须根据这些“旧”请求中的最后一个进行重组。

C.以防止异常长的响应时间。

D .分页和交换应该优先于用户请求。

可能需要其他内核启动的 I/O,例如写入文件系统元数据,优先于用户 I/O。

如果内核支持实时进程优先级,则应优先处理这些进程的 I/O请求。

10.10 解释为什么 SSD 经常使用 FCFS 磁盘调度算法。

回答:

SSD 不包含移动磁盘磁头。

一些 SSD 调度程序仅合并相邻的写入请求,以 FCFS 顺序为所有读取请求提供服务。

 

10.11假设磁盘驱动器有 5,000 个柱面,编号为 0 到 4,999。该驱动器正在2150的服务的请求,并且先前的请求是在1805。待处理请求的队列,按 FIFO顺序,是……

Q:假设磁盘驱动器有 5,000 个柱面,编号为 0 到 4,999。该驱动器正在2150的服务的请求,并且先前的请求是在1805。待处理请求的队列,按 FIFO顺序,是2,069, 1,212, 2,296, 2,800, 544, 1,618, 356, 1,523, 4,965, 3681从当前磁头位置开始,磁盘臂移动以满足以下每个磁盘调度算法的所有未决请求的总距离(以柱面为单位)是多少?a. FCFS B. SSTF C.SCAN D. LOOK f. C-LOOK

回答:

  1.        FCFS 时间表是2150 、2069 、1212 、2296 、2800 、544 、 1,618 、 356 、 1,523 、 4,965 、 3681 。总寻道距离为13011
  2.        SSTF 顺序是2150,2069,2296,2800 , 3681 ,4965,1618,1523,1212,544,356 。总寻道距离为7586
  3.        SCAN 顺序为2150,2296,2800,3681,4965, 4999,2069,1618,1523,1212,544,356 。总寻道距离为7492
  4.       LOOK 顺序为2150,2296,2800,3681,4965,2069,1618,1523,1212,544,356 。总寻道距离为7424
  5.        . C-SCAN 顺序是2150 ,2296,2800,3681,4965, 4999,0 ,356,544,1212,1523,1618,2069 。

总寻道距离为9917

  1.           C-LOOK 顺序是2150 ,2296,2800,3681,4965 , 356,544,1212,1523,1618,2069 。总查找距离9137

10.14描述与仅使用磁盘相比,使用 SSD 作为缓存层和磁盘驱动器替代品的一些优点和缺点。

好处:

比硬盘驱动器更快:SSD 具有比磁盘更快的优势,因为它没有移动部件,因此没有寻道时间或旋转延迟。

SSD 比典型的 HDD 快 25 到 100 倍。这意味着更快的启动时间、更快的文件传输以及更大的企业计算带宽。

低功耗,比硬盘驱动器更紧凑和耐用:这意味着SSD适用于节能计算机和消费电子设备

缺点:

更贵

有限的存储容量

寿命比硬盘驱动器短:固态驱动器的闪存只能用于有限次数的写入。

如果不先擦除然后一次重写非常大的数据块,SSD 就无法写入一位信息。

 

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇