【MOOC】华中科技大学操作系统慕课答案-第4~6章+第7章单元测试

单选

1 ‎关于进程错误的说法是 。
A. 进程的运行全过程不可重现。
√B. 一个程序只能生成一个进程。
C. 进程具有异步性。
D. 多个并发进程共享CPU。

B一定错,一个程序可以生成多个进程。
A可对可错,A因为现在的操作系统进程调度过程都非常复杂,所以全过程不可重现。C/D一般情况是正确的。

2 ​关于进程状态说法错误的是 。
√A. 单CPU的系统中处于运行态的进程可以有多个。
B. 进程在整个生存期间会根据不同条件转换状态。
C. 阻塞态的进程即便给它CPU它也无法运行。
D. 处于就绪态的进程都在等待CPU。

A. 运行态它就是占用CPU的进程,像申请了I/O设备的就是阻塞态了。

3 ‏关进程控制块PCB说法错误的是 。
A. PCB是进程存在的标志
B. Linux中定义PCB的数据结构是task_struct。
√C. 进程生存期间PCB成员变量的值一直保持不变。
D. 创建进程的时候创建PCB数据结构。

4 ‍进程创建后的状态是 。
√A. 就绪态
B. 运行态
C. 阻塞态
D. 核态

5 ‎关于进程控制说法错误的是 。​
A. 进程生存期间都受操作系统控制。
B. 进程控制采用原语实现。
C. 进程被唤醒的条件和被阻塞的原因一致。
√D. 进程被撤销时操作系统收回其占用资源,但是不释放相应的PCB。

D. 根据进程撤销原语,撤销的时候是要释放相应的PCB的。
C选项可以理解成:解铃还须系铃人。

6 ‍下列应用场景中不适合采用线程的是 。
A. 多个功能需要并发的地方
B. 需要改善窗口交互性的地方
C. 需要改善程序结构的地方
√D. 应用程序的初始化

C可以把一个任务分成多个子任务并行完成,改善程序结构,使用多线程。
D可能它就是主线程的任务吧。

7 ‌关于临界资源和临界区的说法错误的是 。
A. 临界资源是一个共享变量。
B. 临界区是程序中的某个片段。
C. 临界区中含有对临界资源的存取操作。
√D. 线程内定义的变量可以是临界资源。

D. 线程内定义的不是公共变量。
A中的变量应该是广义的“变量”,而不仅仅指程序的标识符变量。

8 ‎关于临界资源和临界区的说法错误的是 。
A. 临界区不允许两个或多个进程同时进入。
√B. 有限等待原则要求程序员尽量把临界区设置大一些。
C. 让权等待可以让系统工作效率更高。
D. 同一个线程内可以设置多个不同的临界区。

B. 有限等待。 对请求访问的进程,应保证能在有限的时间内进入临界区(保证不会饥饿)。
如果临界区设置得过大,一个进程占用的时间就会过长,别的进程就会饥饿。

9 ​关于锁进制的说法错误的是 。
A. 锁机制设置一个标志表示临界区是否可用。
B. 锁机制只能解决进程互斥的问题。
C. 锁机制满足忙则等待和空闲让进的原则
√D. 锁机制满足有限等待和让权等待的原则

在这个课程里面锁机制不满足让权等待原则,emm,明明能改进的说。B选项也有点绝对化。

10 ‍关于P-V操作的说法错误的是 。‌
A. P-V操作是比锁机制更灵活的同步进制。
B. P-V操作可以用于控制进程间的同步和互斥。
C. P-V操作的核心是两个函数,用来对信号灯和进程进行控制。
√D. P操作和V操作都会把信号量加1。

11 ​关于P-V操作的说法错误的是 。‏
A. P操作可能会阻塞调用进程。
B. V操作会把信号量加1。
√C. P操作可以唤醒一个进程。
D. P操作和V操作在所有并发进程中成对出现。

C. P操作只能保证在还剩信号量的时候,能让这个进程能够继续执行下去;V操作才能唤醒沉睡的进程。
D有点绝对。问了老师,解答是:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。每个程序中用户实现互斥的P、V操作必须成对出现,先做P操作,进临界区,后做V操作,出临界区。若有多个分支,要认真检查其成对性。

