日期:2014-05-16  浏览次数:20753 次

关于线程和进程
最近在看《现代操作系统》,看完了process 和 thread 有点晕,特来请教大家。

1)书上讲线程分为 user-level thread 和 kernel-level thread。说 user-level thread 因为没有时钟中断而在切换线程上会很困难,kernel-level thread没有这方面的问题,但是会增加CPU的开销。
我的问题就是,为什么 kernel-level thread 开销会很大???我认为只要是涉及到切换任务的问题,开销都应该一样的啊(很明显,我的想法是错滴)

2)在用程序实现上,这两种有什么区别,或者说这两种方式是怎么实现的?

3)书上原文“with kernel-level threads, having a thread block on I/O does not suspend the entire process as it does with user-level threads”为什么会有这两种不同的结果的产生???

求大牛出来解释,不胜感激~~

------解决方案--------------------
不了解user-level thread 和 kernel-level thread的区别,
但是第三点,在linux上,一个线程阻塞了,并不会阻塞整个进程啊!难道是操作系统不一样?在linux上,线程又叫轻量级进程,与进程的区别在于地址空间是否独立。
------解决方案--------------------
linux下进程比较好用,windows下线程比较好用
------解决方案--------------------
说说我的理解:内核态的线程运行在内核态,需要内核去调度,比较繁杂,而用户态的线程运行在用户态调度,内核应该不知情或是不感兴趣,因此不增加CPU开销。
------解决方案--------------------
内核态有时钟在走,最简单的进程调度策略就是按时间优先,或按时间片轮流运行或切换进程;
用户态进程,需要用户自己来切换,如果用户不能够获得时钟中断,用户就不知何时应该切换进程。
------解决方案--------------------
探讨

引用:

说说我的理解:内核态的线程运行在内核态,需要内核去调度,比较繁杂,而用户态的线程运行在用户态调度,内核应该不知情或是不感兴趣,因此不增加CPU开销。

恩,你跟书上说的一样,我想问的是为什么会出现这两种不同情况?