首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

内核栈~ 内核线程 ~用户线程 之间关系 有关问题

2012-09-28 
内核栈~ 内核线程 ~用户线程 之间关系 问题问下 一个进程的内核栈是有一个还是可能有多个(多个线程)?第二

内核栈~ 内核线程 ~用户线程 之间关系 问题
问下 一个进程的内核栈是有一个还是可能有多个(多个线程)?
第二个问,Linux中 用户线程和核心线程有什么关系吗?
一个用户线程会对应拥有一个核心线程吗,像WINDOWS一样?

[解决办法]
问下 一个进程的内核栈是有一个还是可能有多个(多个线程)?
A: 每个kernel thread各有一个kernel stack.
第二个问,Linux中 用户线程和核心线程有什么关系吗?
A:没有关系,kernel thread是独立于user space的。
一个用户线程会对应拥有一个核心线程吗,像WINDOWS一样?
A:不一定,应当说linux kernel开发者认为功能实现用 kernel thread是very ugly,一般用tasklet or work queue.
[解决办法]
一个进程的内核栈是有一个还是可能有多个(多个线程)?
--------------------
linux每个线程都有自己的task_struct ,其中有thread_struct,最终是ksp记录内核栈
线程是最小的调度单位,理论上每个线程都得有自己的内核栈,才能保证调度不出问题。

用户线程和内核线程的区别主要是内核线程task_struct的mm为空,即不拥有用户态内存空间。
linux下用户线程也能进入内核态,所以不需要一个内核线程来配合,只要同一个task_struct就能描述。

热点排行