12 ​关于P-V操作解决同步问题的说法正确的是 。
A. 一般在关键操作之前执行V操作。
B. 一般在关键操作之后执行P操作。
C. 信号量S的定义可以随意定义。
√D. 信号量S的初值设置不对可能导致进程并发过程出错。

13 ‌关于Windwos的同步进制不正确的是 。
√A. 临界区机制CRITICAL_SECTION可以用于进程间的同步。
B. WaitForMultipleObjects函数可能会使调用线程阻塞。
C. 信号量机制Semaphore允许指定个数的线程同时访问临界区。
D. ReleaseSemaphore函数具有P-V操作中的V操作的作用。

A. 临界区在使用时以CRITICAL_SECTION结构对象保护共享资源,并分别用EnterCriticalSection()和LeaveCriticalSection()函数去标识和释放一个临界区。
它和锁很像。
C选项,临界资源一次最多只允许一个进程(线程)访问,但一个临界区对应的可能不止一个临界资源,因此在信号量中可做到多个线程同时访问临界区。

14 ‎关于Linux进程的不正确的说法是 。‎
√A. fork函数具有两个返回值。
B. wait函数会阻塞进程直到其一个子进程结束为止。
C. exit函数可以在结束进程的时候传递参数给父进程。
D. sleep函数会让调用者进程挂起若干时间。

A. fork只有一个返回值,但在子进程和父进程都会分别返回一次,并且返回值不同。
补充:子进程除了进程标识、时间变量等不同,其余(包括系统栈)均继承于父进程。本来,父子进程都会返回newproc(建立子进程映像的函数)的下一个单元。但父进程返回时,会使原返回地址加2,跳过汇编指令clr r0,所以返回子进程标识数。而子进程会把父进程标识数送入栈内r0保护单元,但不会跳过清零指令,因此返回0。
B. wait()函数用于使父进程(也就是调用wait()的进程)阻塞,直到一个子进程结束或者该进程接收到了一个指定的信号为止。

15 ‏关于死锁不正确的说法是 。​
A. 资源数量不够不一定产生死锁。
B. 每个死锁的进程一定在等待某个资源。
C. 每个死锁的进程一定持有某个资源。
√D. 五个哲学家并发就餐的过程一定会发生死锁。

填空

16 ‍Windows中创建进程的函数名是 CreateProcess 。

system,WinExec,ShellExecute,CreateProcess都错了,不知道答案是什么。

17 ‏Linux中创建进程的函数名是 fork 。

18 ‍Windows中创建线程的函数名是 CreateThread 。

19 ‏只考虑作业等候时间的进程调度算法叫 先来先服务算法 。

20 ​同时考虑作业等候时间和作业大小的进程调度算法叫 响应比高者优先调度算法 。

判断

21 ​用于科学计算的进程一般都是偏CPU的进程。
√A. 对
B. 错

22 ‏进程是程序的一次具体运行过程。
√A. 对
B. 错

23 ​在Winodws7中,进程是CPU的调度单位。
A. 对
√B. 错

线程。

24 ‎异步性会使得每个进程都按自己的逻辑和速度向前运行。
√A. 对
B. 错

25 ‌阻塞的进程获得相应服务或信号后会立即开始运行。
A. 对
√B. 错

先转为就绪态。

26 ‍进程控制是非常重要的过程,所以采用原语实现。
√A. 对
B. 错

27 ‏线程的并发粒度比进程更细,有利于提升系统并发效率。
√A. 对
B. 错

28 ‍利用VS等主流IDE开发的Windows程序缺省都是多线程程序。
A. 对
√B. 错

这题我凭直觉在选。但后来去看了一下VS的默认设置……
如下两图:
在这里插入图片描述在这里插入图片描述
不知道用了多线程DLL库的算不算多线程程序。我去问问。
问了说是不算。
可能缺省只有main主线程。

29 ​线程函数都具有特定的函数原型。
√A. 对
B. 错

30 ​同步机制的实质是当进程运行条件不满足时,能让进程暂停。
√A. 对
B. 错

第七章答案

第七章答案

posted @ 2021-11-28 22:54  shandianchengzi  阅读(56)  评论(0编辑  收藏  举报  来源