一、单项选择题
1.在固定分区分配中,每个分区的大小是(C ) 。
A.相同 B.随进程长度变化
C.可以不同但预先固定 D.可以不同但根据进程长度固定
2.在可变分区的存储管理技术当中,可以采用各种不同的内存分配算法。在以下的四个算法当中,(C )不是我们常用的分区分配算法。
A.最先匹配法 B.下次匹配法 C.最后匹配法——D. 最佳匹配法
3.在可变分区存储管理中,能使内存空间中空闲区分布较均匀的算法是( B ) 。
A. 最先匹配法 B. 下次匹配法 C. 最佳匹配法 D. 最坏匹配法
4.动态重定位技术依赖于( B ) 。
A.重定位装入程序 B.重定位寄存器
C.地址机构 D.目标程序
5.一个分段存储管理系统中,地址长度为32位,其中段号占8位,则最大段长是( C ) 。
A.2⁸字节 B.2¹⁶字节 C.2²⁴字节 D.2³²字节
6.页式存储管理中的页表由( C )建立。
A.用户 B.编译程序 C. 操作系统 D.编 辑程序
7.页式存储管理当中的页面是为( B ) 。
A.用户所感知的 B.操作系统所感知的
C.编译系统所感知的 D.链接程序所感知的
8.在页式存储管理中,若关闭TLB,则每当访问一条指令或存取一个操作数时都要访问( B )次内存。
A.1 B. 2 C. 3 D. 4
9.在下列存储管理方法当中,( A )不会产生内碎片。
A.页式存储管理 B. 段式存储管理
C.固定分区存储管理 D. 段页式存储管理
139
第4章 存储管理
10.虚拟存储管理系统的基础是程序的( A )理论。
A.局部性 B.全局性 C.动态性 D.虚拟性
11.在虚拟页式存储管理中,若采用LRU页面置换算法,则当分配的页面数增加时,缺页中断的次数( D ) 。
A.减少 B.增加
C.无影响 D.可能增加也可能减少
12.在虚拟页式存储管理中,若采用FIFO页面置换算法,则当分配的页面数增加时,缺页中断的次数( A ) 。
A.增加 B.减少
C.无影响 D.可能增加也可能减少
13.进程在执行中发生了缺页中断,经操作系统处理后,应让其执行( C )指令。
A.被中断的 B.被中断的前一条
C.被中断的后一条 D.启动时的第一条
14.在一个进程的运行过程中,对逻辑页面的访问顺序是:1、2、3、4、1、2、5、1、2、3、4、5、6。若在内存中给它分配3个物理页面,且采用先进先出(FIFO)置换算法,则产生( )次缺页中断。
A.8 B.9 C.10 D.1 1
二、填空题
1.存储器的层次结构由 寄存器、高速缓存 内存、磁盘和磁带组成。
2.请给出一个易失型存储器的例子: 内存 ;再给出一个非易失型存储器的例子: 硬盘
4.在可变分区存储管理中,可以采用 外碎片 技术将很多不连续的小的空闲分区合并为一个大的空闲分区。
3.在可变分区存储管理中,由于进行动态不等长存储分配,在内存中会形成一些很小的空闲区域,我们称之为: 内存紧缩 。
5.在CPU当中,专门负责把逻辑地址映射为物理地址的那个功能单元叫做 MMU
6.把 逻辑地址 地址转换为 物理地址 地址的工作称为地址映射。
7.在段式存储管理中,物理内存的管理方式采用的是 可变分区
8.在段表当中,每一个段表项的主要内容包括:段号、 内存分区起始地址 和 段长
9.对于段式存储管理来说,如果每一个进程只有一个段,那么它就退化为 可变分区 的存储管理方法。
10.对于页式存储管理,如果页面非常大,那么它就退化为一种 固定分区 的存储管理方法。
11.页表的主要功能是:它给出了 逻辑页面 和 物理页面 之间的映射关系。
12.页式存储管理中的页表是由 操作系统 来建立和维护的。
13.在地址映射过程中,为了缩短页表的查找时间,可以采用一种特殊的快速查找硬件: TLB 。
14.在页式地址映射当中,如果不采用TLB技术,那么每当CPU需要去访问某个内存单元的时候,它实际上需要去访问内存几次? 2 次 。
140
操作系统
15.在页式存储管理当中,程序必须全部装入内存后才能运行,这个说法对吗? 对 。
16.如果要用C语言来编程实现页表,请问你会把它定义为一个什么数据结构? 数组(结构体数组) 。
17.虚拟存储技术的理论基础是程序的。 局部性理论
18.现代操作系统往往采用了虚拟页式存储管理技术,因此,当操作系统在启动的时候,首先要计算出系统的物理页面的个数,请给出物理页面个数的计算公式 内存大小/页面大小
19.在发生缺页中断时,是不是一定要去调用页面置换算法? 不是 “不是”)
20. FIFO 页面置换算法会产生Belady异常现象。
21.当一个进程在运行的时候,如果它的, 工作集 已经在内存当中,那么这个进程将会很顺利地运行,不会造成太多的缺页中断。此时,即使再给它分配更多的物理页面,缺页率也不会有明显的下降。
22.对于反置页表,如何计算它所包含的页表项的个数,请给出相应的计算公式: 内存大小/页面大小 。
三、简答题
1.假设有一个内存管理器,可以用来申请连续的内存空间(如malloc或new)。用户在申请内存空间的时候,申请的空间大小必须是100个字节的整数倍,如100字节、200字节、1000字节等,请问,如果在系统中采用这样的内存管理器,会不会产生外碎片的问题?1为什么?会不会产生内碎片的问题?为什么?
1
(1)会有外碎片的问题。
用户给出的请求大小是不同的,在经过不断的申请和释放以后,有一些小的空闲块被夹在其他已分配的数据块之间,无法被利用,成为外碎片。
(2)会有内碎片的问题。
由于用户申请的空间必须是 100 的整数倍,即使用户只需要 4 个字节的内存空间,也必须去申请 100 个字节的内存空间,因此剩下的 96 个字节就变成了内碎片。
2.在一个分区存储管理方案下,进程的内存地址空间一般可以分为4个段:代码段(text)、数据段(data)、堆(heap)和栈(stack)。以下为一段例程。
#include
unsigned char gvCh;
unsigned int gvInt = 0x12345678;
void main(void)
{
unsigned char array[10],* p;
p= (unsigned char ) malloc(10 sizeof(char));
while.(1);
}
请问:
(1)代码段和数据段的大小是在什么时候确定的?
(2)在经过编译链接后,当该程序被装入内存时,与while语句相对应的可执行代码是存放在哪一个段中?
(3)变量 gvCh、gvInt和数组array分别存放在哪一个段当中?
(4)变量p存放在哪一个段当中?
( 5) * ( p+1))所描述的内存单元位于哪一个段当中?
(1)在编译时确定。
(2)代码段
(3)全局变量 gvCh 由于没有设置初始值,所以放在 bss 段当中。
全局变量 gvInt 有初始值,所以放在 data 段当中。
数组 array 是main 函数的局部变量,所以存放在栈当中。
(4)指针p 存放在栈当中。*(p+1)所描述的内存单元位于堆空间
3、什么叫程序的局部性原理?在计算机系统当中,有哪一些技术是基于程序的局部性原理?请给出3个例子。
局部性原理:指程序在执行过程中的一个较短时期,所执行的指令地址和指令的操作数地址,分别局限于一定区域。
(1)虚拟存储技术、LRU 页面置换算法、CPU 的 cache、TLB、文件系统中的缓冲区。
第4章 存储管理
4.为了实现页式存储管理,在硬件上必须增加两个寄存器:页表基地址寄存器和页表长度寄存器,请问:这两个寄存器当中的内容在什么时候需要更新?由谁来负责更新?其内容平时存放在什么地方?
(1)这两个寄存器的内容在进程切换的时候需要更新;
(2)由操作系统来负责更新;
(3)它们的内容平时存放在进程的 PCB 当中,在进程切换的时候装入到寄存器当中
5.在页式存储管理中,页表的功能是什么?页表存放在什么地方?页表的起始地址存放在什么地方?假设系统中有N个进程,那么总共有多少张页表?在页式存储管理中,程序必须全部装入内存才能运行,对吗?
(1)页表给出了逻辑页面号和物理页面号之间的映射关系。 (2)页表存放在内存中,在 OS 内核的数据结构中。
(3)页表的起始地址存放在进程控制块 PCB 中。
(4)N 张页表。
(5)对。
6.在虚拟页式存储管理中,页表的功能是什么?页表项的格式由谁来设定?页表项的内容由谁来填写?驻留位的功能是什么?如何计算一个进程有多少个页表项?
页表的功能:逻辑页面号转换为物理页面号页表项的格式:由 CPU 厂商设定
页表项的内容:由 OS 填写
驻留位的功能:该页面是否在内存
一个进程有多少个页表项:逻辑地址空间/页面大小
四、应用题
1.以下是某系统的空闲分区表,系统采用可变分区存储管理策略。现有以下作业序列:96KB、20KB、200KB。若分别采用最先匹配(first-fit)算法、下次匹配(next-fit)算法、最佳匹配(best-fit)算法和最坏匹配(worst-fit)算法,请问:对于每一种算法来说,能否满足该作业序列的请求?为什么?
说明:在上一次分配中,分配的是起始地址为510KB的内存块。
分区号 起始地址 大小 分区号 起始地址 大小
1 100KB 32KB 4 220KB 218KB
2 150KB 10KB 5 530KB 96KB
3 200KB 5KB
(1)最先匹配法:无法满足要求(1 分),在申请 96K 存储区时,选中的是 4 号分区;在申请 20K 时,选中 1 号分区;在申请 200K 时,现有的五个分区都无法满足要求
(2)下次匹配法:能够满足要求(1 分),在申请 96K 存储区时,选中的是 5 号分区;在申请 20K 时,选中 1 号分区;在申请 200K 时,选中 4 号分区
(3)最佳匹配法:能够满足要求,在申请 96K 存储区时,选中的是 5 号分区;在申请 20K 时,选中 1 号分区;在申请 200K 时,选中 4 号分区
(4)最坏匹配法:无法满足要求(1 分),在申请 96K 存储区时,选中的是 4 号分区;在申请 20K 时,选中的还是 4 号分区;在申请 200K 时,无法满足要求
2.有一页式系统,其页表存放在内存中。
(1)如果对内存的每一次存取需要1.5μs,请问实现一次页面访问的存取时间是多少?
(2)如果系统加有快表,平均命中率为85%,当页表项在快表中时,其查找时间忽略为0,请问此时的存取时间为多少?
(1)CPU 必须访问两次内存才能获得所需数据,因此实现一次页面访问的存取时间是:1.5×2=3 微秒;
(2)在增加快表后,实现一次页面访问的平均存取时间为: 0.85×1.5+(1-0.85)×2×1.5=1.725 微秒
3.某一款CPU采用的是段式地址映射机制,它的MMU负责把8位的虚拟地址转换为相应的物理地址。这8位的虚拟地址分为两部分,高4位表示段号,低4位表示段内偏移地址。高4位的段号又被进一步地划分:如果最高位为0,表示直接把这个虚拟地址映射为相应的物理地址(即映射后的物理地址等于该虚拟地址);如果最高位为1,则使用剩余的3位来作为段表的索引(即段号)。请问:
(1)虚拟地址0将被映射成什么物理地址(如果有的话)?
(2)虚拟地址0xCE将被映射成什么物理地址(如果有的话)?
段号 段的基地址 段的长度 段号 段的基地址 段的长度
0 0x800 0x0F 4 0x200 0x0F
1 0x000 0x07 5 0x020 0x04.
2 0x500 0x0F 6 0x340 0x0F
3 0x100 0x0 7 0x800 0x0
142
操作系统
(1)0x0
(2)0x20E
(3)地址越界
4.在一个段页式存储管理系统中,逻辑地址的格式为:
段号 页号 偏移地址
其中,段号的长度为2个bit,页号的长度为8个bit,偏移地址的长度为12个bit。每个页表项的长度是8个bit(即1个字节),以下的所有数据均是十六进制。
已知段表的内容如下:
起始地址 长度 标志位 起始地址 长度 标志位
2位 8位
请计算下列逻辑地址所对应的物理地址:
段芳.页号 页内偏移12位
逻辑地址 物理地址 逻辑地址 物理地址
0x204ABC 0×46ABC 0x23200D 0×7400d.
0x102041 0×10041 0x1103DB 0×1E3DB
0x304F51 0×12F51 0x010350 0×14350、
逻辑地址 物理地址 逻辑地址 物理地址
0x204ABC 0x46ABC 0x23200D 0x7400D
0x102041 0x10041 0x1103DB 页面太大
0x304F51 越界 0x010350 0x16350
5.考虑以下的段页式存储管理方案:
段表
段号 页表
0 2
1 0
2 1
143
第4章 存储管理
页表0
逻辑页面 物理页面 有效? 只读?
0 10 Y N
1 17 N N
2 89 Y N
3 90 Y N
4 29 Y N
5 47 N N
6 55 Y N
7 32 Y N
8 36 Y N
9 9 Y N
页表1
逻辑页面 物理页面 有效? 只读?
0 3 N N
1 22 N N
2 73 Y N
3 74 Y N
4 85 Y N
5 29 Y N
6
7 63
93 Y
Y N
N
8 83 Y N
9
10 15
27 Y
Y N
N
11 34 Y N
页表2
逻辑页面 物理页面 有效? 只读?
0 33 Y Y
1 46 Y Y
2 54 N Y
3 6 Y Y
4 99 N Y
5
6 67
21 Y
Y Y
Y
给定如下参数:
·一个页面的大小为1000字节,为了计算方便,本题使用的是十进制地址,因此,虚拟内存的第一个页面的虚拟地址是从0~999(所有对内存的访问都是4个字节的字);
·最大的页表项数是100(即0~99);
·每个进程最多只有3个段(代码段、堆和栈);
144
操作系统
·如果页面是无效的(有效位为“N”),假定缺页中断将会把相应的页面装入到给定的物理页面。例如,如果去访问页表2中的页面2,将会产生缺页中断,然后操作系统将会把该页装入到物理页面54。
请问:
(1)段号、页号和偏移地址各需要多少位?
(2)计算下列虚拟地址访问所对应的物理地址,可能会出错,如无效段、无效页、保护权限错或缺页中断。
(a)读虚拟地址211333;
(b)写入虚拟地址5345;
©读虚拟地址1810627;
(d)读虚拟地址104806;
(e)读虚拟地址200097。
(1) 1 位、2 位、3 位
(2.a) 34333
(2.b) 写入物理地址 67345 时出错,写保护
(2.c) 段错误,段号 18 不合法
(2.d) 29806
(2.e) 缺页中断,物理地址 03097
6.在采用虚拟页式存储管理的系统当中,某个进程在运行的时候访问了如下逻辑地址:10、11、104、170、73、309、185、245、246、434、458、364。假设页面的大小为100个字节,系统分配给该进程的物理页面数为2,如果采用OPT、FIFO、LRU和Clock 页面置换算法,那么缺页发生的次数分别是多少?
逻辑页面号:0、0、1、1、0、3、1、2、2、4、4、3
(1) OPT: 5 次
(2) FIFO: 6 次
(3) LRU: 7 次
(4) Clock: 6 次
7.FIFO页面置换算法与LRU页面置换算法的比较:
(1)给出一个逻辑地址的页面号序列(用整数来表示逻辑页面号),使得在此序列下,FIFO算法要优于LRU算法(即前者缺页中断的次数更少)。
(2)给出另一个序列,使得在此序列下,FIFO算法与LRU算法是等价的(即二者缺页中断的次数是相同的)。
(3)再给出一个序列,使得在此序列下,LRU算法要优于FIFO算法。
要求:序列的长度、物理页面的个数由读者自己来定,只要能显示出上述效果即可。另外,在每一种情形下,需要计算出这两种算法的具体的缺页次数。
(1)FIFO 优于LRU:
3 个页面:1 2 3 1 4 2 3 (4 : 6)
2 个页面:1 2 1
(2)FIFO 等于LRU: 3 2 (3 : 4)
3 个页面:1 2 3 4 5 6 (6 : 6)
2 个页面:1 2 3 4 1 2 (6 : 6)
(3)LRU 优于 FIFO:
3 个页面:1 2 3 1 4 1 (4 : 5)
2 个页面:1 2 1 3 1 (3 : 4)
8.有一个矩阵:int A[100][100];
在一个虚拟页式系统中,采用LRU淘汰算法,一个进程有3页内存空间,每页可以存放200个整数,其中第1页存放程序,且假定程序已在内存中。
for(i=0;i<100;i++)
for(j=0;j<100;j++)
{
A[i][j]=0;
} for(j=0;j<100;j++)
for(i=0;i<100;i++)
{
A[i][j]=0;
}
请分别就程序A和B的执行过程计算缺页次数。
每个进程有 3 个页面,其中 1 个存放程序,2 个存放数据。
数组 A 有 10000 个整数,每页存放 200 个,数组占用 50 页,顺序为: A[0][0], A[0][1], …A[0][99],A[1][0],…,A[1][99] 1
A[2][0], A[2][1], …A[2][99],A[3][0],…,A[3][99] 2
… …
A[98][0],…, A[98][99], A[99][0],…, A[99][99] 50
对于程序 A:按行访问矩阵,访问的页面号为:1, 2, …, 50,因此缺页 50 次;
对于程序 B:按列访问矩阵,访问的页面号为:1, 1, 2, 2, …, 50, 50, 1, 1, 2, 2, …, 因此缺页次数为:100
×50=5000 次。
9.在采用虚拟页式存储管理的系统当中,某个进程的页表如下,表中的逻辑页面号和物理页面号都是十进制数,起始的页面号都是0,页面的大小为1024字节。
(1)要求画出地址映射的示意图(不考虑TLB),并叙述一个逻辑地址被转换成物理地址的过程。
(2)下列两个逻辑地址对应于什么物理地址(如果有的话):5499和2221(如果愿意采用十六进制形式,即157B和08AD,那么结果也用十六进制来表示)。
(1)略
(2)379(0x17B)、缺页中断
145
第4章 存储管理
逻辑页面号 驻留位 物理页面号 逻辑页面号 驻留位 物理页面号
1 1 7 4 0 一
2 0 一 5 1 0
- Gribble公司正在开发一款64位的计算机体系结构,也就是说,在访问内存的时候,最多可以使用64位的地址。假设我们采用的是虚拟页式存储管理,现在我们要为这款机器设计相应的地址映射机制。
(1)假设页面的大小是4KB(即4096字节),每个页表项(Page Table Entry,PTE)的长度是4个字节,而且我们必须采用三级页表结构,每一级页表结构当中的每个页表都必须正好存放在一个物理页面当中,请问在这种情形下,如何来实现地址的映射?具体来说,对于给定的一个虚拟地址,应该把它划分为几部分,每部分的长度分别是多少,功能是什么?另外,在采用了这种地址映射机制后,可以访问的虚拟地址空间有多大?(提示:64位地址并不一定全部用上了。)
(2)假设每个页表项的长度变成了8个字节,而且我们必须采用四级页表结构,每级页表结构当中的页表都必须正好存放在一个物理页面当中,请问在这种情形下,系统能够支持的最大的页面大小是多少?此时,虚拟地址应该如何划分?
(1)页面大小为 4K,每个页表项大小为 4 个字节,因此在每个页表当中,总共有 1024 个页表项,对于每个层次的页表来说,都满足这一点,这样每级页表的索引均为 10 位,由于页面大小为 4K,所以页内偏移地址为 12 位。逻辑地址被划分为五个部分:
| 22 位 | 10 位 | 10 位 | 10 位 | 12 位 |
空闲 一级索引 二级索引 三级索引 页内偏移可访问的虚拟地址空间大小为 2^42 = 4T (2 分)
(2)假定一个页面的大小为 2^Y,即页内偏移地址为 Y 位,每个页表可以包含 2^Y / 8 = 2 ^(Y-3)个页表项,因此每级页表的索引位为 Y-3 位,总共有 4 级页表,所以 4(Y-3) + Y <= 64
Y <= 15.2 因此 Y=15
所以最大的页面大小为 32KB。
| 1 位 | 12 位 | 12 位 | 12 位 | 12 位 | 15 位 |
空闲 一级索引 二级索引 三级索引 三级索引 页内偏移
11.在一个虚拟页式存储管理系统中,有两个进程P1和P2,物理内存中总共有三个物理页面。P1和P2在运行时不断生成对各自逻辑页面的访问请求,从而得到一个访问序列。其格式为<进程>-<逻辑页面号>,例如,P1-A表示进程P1对其逻辑页面A的访问请求。假设系统采用两种页面置换算法:
LRU Global:全局的LRU页面置换算法,所谓全局,即各个进程竞争地使用所有的物理页面,当发生一个缺页中断时,被置换的页面既可以是本进程的页面,也可以是其他进程的页面。
FIFO Local:局部的FIFO页面置换算法,所谓局部,即各个进程所占用的物理页面数是固定的,当发生一个缺页中断时,被置换的页面必须是该进程自身的页面。在本例中,假设进程P1开始时占用了2个物理页面,进程P2占用了1个。
问题描述:在下列表格中,第一行列出了P1和P2的访问请求序列,其余行用来显示在不同的页面置换策略下,在每一次的内存访问后,三个物理页面中所包含的内容(A~F表示逻辑页面号,星号表示为空)。作为示范,该表格的前两列已经填写了相应的内容,请填写剩下的内容,并计算出两种算法的缺页次数。
访问
请求 P1-A P1-B P2-C P2-F P2-E P1-A P2-D P2-E P2-D P1-A P1-B 缺页
次数
全局
LRU A A
* B
* *
局部
FIFO A A
* B
* *
146
操作系统
访问请求 P1-A P1-B P2-C P2-F P2-E P1-A P2-D P2-E P2-D P1-A P1-B 缺页次数
A A A F F F D D D D D
全局 LRU * B B B E E E E E E B 8 次
-
- C C C A A A A A A
A A A A A A A A A A A
局部 FIFO * B B B B B B B B B B 8 次
* * C F E E D E D D D
12.设某计算机的逻辑地址空间和物理地址空间均为64KB,按字节编址。某进程最多需要6页数据存储空间,页大小为1KB,操作系统采用固定分配局部置换策略为此进程分配4个页框。
页号 页框号 装入时间 访问位
0 7 130 1
1 4 230 1
2 2 200 1
3 9 160 1
当该进程执行到时刻260时,要访问逻辑地址为17CAH的数据。请回答下列问题:
(1)该逻辑地址对应的页号是多少?
(2)若采用先进先出(FIFO)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程。
(3)若采用时钟(Clock)置换算法,该逻辑地址对应的物理地址是多少?要求给出计算过程(设搜索下一页的指针按顺时针方向移动,且指向当前2号页框,示意图见图4.54)。
(1)17CAH:页面大小 1KB,故逻辑页面号为 5。
(2)采用 FIFO 算法,淘汰第 0 页,其页框号为 7,因此物理地址为 1FCAH
(3)先循环一圈,将所有访问位都置为 0,然后回到 2 号页框,将其置换,因此物理地址为 0BCAH。
习题
一、单项选择题
1.( A )是直接存取(Direct Access)的I/O设备。
A.磁盘 B.磁带 C.打印机 D.键盘
2.下列哪一个是软件?( D ) 。
A. device controller B.DMA
C. hard disk drive D. device driver
3.在单处理机系统中,可并行的是( D )。
I进程与进程 Ⅱ处理机与设备
Ⅲ处理机与DMA Ⅳ设备与设备
182
操作系统
A.Ⅰ、Ⅱ和Ⅲ B.Ⅰ、Ⅱ和Ⅳ
C.Ⅰ、Ⅲ和Ⅳ D.Ⅱ、Ⅲ和Ⅳ
4.下列选项中,能引起外部中断的事件是( A ) 。
A.键盘输入 B.除数为0
C.浮点运算下溢 D.访存缺页
5.在使用I/O设备时,以下哪一种情形不会产生I/O中断?( C ) 。
A.打印机脱纸 B.数据传输结束
C.数据开始传输 D.键盘被按下
6.使用DMA可以节省( D ) 。
A.内存访问时间 B.磁盘访问时间
C.总线访问时间 D.CPU时间
7.下列关于I/O的工作,哪一个不是在设备驱动程序中运行?( D ) 。
A.在读磁盘时,将抽象的参数转换为柱面、磁道、扇区等具体的参数
B.向设备控制器发出各种命令
C.对于磁盘来说,磁盘的调度程序
D.为了维护最近所访问的数据块而设置的缓冲区
8.引入缓冲区的主要目的是( B ) 。
A.节省内存
B.改善CPU和I/O设备之间速度不匹配的情况
C.提高CPU的利用率
D.提高I/O设备的运行效率
9.为了缓解CPU与I/O设备之间速度不匹配的矛盾,系统通常会采用缓冲技术。那么这里所说的缓冲区位于( B )中。
A.外存 B.内存 C.ROM D.寄存器
10.SPOOLing技术是一种实现虚拟( B )的技术。
A.处理器 B.设备 C.存储器 D.链路
11.SPOOLing技术提高了(A )的利用率。
A.独占设备 B.共享设备 C.文件 D.内存
12.磁盘上的文件是以( A )为单位来进行读写的。B.它录为
A.块 C.柱面 D.磁道
13.关于辅助存储器,( C )的提法是正确的。
A.“不是一种永久性的存储设备” B.“是CPU与内存之间的缓冲存储器”
C.“是文件的主要存储介质” D.“可以像内存一样被CPU直接访问”
14.磁盘调度的目的是缩短( A ) 。
A.柱面定位时间 B.旋转延迟时间
C.数据传送时间 D.启动时间
二、填空题
1.在计算机系统中,我们可以按照数据组织的形式把I/O设备分为两类,一类是块设备,一类是字符设备,请各举一个例子。块设备: 磁盘 字符设备:键盘
183
第5章 I/O设备管理
2.每个I/O单元均由两部分组成,一个是机械部分,即I/O设备本身;另一个是电子部分,即 设备控制器
3.在设计I/Q软件时,一个非常关键的概念或设计目标就是: 设备独立性
4.I/O地址的编址方式有三种,即 I/O 独立编址、内存映像编址 和混合编址
5.I/O设备的控制方式有三种,即 程序循环检测方式、中断驱动方式、DMA 方式
6.是否所有的I/O设备都需要用到DMA?(回答是或不是) 不是 。
7.在I/O软件中,直接对设备控制器进行操作的软件是: 设备驱动程序
8.操作系统通过 Spooling 技术,可以把独占设备转换为具有共享特征的虚拟设备。
9.当我们使用Word应用程序来打印一篇文档的时候,必须等到打印机已经完成此次打印任务以后,才能够把Word关闭,否则可能会丢失打印数据。以上这段话是否正确? 不正确
。
10.在访问一个磁盘扇区时,所需的时间主要包括三部分,即 柱面定位、旋转延迟 据传送时间。
11.假设磁盘的转速为10000rpm,每个磁道有300个扇区,每个扇区有512B,现要读一个50KB的文件。假设柱面定位(平均)时间为6.9ms,旋转延迟(平均)时间为3ms,扇区数据传送时间为17μs。(1)如果文件由同一个磁道上的100个连续扇区构成,那么总共需要的时间为: 15.9ms ;(2)如果文件由100个随机分布的扇区构成,那么总共需要的时间为:991.7ms
三、简答题
1.在一个I/O设备的设备控制器当中,主要有哪些寄存器?CPU又是如何去访问这些寄存器的(即I/O编址方式有哪几种)?
(1)控制寄存器、状态寄存器、数据寄存器
(2)I/O 独立编址;
(3)内存映像编址;
(4)混合编址;
2.是否每一个I/O设备都有相应的设备控制器?在一个设备控制器当中,主要有哪些寄存器?在I/O软件中,谁负责去访问这些寄存器?如何访问这些寄存器?
(1)是
(2)控制寄存器、状态寄存器、数据寄存器
(3)设备驱动程序
(4)I/O 独立编址、内存映像编址或混合编址
3.以磁盘读取操作为例,说明DMA的工作原理。
(1)CPU 对 DMA 控制器进行编程,告诉它应把什么数据传送到内存的什么地方。并向磁盘控制器发出命令,让它去磁盘驱动器中读入所需的数据块,保存到内部缓冲区中,并验证数据的正确性;
(2)DMA 控制器通过总线向磁盘控制器发出一个读操作的信号,并把将写入的内存地址打在总线上; (3)磁盘控制器取出一个字节,按该地址写入内存;
(4)磁盘控制器向 DMA 发一个确认信号,DMA 把内存地址加 1,把字节计数器减 1。若计数器的值大于 0 转第 2 步;
(5)DMA 控制器向 CPU 发出一个中断,告诉它数据传输已完成。
4.I/O设备管理软件分为哪几个层次?其中哪几个层次与硬件设备有关,哪几个层次与硬件设备无关?
(1)一般可以分为 4 层:中断处理程序、设备驱动程序、设备独立的系统软件、用户空间的 I/O 软件;
(2)其中,中断处理程序和设备驱动程序是与硬件设备有关的;
(3)设备独立的系统软件和用户空间的 I/O 软件是与硬件设备无关的;
5.在I/O软件的层次结构中,设备驱动程序是由谁提供的?当它在运行的时候,CPU 处于什么状态?设备驱动程序和中断处理程序之间如何同步?设备独立的I/O软件是由谁编写的?操作系统与设备驱动程序之间的接口是由谁定义的?
硬件厂商。
处于系统态(管态)
信号量和PV 操作来同步
OS 设计人员
6.磁盘的最小访问单位是什么?假设系统要去修改磁盘上的某一个字节,应当如何实现这个过程?
(1)扇区
(2)实现过程:
(a)读入包含该字节的扇区; (b)修改该字节;
©把整个扇区写回到磁盘;
四、应用题
1.某硬盘的参数为:盘片数5;柱面数100;扇区/磁道:16。
假设分配以扇区为单位,若使用位示图管理磁盘空间,请问位示图需要占用多大的空间?
10 个盘面,每个盘面有 100 个磁道,每个磁道有 16 个扇区,因此总的扇区数为:10×100×16=16000每个扇区用一个位来描述,共需要:16000/8=2000 字节。
2、某软盘有40个磁道,磁头从一个磁道移至另一磁道需要6ms。文件在磁盘上非连续存放,逻辑上相邻的数据块的平均距离为13磁道,每块的旋转延迟时间及传输时间分别为:100ms和25ms,请问读取一个100块的文件需要多长时间?
磁盘访问时间=柱面定位+旋转延迟+数据传输;
读一个数据块的时间为:13×6+100+25=203ms
读取一个 100 块的文件需要时间:203×100=20300ms
3.假设一个磁盘总共有100个柱面,它们的编号为0~99,访问请求的到达顺序为(柱
184
操作系统
面号):20,44,40,4,80,12,76,磁头的起始位置在40,假设每移动一个柱面需要3ms,请分别采用先来先服务算法、最短定位时间优先算法和电梯算法(起始方向为指向第0个柱面的方向)来确定这些访问请求的实际执行顺序,并计算总共花费的柱面定位时间。
(1)先来先服务(First-Come First-Served, FCFS)执行顺序:(40)20、44、40、4、80、12、76
移动距离:292
柱面定位时间:876 毫秒
(2)最短定位时间优先(Shortest Seek Time First, SSTF)执行顺序:(40)40、44、20、12、4、76、80
移动距离:120
柱面定位时间:360 毫秒
(3)电梯算法(elevator algorithm),也叫扫描算法(SCAN)执行顺序:(40)40、20、12、4、44、76、80
移动距离:112
柱面定位时间:336 毫秒
4.假设一个磁盘有100个柱面(编号为099),每个柱面上有12个磁道(编号为011),每个磁道上有200个扇区(编号为0~199)。现在有7个磁盘访问的请求,每个访问请求用一个三维地址来表示,即柱面号,磁道号,扇区号。假设这些访问请求的到达顺序为:(10,0,10)、(22,1,20)、(20,5,100)、(8,5,50)、(40,10,50)、(6,11,120)、(36,8,100),并且已知上一次磁盘访问的扇区地址为(20,1,70)。请分别采用先来先服务算法、最短定位时间优先算法和电梯算法(起始方向为指向第0个柱面的方向)来确定这些访问请求的实际执行顺序,并计算磁头移动的总距离(不需要画出磁头移动的轨迹图)。
(1)FCFS
执行顺序:(10,0,10)->(22,1,20)->(20,5,100)->(8,5,50)->(40,10,50)-> (6,11,120)->(36,8,100)
移动距离: 20->10->22->20->8->40->6->36 = 10+12+2+12+32+34+30 = 132
(2)SSTF:
执行顺序:(20,5,100)->(22,1,20)->(10,0,10)->(8,5,50)->(6,11,120)-> (36,8,100)->(40,10,50)
移动距离: 20->20->22->10->8->6->36->40 = 0+2+12+2+2+30+4 = 52
(3)SCAN:
执行顺序:(20,5,100)->(10,0,10)->(8,5,50)->(6,11,120)->(22,1,20)-> (36,8,100)->(40,10,50)
移动距离:20->20->10->8->6->22->36->40 = 0+10+2+2+16+14+4 = 48
5.假设磁盘的转速为10000rpm,每个磁道有300个扇区,每个扇区512字节,现要读一个150KB的文件。若柱面定位(平均)时间为6.9ms,旋转延迟(平均)时间为旋转时间的一半,扇区数据传送时间为17μs。
(1)如果该文件由同一个磁道上的300个连续扇区构成,那么访问该文件总共需要多长时间?
(2)如果该文件由300个随机分布的扇区构成,则访问该文件需要多长时间?
(3)假设该磁盘有12个盘片、24000个柱面,那么该磁盘的容量是多大?
(4)对于柱面定位、旋转延迟和数据传送,磁盘调度算法试图减少的是其中哪一部分时间?这部分代码位于什么地方?
(1)15.9ms
(2)2975.1ms
(3)86.4GB
(4)柱面定位、设备驱动程序
6.假设计算机系统采用CSCAN(循环扫描)磁盘调度策略,使用2KB的内存空间记录16384个磁盘块的空闲状态。
(1)请说明在上述条件下如何进行磁盘块空闲状态的管理。
(2)设某单面磁盘的旋转速度为每分钟6000转,每个磁道有100个扇区,相邻磁道间的平均移动的时间为1ms。若在某时刻,磁头位于100号磁道处,并沿着磁道号增大的方向移动(如图5.27所示),磁道号的请求队列为50,90,30,120。对请求队列中的每个磁道需读取1个随机分布的扇区,计算读完这些扇区总共需要多少时间,并给出计算过程。
随机分布的某扇区 0号磁道
磁头运动方向
100号磁道
图5.27 磁盘状态
采用位图法来管理磁盘空闲空间,每个磁盘块的状态用 0 和 1 表示:2KB = 210248bit = 16384bit根据 CSCAN 算法,被访问的磁道号顺序为 100 -> 120 -> 30 -> 50 -> 90
寻道时间:(20+90+20+40)1ms = 170ms
每分钟 6000 转,转一圈时间 10ms,通过一个扇区时间 0.1ms,随机访问 4 个扇区,总时间 170 + (0.510+0.1)*4 = 190.4ms
题
一、单项选择题
1.文件系统的主要目的是( A )。
A.实现对文件的按名存取 B.实现虚拟存储
C.提高外存的读写速度 D.用于存储系统文件
作系统
2.文件系统是指( D ) 。
A.文件的集合
B.文件的目录
C.实现文件管理的一组软件
D.文件、管理文件的软件及数据结构的总体
3.在现代操作系统中,文件的逻辑结构普遍采用的是( B ) 。
A.记录结构 B.无结构的字节流 C.树状结构 D.索引结构
4.用户把其用C语言编写的一个源程序作为文件保存,这个文件是一个( A A
A.流式文件 B.记录式文件 C.顺序文件 D.树 形文件
5.下列关于文件系统中树形目录结构的叙述中,( D )是错误的。
A.可以解决文件重名问题 B.文件名可以是绝对路径名或相对路径名
C.有利于文件分门别类存储 D.目录结构层次较多,不能提高文件检索速度
6.文件系统中,文件访问控制信息存储的合理位置是( A ) 。
A.文件控制块 B.文件分配表 C.用户口令表 D.系统注册表
7.在文件系统内部,磁盘上的文件是以( A )为单位来进行读写的。
A.块 B.记录 C.柱面 D.磁道
8.在下列文件的物理结构中,不利于文件长度动态增长的是( C ) 。
A.索引结构 B.链表结构 C.连续结构 D.FAT表
9.假设我们要去访问一个文件最末尾的那个数据块,那么在下列文件的物理结构中,访问速度最慢的是( C )
A.顺序结构 B.索引结构
C.链表结构 D.带有FAT表的链表结构
10.下列文件物理结构中,适合随机访问且易于文件扩展的是( B ) 。
A.连续结构 B.索引结构
C.链式结构且磁盘块定长 D.链式结构且磁盘块变长
11.如果我们修改了一个文件的文件名,那么对于文件系统来说,( A )会发生变化。
A.目录项 B.FCB C.FAT表 D.存放文件的数据块
12.一般来说,文件名及属性可以收纳在( A )中以便查找。C.字以典
A.目录 B.索引 D.作业控制块
13.在文件系统中,可以设定一个“当前工作目录”,这样,在访问某个文件或目录时,可以采用相对于当前工作目录的部分路径名。请问,设置“当前工作目录”的主要目的是( C ) 。
A.节省外存空间 B.节省内存空间
C.加快文件的检索速度 D.加快文件的读写速度
二、填空题
1 . 文件控制块 当中存放了一个文件的所有管理信息,是文件存在的标志。
2.在文件系统中,文件的属性信息(如文件大小、创建时间和是否只读等)存放在什么地方? FCB
3.目录如何存放在磁盘上? 文件
4.目录项的内容包括: 文件名+FCB
第6早 又什杀现
5.在文件系统的内部,是以. 块 为单位来进行数据处理的。
6.如果一个文件的大小是10个字节,那么它所占用的磁盘空间也是10个字节,这种说法对吗? 不对 。
7.如果文件系统采用的是带有文件分配表FAT的链表结构,那么对于每一个文件来说,它的第一个数据块的物理地址是存放在什么地方? 目录项
8.在文件的三种物理结构中,不利于文件长度动态增长的是: 顺序结构
9.在操作系统中,存储管理研究的是进程在内存的存放方式,而文件的物理结构描述的是文件在磁盘上的存放方式,这两者有一些相似的地方。请问:文件的连续结构对应于哪一种存储管理技术? 可变分区
10.在文件系统的内部,使用了两张表格,即系统内打开文件表和进程内打开文件表,对于进程内打开文件表,它主要包括 打开方式、读写指针 系统文件表指针等内容。
11.如何来管理磁盘上的空闲空间?请给出两种具体的实现方法: 位图法 和 链表法
三、简答题
1.在文件系统中,目录是以什么形式存放在磁盘上的?目录的属性信息(如读写权限、隐藏标志、最近访问时间和文件长度等)存放在什么地方?每个目录项中的内容是什么?
(1)普通的子目录以文件的形式存放。 根目录单独存放在磁盘的固定区域。
(2)目录的属性信息存放在目录文件的 FCB 中
(3)直接法:目录项=文件名+FCB。
间接法:目录项=文件名+FCB 的起始地址。
2.文件的物理结构主要有三种类型,其中一种是链表结构。请叙述链表结构的基本思想,以及它的主要缺点。
(1)链表结构:把文件的各个逻辑块依次存放在若干个(可以)不连续的物理块当中,各块之间通过指针连接,前一个物理块指向下一个物理块。
(2)只能进行顺序访问,不能进行随机访问。为了访问一个文件的第 n 个逻辑块,必须从文件的第一个物理块开始,按照指针所指向的地址,顺序地访问前 n 个块,即为了得到第 n 个逻辑块的物理块地址,必须先访问 n-1 次的磁盘,速度非常慢;
(3)每个物理块上的数据存储空间不再是 2 的整数次幂(指针占用了若干个字节),从而使文件的访问不太方便。
3.在同一个磁盘分区中,进行如下的两个操作:第一个操作是把一个文件从一个目录移动到另一个目录;第二个操作是把同一个文件从一个目录复制到另一个目录。请问,是第一个操作的速度快,还是第二个操作的速度快,还是两者的速度相当?为什么?
(1)移动操作的速度更快;
(2)拷贝操作需要把文件的每个数据块都复制一份,而且还要创建一个新的目录项,用来指向这些数据块,所以时间比较长;
而移动操作不需要拷贝数据块,只需要创建一个新的目录项,并且删除旧的目录项即可,所以速度很快;
4.很多操作系统都提供了文件重命名的功能,能把一个文件赋予一个新名字。假设在磁盘上有一个文件,其路径名为“C:\temp\old. txt”,现在用户想把它修改为“C:\temp\new. txt”,请简要描述一下,文件系统将如何实现这个操作?在这个操作的实现过程中,有哪些数据结构发生了变化?
(1)文件系统首先就把根目录读进来;
(2)在根目录中查找 temp 这个子目录的目录项;
(3)根据这个目录项,找到 temp 目录文件的 FCB,并将其内容读进来;
(4)在 temp 目录文件中去查找 old.txt 这个目录项;
(5)在这个目录项中,把 old.txt 修改为 new.txt。
5.许多操作系统提供文件重命名的功能,它能赋予文件一个新名字。若进行文件复制,并给复制文件起一个新名字,然后删除旧文件,也能达到给文件重命名的目的。请问哪一种方法更快?这两种实现方式有何不同?
(1)直接重命名方法更快
(2)前者只是去修改相应的目录项当中的文件名,其他不变
(3)后者需要复制一份文件,增加一个目录项,然后删除旧文件和旧目录项
6.打开一个文件的系统调用为:fd=open(文件路径名,打开方式),请叙述这个系统调用的实现过程。
(1)根据文件路径名一层层地去查找各级目录结构,找到该文件所在的目录项;
(2)根据打开方式、共享说明等信息检查访问合法性;
(3)查找系统内打开文件表,看文件是否已经被其他进程打开,若是,将文件的共享计数值加 1,转S4;若否,将该文件的 FCB 从外存读入内存,保存在系统打开文件表的某个空表项中,共享计数置为 1;
(4)在进程打开文件表中增加一项,填写访问方式、当前读写指针等,并指向系统打开文件表对应表项;
(5)返回一个指针给 fd,指向进程打开文件表中的相应表项,以后的文件操作均通过该指针来完成。
7.文件系统的一个功能就是对外提供一组系统调用函数,程序员正是通过这组函数来访问磁盘上的文件。如果让你来设计一个文件系统,那么你应该如何来实现其中的write 系统调用?例如,假设用户程序发出一个系统调用:
write( fd, userBuf, 100);
即往文件fd中写入100个字节的数据,这些数据目前存放在用户空间的缓冲区userBuf中,那么这个系统调用的实现过程是怎样的?
(1)通过fd 可以访问进程打开文件表中的相应表项,如文件的当前位置,并由此可访问系统打开文件表中的相应表项,即该文件的 FCB,由此可知文件的各个逻辑块在外存上的存储位置(把数据从用户空间拷贝到内核空间);
(2)需要验证本次操作的合法性,包括读取权限、数据块大小是否越界等;
(3)以块为单位来访问外存,需将用户给出的文件地址转换为逻辑块,即哪些逻辑块与此次的写操作有关。然后根据 FCB 当中的地址映射表,把这些逻辑块转换为相应的物理块;
(4)根据物理块编号去访问外存,把数据块从磁盘读入内存,然后按照文件的逻辑地址去修改相应的部分,即 100个字节,最后再把这些数据块写回到磁盘上(即写操作实际上是覆盖,而不是插入)。
四、应用题
有一个文件系统如图6.23所示,图6.23中的方框表示目录,圆圈表示普通文件。根目
裸作系统
录长驻内存,目录文件组织成链接文件,不设文件控制块。普通文件组织成索引文件。目录表目指示下一级文件名及其磁盘地址(各占2个字节,共4个字节)。若下级文件是目录文件,指示其第一个磁盘块地址;若下级文件是普通文件,指示其文件控制块的磁盘地址。每个目录文件磁盘块最后4个字节供拉链使用。下级文件在上级目录文件中的次序在图中为从左至右。每个磁盘块有512个字节,与普通文件的一页等长。
普通文件的文件控制块组织如图6.24所示。其中,每个磁盘地址占2个字节,前10个地址直接指示该文件前10页的物理地址,第11个地址指示一级索引表地址,一级索引表中每个磁盘地址指示一个文件页地址;第12个地址指向二级索引表地址,二级索引表中每个地址指示一个一级索引表的地址,第13个地址指向三级索引表地址,三级索引表中的每个地址指示一个二级索引表地址。
图6.24 普通文件的文件控制块组织
请问:
(1)一个普通文件最多可有多少个文件页?
(2)若要读文件J中的某一页,最多启动磁盘多少次?
(3)若要读文件W中的某一页,最少启动磁盘多少次?
(4)就(3)而言,为最大限度减少启动磁盘的次数,可采用什么方法?此时,磁盘最多启动多少次?
(1) 10+28+2828+2828*28=16843018
(2)7 次
第 1 次:读入目录文件 A第 2 次:读入目录文件 D
第 3 次:读入J 的文件控制块
第 4~6 次:读入三、二、一级索引表第 7 次:读入相应的页
(3)6 次
第 1 次:读入目录文件 C
第 2 次:读入目录文件 I
第 3 次:读入目录文件 P
第 4 次:读入目录文件 U
第 5 次:读入W 的文件控制块
第 6 次:读入相应的页文章来源:https://www.toymoban.com/news/detail-479289.html
(4)可将文件 W 直接链接在根目录的最左端,最多启动 5 次
第 1 次:读入W 的文件控制块
第 2~4 次:读入三、二、一级索引表
第 5 次:读入相应的页文章来源地址https://www.toymoban.com/news/detail-479289.html
到了这里,关于操作系统课后题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!