操作系统第三次作业
问题一:Discuss the difference between user-level thread and kernel level thread.
内核线程:在内核空间执行线程创建、调度和管理,且内核会维护进程和线程的上下文信息,且线程切换由内核完成;一个线程发起系统调用而阻塞。不会影响其他线程的运行。时间片直接分配给线程,所以多线程的进程获得更多CPU时间;可以说,内核线程才是CPU调度的基本单位。
用户线程:由用户级线程库进行管理的线程,线程库提供对线程创建、调度和管理的支持。无需内核支持。用户线程由应用进程维护,内核不了解用户线程的存在,用户线程切换不需要内核特权。
问题二: Which of the following components of program state are shared across threads in a multithreaded process?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T2TUW0Yj-1670659221063)(C:\Users\zdsss\AppData\Roaming\Typora\typora-user-images\image-20220922153459544.png)]
答案:b、c
问题三:The program shown below uses the Pthreads API. What would be output from the program at LINE C and LINE P?
LINE C | LINE P |
---|---|
CHILD: value=5 | PARENT: value=0 |
Ubuntu系统下验证:
问题四:请说明三种多线程模型及其优缺点。
多对一 | 一对一 | 多对多 | |
---|---|---|---|
说明 | 多个用户级线程映射到单个内核线程 | 每个用户级线程都映射到一个内核线程 | 多个用户级线程映射(m)到多个内核线程(n)(m>n) |
优点 | 开销较小 | 更好的并发性,一个用户级线程阻塞时,允许另一个用户级线程运行 | 既克服了多对一模型并发性不高的缺点,又克服了一对一模型开销大的缺点 |
缺点 | 一个用户级线程系统调用而阻塞时,整个进程也被阻塞,不能实现真正的并发 | 线程管理成本高,开销大 | \ |