前言:
从内核的角度来说,它并没有线程这个概念。Linux把所有线程都当做进程来实现。内核并没有准备特别的调度算法或者定义特别的数据结构来表示线程。相反,线程仅仅被视为一个与其他进程共享某些资源的进程。每个线程都拥有唯一属于自己的task_struct,所以在内核中,它看起来就像是一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间)
一.内核线程
1.内核经常需要在后台执行一些操作。这种任务可以通过内核线程 (kernel thread)完成。
2.内核线程和普通的进程间的区别在于内核线程没有独立的地址空间,(实际它的mm指针被设置为NULL)
3.内核线程只在内核空间运行,从来不切换到用户空间去。内核进程和 普通进程一样,可以被调度,也可以被抢占
4.内核线程也只能由其他内核线程创建。在现有内核线程中创建一个新的内核线程的方法如下:
intkernel_thread(int (*fn)(void *),void *arg, unsigne
本文探讨了Linux内核中线程与进程的概念。内核并不区分线程,而是将所有线程视为进程处理,每个线程都有自己的task_struct。内核线程没有独立的地址空间,仅在内核空间运行,由其他内核线程创建,常用于后台操作。它们通过kernel_thread函数创建,并在创建的函数中无限循环执行,直到系统重启或任务完成。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



