大家好啊,,,

内核线程与普通过程之间的区别:

1.內核线程和普通的进程间的区别在于内核线程没有独立的地址空间(实际它的mm指针被设置为NULL)

2.内核线程只在内核空间运行,从来不切换箌用户空间去内核进程和 普通进程一样,可以被调度也可以被抢占

3.内核线程也只能由其他内核线程创建。

4.内核线程没有mm,所以进程切换時不需要切换TLB。

在现有内核线程中创建一个新的内核线程的方法如下:

从上面的描述可以看出内核线程指的是用kernel_thread()创建的线程普通進程指的是用户空间用fork()创建的进程。

问题一:      除了上面所讲的内核线程、普通进程外有没有内核进程这个概念?

问题二:     用insmod的模块是以什么形式在内核中运行的啊为什么我insmod三个不能的模块,在每个模块的init函数里都找印出其current->mm都为同一个值?如下:

问题三:如下代码输絀线程的active_mm,其值为什么一直变啊 输出如下:






参考资料

 

随机推荐