📜  操作系统 |设置 10

📅  最后修改于: 2021-09-28 10:20:59             🧑  作者: Mango

以下问题已在 GATE 2008 CS 考试中提出。

1) Unix 文件系统中一个非常大的文件的数据块是使用分配的
(一)连续分配
(二)链接分配
(C) 索引分配
(D) 索引分配的扩展

答案 (D)
Unix 文件系统使用索引分配的扩展。它使用直接块、单个间接块、双间接块和三重间接块。下图显示了 Unix 文件系统的实现。


2) 计数信号量的 P 和 V 操作,其中 s 是计数信号量,定义如下:

P(s) : s =  s - 1;
  if (s  < 0) then wait;
V(s) : s = s + 1;
  if (s <= 0) then wakeup a process waiting on s;

假设 Pb 和 Vb 提供了对二进制信号量的等待和信号操作。两个二进制信号量 Xb 和 Yb 用于实现信号量操作 P(s) 和 V(s) 如下:

P(s) : Pb(Xb);
  s = s - 1;
  if (s < 0) {
   Vb(Xb) ;
   Pb(Yb) ;
  }
  else Vb(Xb); 


V(s) : Pb(Xb) ;
  s = s + 1;
  if (s <= 0) Vb(Yb) ;
  Vb(Xb) ;

Xb 和 Yb 的初始值分别为
(一) 0 和 0
(B) 0 和 1
(C) 1 和 0
(D) 1 和 1

答案 (C)
P(s) 和 V(s) 操作都执行 Pb(xb) 作为第一步。如果 Xb 为 0,则所有执行这些操作的进程都将被阻塞。因此,Xb 必须为 1。
如果 Yb 为 1,则有可能两个进程可以一个接一个地执行 P(s)(意味着临界区中有 2 个进程)。考虑 s = 1, y = 1 的情况。所以 Yb 必须为 0。

3) 下列关于同步和异步 I/O 的说法不正确的是?
(A) ISR 在同步 I/O 中的 I/O 完成时调用,但不在异步 I/O 中调用
(B) 在同步和异步 I/O 中,ISR(中断服务程序)在 I/O 完成后被调用
(C) 进行同步 I/O 调用的进程等待 I/O 完成,但进行异步 I/O 调用的进程不等待 I/O 完成
(D)在同步I/O的情况下,等待I/O完成的进程被I/O完成后调用的ISR唤醒

答案 (B)
I/O 操作完成后会调用一个中断服务程序,它将进程从阻塞状态进入就绪状态,因为执行 I/O 操作的进程被置于阻塞状态,直到同步 I 中的 I/O 操作完成/O

但是,执行 I/O 的进程不会被置于阻塞状态,进程会继续执行Asynchronous I/O 中剩余的指令,因为在执行 I/O 操作时会注册处理程序函数,当 I/O 操作完成时信号机制用于通知进程数据可用。

所以,选项(B)是错误的。

请参阅 GATE Corner 了解所有往年论文/解决方案/解释、教学大纲、重要日期、笔记等。