名,必须从根目录开始。所以,一个文件的绝对路径名是惟一的。相对路径名总是从当前目录往下,所以文件的相对路径名与当前位置有关,是不惟一的。
7.试述“创建文件”与“打开文件”两个系统调用在功能上的不同之处。
答:所谓“创建文件”,表示原先该文件并不存在。所以创建文件时,最主要的功能是在磁盘上为其开辟存储空间,建立起该文件的FCB。文件创建后,有了它的FCB,系统才真正感知到它的存在;“打开文件”是这个文件已经存在,只是它的有关信息不在内存。因此,打开文件最主要的功能是把该文件FCB中的信息复制到内存中,以便为随后对文件的操作带来便利。 8.试述“删除文件”与“关闭文件”两个系统调用在功能上的不同之处。
答:“删除文件”最主要的功能是把该文件的FCB收回。文件没有了FCB,系统也就无法感知到它的存在了。所以,在执行了删除文件的命令后,这个文件就在系统里消失了;而“关闭文件”最主要的功能是把复制到内存活动目录表里的该文件的FCB信息取消。这样一来,在内存活动目录表里没有了该文件的信息,就不能够对这个文件进行读、写了。所以,关闭一个文件后,这个文件还存在,只是不能对它操作了。如果要操作,就必须再次将它打开(即把FCB里的信息复制到内存的活动目录表),然后再进行操作。
9.为什么在使用文件之前,总是先将其打开后再用?
答:有关文件的信息都存放在该文件的FCB里,只有找到文件的FCB,才能获得它的一切信息。但FCB是在磁盘里。因此,只要对文件进行操作,就要到磁盘里去找它的FCB。这种做法,无疑影响了文件操作的执行速度。正因为如此,操作系统才考虑在对文件进行操作前,先将其打开,把文件的FCB内容复制到内存中来。这样,查找文件的FCB,就不必每次都要去访问磁盘。 10.如果一个文件系统没有提供显式的打开命令(即没有OPEN命令),但又希望有打开的功能,以便在使用文件时能减少与磁盘的交往次数。那么应该把这一功能安排在哪个系统调用里合适?如何安排?
答:文件系统中设置打开命令的根本目的,是减少文件操作时与磁盘的交往次数。如果系统没有提供显式的打开命令,但又要能减少与磁盘的交往次数,那么只需把这一功能安排在读或写系统调用命令里。这时,在读、写命令功能前面添加这样的处理:总是先到内存的活动目录表里查找该文件的FCB。如果找到,则表明在此前文件已经被打开,于是就可以立即进行所需要的读、写操作;如果没有找到,那么表明在此前文件还没有打开。于是应该先按照文件名,到磁盘上去查找该文件的FCB,把它复制到内存的活动目录表里,然后再进行对它的操作。
四、计算?
1.我们知道,可以用位示图法或成组链接法来管理磁盘空间。假定表示一个磁盘地址需要D个二进制位,一个磁盘共有B块,其中有F块空闲。在什么条件下,成组链接法占用的存储空间少于位示图?
26
解:依题意,该磁盘共有B块,这意味采用位示图法来管理磁盘空间时,共需要B个二进制位构成位示图的存储空间;另一方面,现在共有F个空闲块,而表示一个磁盘地址(即一个空闲块)需要D个二进制位。所以在当前条件下,用成组链接法来管理磁盘空间中的F个空闲块时,要用F×D个二进制位的存储空间来管理它们。因此,只要题中所给的D、B、F三者之间满足关系:
B>F×D
就可以保证使用成组链接法占用的存储空间少于位示图。
2.假定磁带的存储密度为每英寸800个字符,每个逻辑记录长为160个字符,记录间隙为0.6英寸。现在有1000个逻辑记录需要存储到磁带上。分别回答: (1)不采用记录成组技术,这时磁带存储空间的利用率是多少?
(2)采用以5个逻辑记录为一组的成组技术进行存放,这时磁带存储空间的利用率是多少? (3)若希望磁带存储空间的利用率大于50%,应该多少个逻辑记录为一组?
解:(1)如果不采用记录成组技术,存放一个逻辑记录,就要有一个记录间隙。因为磁带的存储密度为每英寸800个字符,每个逻辑记录长为160个字符。所以一个逻辑记录占用的磁带长度是:
160/800=0.2(英寸)
一个记录间隙所需要的磁带长度为0.6英寸。所以,磁带存储空间的利用率是: 0.2/(0.2+0.6)=0.25=25%
(2)采用以5个逻辑记录为一组的成组技术进行存放,表示存放5个逻辑记录后,有一个记录间隙。5个逻辑记录占用的磁带长度是: 0.2×5=1(英寸)
这时一个记录间隙所需要的磁带长度仍为0.6英寸。所以,这时磁带存储空间的利用率是: 1/(1+0.6)=0.625=62.5%
(3)若希望磁带存储空间的利用率大于50%,假定应该x个逻辑记录为一组。这就是说,存放x个逻辑记录后,有一个记录间隙。x个逻辑记录占用的磁带长度是:0.2×x(英寸);这时一个记录间隙所需要的磁带长度仍为0.6英寸。所以,磁带存储空间的利用率是: x/(x+0.6)=0.5
解这个一元一次方程式,x=3。也就是说,当把3个以上的逻辑记录组成一组时,磁带存储空间的利用率将大于50%。
27
3.假定有一个名为MYFILE的文件,共有10个逻辑记录,每个逻辑记录长为250个字节。磁盘块尺寸为512字节,磁盘地址需要2个字节表示。把MYFILE采用链接结构存储在磁盘上。 (1)画出该文件在磁盘上的链接结构图(磁盘块号自定)。
(2)现在用户要读文件上包含第1425个字符的逻辑记录。给出完成这一请求的主要工作步骤。 解:(1)由于每个逻辑记录长为250个字节,磁盘块尺寸为512字节。所以,每个磁盘块里可以存放两个逻辑记录,余下的字节用于存放指针,文件总共需要5块。假定系统分配给该文件的磁盘块号是:25、33、10、56、4。于是,该文件在磁盘上的链接结构图如图5-1所示。
文件名 X X文件的目录 首块号 25 尾块号 4 块号: 25 33 10 56 4 2个 逻辑记录 指针: 33 10 56 4 –1 图5-1 计算题3的图示
(2)首先要知道包含第1425字节的逻辑记录应该放在链接结构的第几块。因为一个逻辑记录是250个字节,2个逻辑记录放在一个磁盘块里。所以 1425/(250×2)=2(“/”表示整除运算)
即包含第1425字节的逻辑记录应该放在链接结构的第3块(注意,由于是用整除,所以第1块应该是0)。
其次,文件系统沿着指针,把第3块(也就是块号为56的块)读入内存缓冲区中。 最后,由
1425%(250×2)=425 且
250×1<425<250×2
所以把缓冲区里的第2个记录读到用户指定的内存区里。
第6章习题解答
28
(“%”表示求余运算)
一、填空?
1.信号量的物理意义是当信号量值大于零时表示 可分配资源的个数 ;当信号量值小于零时,其绝对值为 等待使用该资源的进程的个数 。
2.所谓临界区是指进程程序中 需要互斥执行的程序段 。
3.用P、V操作管理临界区时,一个进程在进入临界区前应对信号量执行 P 操作,退出临界区时应对信号量执行 V 操作。
4.有m个进程共享一个临界资源。若使用信号量机制实现对临界资源的互斥访问,则该信号量取值最大为 1 ,最小为 ?(m?1)。
注意,无论有多少个进程,只要它们需要互斥访问同一个临界资源,那么管理该临界资源的信号量初值就是1。当有一个进程进入临界区时,信号量的值就变为0。随后再想进入的进程只能等待。最多的情况是让一个进程进入后,其余(m?1)个进程都在等待进入。于是这时信号量取到最小值:?(m?1)。
5.对信号量S的P操作原语中,使进程进入相应信号量队列等待的条件是Vs<0 。 6.死锁是指系统中多个 进程 无休止地等待永远不会发生的事件出现。 7.产生死锁的4个必要条件是互斥、非剥夺、部分分配和 循环等待 。
8.在银行家算法中,如果一个进程对资源提出的请求将会导致系统从 安全 的状态进入到 不安全 的状态时,就暂时拒绝这一请求。
9.信箱在逻辑上被分为 信箱头 和 信箱体 两部分。
10.在操作系统中进程间的通信可以分为 低级 通信与 高级 通信两种。
二、选择?
1.P、V操作是 A 。
A.两条低级进程通信原语 C.两条系统调用命令
2.进程的并发执行是指若干个进程 B 。
B.两条高级进程通信原语 D.两条特权指令
A.共享系统资源 B.在执行的时间上是重叠的 C.顺序执行 D.相互制约
3.若信号量S初值为2,当前值为?1,则表示有 B 个进程在与S相关的队列上等待。 A.0 B.1 C.2
4.用P、V操作管理相关进程的临界区时,信号量的初值应定义为 C 。
D.3
29
A.?1 B.0 C.1
5.用V操作唤醒一个等待进程时,被唤醒进程的状态变为 B 。
D.随意
A.等待 B.就绪 C.运行 D.完成
6.若两个并发进程相关临界区的互斥信号量MUTEX现在取值为0,则正确的描述应该是 B 。 A.没有进程进入临界区 B.有一个进程进入临界区
C.有一个进程进入临界区,另一个在等待进入临界区 D.不定
7.在系统中采用按序分配资源的策略,将破坏产生死锁的 D 条件。
A.互斥 B.占有并等待 C.不可抢夺 D.循环等待
8.某系统中有3个并发进程,都需要4个同类资源。试问该系统不会产生死锁的最少资源总数应
该是 B 。
A.9 B.10
9.银行家算法是一种 A 算法。
C.11
D.12
A.死锁避免 B.死锁防止 C.死锁检测
10.信箱通信是进程间的一种 B 通信方式。
A.直接 三、问答?
B.间接
D.死锁解除
C.低级 D.信号量
1.试说出图6-1(即教材中第2章的图2-2)所给出的监视程序A和计数程序B之间体现出一种什么关系,是“互斥”还是“同步”?为什么?
程序A: while(1) { A1: 收到监视器的信号; A2: COUNT=COUNT+1; } 图6-1 对两个程序的描述
程序B: while(1) { B1: 延迟半小时; B2: 打印COUNT的值; B3:COUNT=0; }
答:图6-1(即教材中第2章的图2-2)所给出的监视程序A和计数程序B之间体现出的是一种互斥关系,因为在监视程序A里,要对共享变量COUNT进行操作:
COUNT=COUNT+1;
在计数程序B里要对共享变量COUNT进行操作:
打印COUNT的值; COUNT=0;
30