《操作系统》第四章习题加解析

贵州大学计算机科学与技术学院《操作系统》第 04 章习题解析  


1. 引入线程的主要目的是( A )。 
A、 提高并发程度同时降低开销 
B、 执行更多任务 
C、 加快运算速度 
D、 实现资源共享 
 
2. 用户级线程执行时,同一进程不同线程的切换( B )内核支持。 
A、需要 
B、不需要 
 
3. 在支持线程的操作系统中,同一个进程中的各个线程( B )该进程的用户栈。 
A、共享 
B、不共享 
【解析】 
线程共享的环境包括:进程代码段、进程的公有数据(利用这些共享的数据,线
程很容易的实现相互之间的通讯)、进程打开的文件描述符、信号的处理器、进
程的当前目录和进程用户 ID 与进程组 ID。 
线程独有(不共享)数据包括: 
 线程 ID 
 每个线程都有自己的线程 ID,这个 ID 在本进程中是唯一的。进程用此来标
识线程。 
 寄存器组的值 
 由于线程间是并发运行的,每个线程有自己不同的运行线索,当从一个线程
切换到另一个线程上时,必须将原有的线程的寄存器集合的状态保存,以便
将来该线程在被重新切换到时能得以恢复。 
 线程的堆栈 
 堆栈是保证线程独立运行所必须的。线程函数可以调用函数,而被调用函数
中又是可以层层嵌套的,所以线程必须拥有自己的函数堆栈,使得函数调用
可以正常执行,不受其他线程的影响。 
 错误返回码 
 由于同一个进程中有很多个线程在同时运行,可能某个线程进行系统调用后
设置了 errno 值,而在该线程还没有处理这个错误,另外一个线程就在此时
被调度器投入运行,这样错误值就有可能被修改。所以,不同的线程应该拥
有自己的错误返回码变量。 
 线程的信号屏蔽码 
 由于每个线程所感兴趣的信号不同,所以线程的信号屏蔽码应该由线程自己
管理。但所有的线程都共享同样的信号处理器。 
 线程的优先级 
 由于线程需要像进程那样能够被调度,那么就必须要有可供调度使用的参
数,这个参数就是线程的优先级。 
 
4. 下列关于线程的叙述中,正确的是( A )。 
A、线程包含 CPU 现场,可以独立执行程序 
B、每个线程有自己独立的地址空间 
C、进程只能包含一个线程 
D、线程之间的通信必须使用系统调用函数 
【解析】 
 线程是处理机调度的基本单位,可以独立执行程序。 
 线程没有自己独立的地址空间,共享其所属的进程的空间。 
 进程可以创建多个线程。 
 同进程之间线程的通信可以直接通过它们共享的存储空间。 
 
5. 在多对一的线程模型中,当一个多线程进程中的某个线程被阻塞后,( C )。 
A、 该进程的其他线程仍可继续运行 
B、 该阻塞线程将被撤销 
C、 整个进程都将阻塞 
D、该阻塞线程将永远不可能再执行 
 
6. 在下面的叙述中,正确的是( C )。 
A、 引入线程后,处理器只能在线程间切换 
B、 引入线程后,处理器仍在进程间切换 
C、 线程的切换,可能引起进程的切换 
D、 线程的切换,不会引起进程的切换 
 
7. 下面的叙述中,正确的是( B )。 
A、 线程是比进程更小的能独立运行的基本单位,可以脱离进程独立运行 
B、 引入线程可提高程序并发执行的程度,可进一步提高系统效率 
C、 线程的引入增加了程序执行时的时空开销 
D、 一个进程一定包含多个线程 
 
8. 下面的叙述中,正确的是( D )。 
A、 同一进程内的线程可并发执行,不同进程的线程只能串行执行 
B、 同一进程内的线程只能串行执行,不同进程的线程可并发执行 
C、 同一进程或不同进程内的线程都只能串行执行 
D、 同一进程或不同进程内的线程都可以并发执行 
 
9. 在支持多线程的系统中,进程 P 创建的若干个线程不能共享的是( D )。 
A、进程 P 的代码段 
B、进程 P 中打开的文件 
C、进程 P 的全局变量 
D、进程 P 中某线程的栈指针 
 
10. 在以下描述中,( A )并不是多线程系统的特长。 
A、 键盘驱动程序为每一个正在运行的应用配备一个线程,用以响应该应用的键盘输入 
B、 Web 服务器利用线程响应 HTTP 请求 
C、 利用线程并行地执行矩阵乘法运算 
D、 基于 GUI 的调试程序用不同的线程分别处理用户输入、计算和跟踪等操作 
【解析】 
整个系统只有一个键盘,而且键盘输入是人的操作,速度比较慢,完全可以使
用一个线程来处理整个系统的键盘输入。 
 
11. 若有一进程拥有 100 个线程,这些线程都属于内核级线程,则在系统调度
执行时间上,每个进程占用的时间片是( B )。 
A、1 
B、100 
C、1/100 
D、0 
 
12. 两个线程并发执行(代码段都是 ThreadProc),当两个线程都结束后,a 的
取值范围是( A )。 
int a = 0;//global 
void ThreadProc() 
{ for(int i = 1; i <= 50; i++) 
a+= 1; } 
A、50~100 
B、0~50 
C、0~100 
D、1~100 
【解析】 
 a+= 1 分为三条指令: 
(1)a 内存进入寄存器;(2)寄存器加 1;(3)寄存器数据放回内存 a; 
 最坏的情况: 就是线程一读 a,线程二也读 a,线程一寄存器加一,线程二
寄存器加一,线程一放回 a,线程二放回 a,这种情况虽然二个线程都对 a
加 1,但显然只加了一次。所以到最后只加 50 次。 
 最好的情况: 就是线程一的 for 结束,再到线程二的 for,一共执行 100 次。 
 
13. 下列关于进程和线程的叙述中,正确的是( A )。 
A、不管系统是否支持线程,进程都是资源分配的基本单位 
B、线程是资源分配的基本单位,进程是调度的基本单位 
C、系统级线程和用户级线程的切换都需要内核的支持 
D、同一进程中的各个线程拥有各自不一的地址空间 
 
14. 同一进程的多线程,同时在多核上都能运行。这种性质称作线程的( B )。 
A、异步性 
B、并行性 
C、并发性 
D、动态性 
 
15. 下面关于线程的叙述不正确的是( C )。 
A、线程可以通过进程的全局变量与同进程其他线程通信。 
B、线程共享进程的单地址空间。 
C、创建线程需要从磁盘上读取线程运行的函数。 
D、同一进程线程之间切换 CPU 只需要保护寄存器和堆栈。 
 
16. 内核线程的描述正确的是( A ) 
A、由内核维护内核线程的线程控制块 
B、由用户线程库维护内核线程的线程控制块 
C、内核无法调度内核线程 
D、内核线程间无法共享所属进程的资源 
 
17. 关于进程或线程的叙述中,正确的是( ABCD ) 
A、线程是 CPU 调度的基本单位,进程是资源分配的基本单位 
B、进程拥有一个完整的资源平台,而线程只独享指令流执行的必要资源,如寄存器和栈 
C、线程能减少并发执行的时间和空间开销 
D、同一进程的各线程间共享内存和文件资源,可以不通过内核进行直接通信 
 
18. 考虑下面的代码段,创建了(6)个单独进程,创建了(2)个单独线程。 
pid_t pid; 
pid = fork(); 
if(pid==0){ /*child process*/ 
fork(); 
thread.create(...); 

fork(); 

资料来源与老师课件!!!

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值