窥探 kernel,just for fun --- 内核线程
2012-04-28 20:46
344 查看
本系列文章由张同浩编写,转载请注明出处:/article/1391220.html
邮箱:muge0913@sina.com
由于内核对进程和线程不做区分,所以内核线程(kernel thread)又称为内核进程(kernel process)。注意不能把普通进程中的线程理解为进程。
内核线程和普通进程的区别:
1、内核线程只运行在内核态,普通进程可以运行在内核态和用户态。
2、内核线程只能调用内核函数,普通进程可以通过系统调用调用内核函数。
3、内核线程只能运行在大于PAGE_OFFSET的地址空间,而普通进程可以4G的地址空间(除了访问用户空间的3G,通过系统调用可以访问内核空间的1G空间)。
由于内核线程不受用户态上下文的拖累,常被内核用于执行一些重要的任务,如刷新磁盘高速缓存,交换不同的页面。
在linux系统中用ps –ef命令看到的带“d”结尾的进程就是内核线程。
内核线程由kernel_thread在内核态被创建。
[cpp] view
plaincopyprint?
在linux2.6.xxx/arch/arm/include/asm/processor.h
/*
* Create a new kernel thread
*/
extern intkernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
参数说明:
fn:新创建的内核线程要执行的函数。
arg:fn的参数。
flags:和do_fork中的clone_flags作用相似。在kernel_thread中do_fork缺省使用了CLONE_VM.
邮箱:muge0913@sina.com
由于内核对进程和线程不做区分,所以内核线程(kernel thread)又称为内核进程(kernel process)。注意不能把普通进程中的线程理解为进程。
内核线程和普通进程的区别:
1、内核线程只运行在内核态,普通进程可以运行在内核态和用户态。
2、内核线程只能调用内核函数,普通进程可以通过系统调用调用内核函数。
3、内核线程只能运行在大于PAGE_OFFSET的地址空间,而普通进程可以4G的地址空间(除了访问用户空间的3G,通过系统调用可以访问内核空间的1G空间)。
由于内核线程不受用户态上下文的拖累,常被内核用于执行一些重要的任务,如刷新磁盘高速缓存,交换不同的页面。
在linux系统中用ps –ef命令看到的带“d”结尾的进程就是内核线程。
内核线程由kernel_thread在内核态被创建。
[cpp] view
plaincopyprint?
在linux2.6.xxx/arch/arm/include/asm/processor.h
/*
* Create a new kernel thread
*/
extern intkernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
参数说明:
fn:新创建的内核线程要执行的函数。
arg:fn的参数。
flags:和do_fork中的clone_flags作用相似。在kernel_thread中do_fork缺省使用了CLONE_VM.
相关文章推荐
- 窥探 kernel,just for fun --- do_fork
- 窥探 kernel,just for fun --- copy_process
- 窥探 kernel,just for fun --- 浅析do_exit
- 窥探 kernel,just for fun --- 有关系统调用的几个知识点
- 窥探 kernel,just for fun --- 系统调用在用户空间的访问
- 窥探 kernel,just for fun --- 系统调用过程分析
- 窥探 kernel,just for fun --- 分析sys_reboot
- 窥探 kernel,just for fun --- 系统调用在用户空间的访问
- 窥探 kernel,just for fun --- 有关系统调用的几个知识点
- 窥探 kernel,just for fun --- sys_fork,sys_vfork,sys_clone,kernel_thread
- 窥探 kernel,just for fun --- task_struct
- 窥探 kernel,just for fun --- sys_fork,sys_vfork,sys_clone,kernel_thread
- 窥探 kernel,just for fun --- 动手添加系统调用(ARM)
- 使用内核模块hook内核系统调用(just for fun)
- 图像的ASCII码显示v1—ASCII art--just for fun
- 尺度不变特征变换匹配算法详解Scale Invariant Feature Transform(SIFT) Just For Fun
- Just for fun----zjfc 并查集操作
- 驱动程序找不到内核头提示 You do not appear to have the sources for the “kernel version” kernel install 问题
- 内核线程创建: kthread_create vs kernel_thread
- 小小钢琴 囧。。。just for fun