核心级线程和用户级线程的区别

stonemason 2003-10-07 11:13:59
题目表达可能不准确,我的意思是:
通常说FreeBSD等不支持核心级线程,线程是用进程模拟的,而Windows核心支持线程。
能解释一下吗?



...全文
1200 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
stonemason 2003-10-08
  • 打赏
  • 举报
回复
"其实楼主应该这么问,线程管理机制在内核级实现和用户级实现的区别是什么。"
说到俺心坎上了!!
正在看windows核心编程,有些想不通,现在基本清楚了。
也就是内核级实现系统需要在核心态维护必要的线程管理的数据结构,用户级实现要在自己的用户态去管理,是不是?
xiaohyy 2003-10-07
  • 打赏
  • 举报
回复
就是ring0 和 ring3的区别吧。。
Agemo 2003-10-07
  • 打赏
  • 举报
回复
对不起,"用线 在switch的时候要从用户态转为内核态"这句中的‘用线’改成‘内线’。
Agemo 2003-10-07
  • 打赏
  • 举报
回复
其实楼主应该这么问,线程管理机制在内核级实现和用户级实现的区别是什么。
Although these two alternatives may seem equivalent, they differ considerably in performance. Switching threads is much faster when thread management is done in user space than when a kernel call is needed. This fact argues strongly for doing thread management in user space. On the other hand, when threads are managed entirely in user space and one thread blocks(e.g., waiting for I/O or a page fault to be handled), the kernel blocks the entire process, since it is not even aware that other threads exist.
以上引自Operating Systems: Design and Implementation, 2 Editon
Agemo 2003-10-07
  • 打赏
  • 举报
回复
内核级支持线程(以下简称内线)和用户级支持现成(用线)的区别在于:
1.内线的switch比用线的效率低,因为用线在switch的时候要从用户态转为内核态,再从内核态转为用户态,牵涉的系统工作较多,所以效率低。
2.但是当一个用线的线程block后,比如进行i/o操作,那么i/o操作就是内核态的执行,大家都知道内核态的优先级高于用户态的,那么事实上这个i/o操作就占据了cpu(当然其他进程的线程有可能跟他争夺的,因为系统毕竟在内核级支持多进程的),根本不管用线的其他线程的,因为用线的多线程管理程序本身也是用户态的,不可能中止在内核态运行的这个i/o操作而调度其他的线程。线程本来就是进程的细分,但是用线的这种情况,就跟只是支持多进程没什么多大的区别了,there are still some differences, if not none.

horin153 2003-10-07
  • 打赏
  • 举报
回复
你可能是指内核支持线程和用户支持线程?
参见西电出版社的《操作系统》教材的多线程部分,讲的很清楚。数据库(主意,不是操作系统,更不是windows)一般采用内核支持线程(由内核以线程为单位进行调度)和用户支
持线程(由用户以线程为单位调度,内核不管;而内核以进程为单位调度,这是问题的关键;当一个用户支持线程阻塞后,系统就认为整个进程阻塞,进而调度其他进程)。
stonemason 2003-10-07
  • 打赏
  • 举报
回复
No,No。
我指操作系统对线程的支持而言。
ring0 和 ring3 是i386硬件的支持。

xtmzl 2003-10-07
  • 打赏
  • 举报
回复
驱动程序可以创建核心级线程,
ring 0 和ring 3 是一个区别

核心级线程所需要得内存应该是 非分页的
vcforever 2003-10-07
  • 打赏
  • 举报
回复
我想应该是核心级线程的优先级要比用户线程的优先级高!
分配的CPU时间也相对来说多一些!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