3.1 Describe the differences among short-term, medium-term, and longterm scheduling.

答:

  • 短期调度:也叫 CPU 调度。负责选择 CPU 要执行的进程。
  • 中期调度:限于分时操作系统。负责从内存中换出和换入进程。
  • 长期调度:决定程序是否能够成为一个进程。负责将程序从队列设备(如基于磁盘)载入内存执行。

3.2 Describe the actions taken by a kernel to context-switch between processes.

上下文切换:用于存储和还原进程控制块的 CPU 状态。过程如下:

  1. 发生一个时钟中断,然后首先保存 PC 指针、当前进程栈指针,将控制权移交给内核时钟中断 handler(用户态 -> 内核态)
  2. 内核时钟中断 handler 将剩余的寄存器等状态保存到 PCB,调度器选择下一个要执行的进程(内核态)
  3. 取得要执行进程的 PCB,回复寄存器值,回到用户态执行那个进程。(内核态 -> 用户态)

3.4 Using the program shown in Figure 3.24, explain what will be output at Line A.

fork 之后,子进程拥有单独的执行环境,所以它操作的是 value 在新的内存位置的值。因此,输出应该是 5.

3.5 What are the benefits and detriments of each of the following? Consider both the systems and the programmers’ levels.

a. Symmetric and asymmetric communication

对称比非对称使用起来更简单,一问一答即可

但是对称通信需要等待,利用率比非对称更低

b. Automatic and explicit buffering

显式缓冲:缓冲大小可控,缓冲用满之后发送方的队列会增长

自动缓冲:缓冲大小可变,但动态分配空间给缓冲,对性能会有影响。对生产方更友好。

c. Send by copy and send by reference

如果引用对象体积很大,则传指针可以避免反复复制,性能好。如果引用对象并不大,使用引用传值可能反而性能变差,因为寻址需要时间。另外引用传值可能会导致使用者在预期之外修改内存值,造成危害扩大。

d. Fixed-sized and variable-sized messages

定长消息比动态长度消息更容易设计协议、传输和校验,但是容易造成空间浪费。