操作系统学习笔记(三) ---线程

目录

例题

概念部分

线程的特点

多线程模型(用户线程&内核线程)

用户线程:

内核线程:

轻量级线程(LightWeight Process)

小结:程序在内存中的分布&进程与线程比较

程序在内存中的分布(参考网上的)

进程与线程的比较


例题

1.What are two differences between user-level threads and kernel-level threads? Under what circumstances is one type better than the other?

Answer:

用户线程和内核线程的不同是:

1) 站在操作系统的角度,用户线程是不被操作系统知道的,它由用户进程创建与管理;而内核线程由操作系统的调度算法调度,因此是被操作系统所得知的。

2) 针对多对一或多对多的线程模型,用户线程可以直接由线程库调度,而内核线程则需要由内核调度,也就是上文所说的调度算法。 对于用户线程和内核线程在不同的状况下的优劣比较:

内核线程比用户线程好的情况:

① 针对内核是单线程的情况,内核线程优于用户线程。因为任何执行阻塞系统调用的用户线程都会导致整个进程阻塞,即使应用程序中可以运行其他线程。例如,有两个进程a和b。进程a有2个内核线程,而进程b有2个用户线程。如果a中的一个线程被阻塞,它的第二个线程不会受到影响。但是对于b,如果一个线程被阻塞(比如I/O),整个进程b和第二个线程就会被阻塞。

② 针对多处理器环境,内核线程优于用户线程,因为内核线程可以在不同的处理器上同时运行,而即使有多个处理器可用,进程的用户线程也只能在一个处理器上运行。 

用户线程比内核线程好的情况:

对于时间共享型的内核,用户线程优于内核线程,因为共享系统上下文切换经常发生。内核线程之间的上下文切换具有很高的开销,几乎与进程相同,而与内核线程相比,用户线程之间的上下文切换几乎没有开销。

 

2.Describe the actions taken by a kernel to context-switch between kernel- level threads.

Answer:

切换内核线程上下文时,首先操作系统会从用户态转到内核态,然后内核在内核态保存正在关闭的线程所保存的cpu的寄存器,并恢复正在调度的新线程的cpu的寄存器。

内核线程的上下文切换需要先保存被切换线程的状态信息(包括cpu各寄存器的值和程序计数器在某一时间点的内容等)并加载切换线程的状态信息。

与进程上下文切换的区别:不需要切换PCB,但两者都要记录寄存器信息。

 

3.Which of the following components of program state are shared across threads in a  multithreaded proces?

a. Register values

b. Heap memory

c. Global variables

d. Stack memory

Answer:

线程之间共享堆和全局变量。因为堆是在进程空间中开辟出来的,所以肯定是跨线程共 享的;同理,全局变量是整个程序所共享的,也应由线程共享。而每个线程都会独立地维护属于自己的寄存器与栈。

 

4.Amdahl's Law

 

5.

Consider the following code segment:

pid t pid;

pid = fork();

if (pid == 0) { /* child process */

fork();

thread create( . . .);

}

fork();

 

a. How many unique processes are created?

b. How many unique threads are created?

Answer:

如果一个进程中有多个线程,fork()函数会将这些线程copy吗?

参考链接http://linux.die.net/man/2/fork

The child process is created

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值