1 - Describe the actions taken by a kernel to context-switch between processes.
当进行上下文切换时,内核会将旧进程状态保存在其PCB中,然后加载经调度而要执行的新进程的上下文。上下文包括CPU寄存器的值、进程状态和内存管理信息等。
2 - Explain the role of the init process on UNIX and Linux systems in regard to process termination.
进程终止而其父进程尚未调用wait时候,该进程成为僵尸进程。如果父进程没有调用wait就终止,则该子进程成为孤儿进程。Linux和UNIX对这种情况的处理是:将init进程(UNIX和Linux系统内进程树的根进程)作为孤儿进程的父进程。init进程会定期调用wait,从而收集任何孤儿进程的退出状态,并释放孤儿进程标识符和进程表条目。
3 - Describe the differences among short-term, medium-term, and long-term scheduling.
长期调度程序从进程缓存池中选择进程,加到内存,以便执行;
中期调度程序可将进程从内存(或CPU竞争)中移出,从而降低多道程序程度,之后可以重新调入并从中断处继续执行;
短期调度程序从准备执行的进程中选择进程并分配CPU。
它们的主要区别在于执行频率,短期的频率高,经常要调用一个新进程;长期的频率低,可能在进程离开系统时才会调用。
4 - What are the benefits and the disadvantages of each of the following? Consider both the system level and the programmer level.
a. Synchronous and asynchronous communication
b. Automatic and explicit buffering
c. Send by copy and send by reference
d. Fixed-sized and variable-sized messages
a:同步通信允许发送者和接受者之间构建一种约定,但阻塞等待的过程可能浪费时间,降低系统效率,影响用户体验;异步通信具有更高的效率,但程序员需要处理的逻辑更复杂。
b:自动缓冲提供一个大小可变的缓冲队列,使得发送方在发送消息时基本不用阻塞,可以提升系统效率,但是可能浪费内存;显式缓冲指定了缓冲区的大小,不容易浪费内存但可能造成阻塞。
c:复制传送不允许接收者改变参数状态,而引用发送允许。后者的这个特性使得程序员可以写一个分布式版本的程序。
d:对于固定大小的消息,已知大小的缓冲区可以容纳消息的数量是已知的,而可变大小消息则是不清楚的。后者具备更强的灵活性,并且可能有助于节省内存,但也使得编程难度提高了。