在linux中退出内核线程

我在这里问你一个进程和Linux中的线程之间的区别。 我知道linux的一个线程只是一个“任务”,与父亲共享处理他们需要共享的东西(地址空间和其他重要信息)。 我也知道这两者正在创建调用相同的函数('clone()'),但仍然存在我缺少的东西:线程退出时会发生什么? Linux内核中调用了哪些函数? 我知道当一个进程退出时会调用do_exit函数,但在这里或其他地方应该有一种方法来理解它是否只是一个线程退出或整个进程。 你能解释我这个事情还是重定向到一些教科书? 我试过'了解linux内核',但我对它并不满意。 我问这个问题是因为需要将一些东西添加到task_struct结构中,但是我需要区分如何管理进程及其子进程的这些信息。

谢谢。


exit()系统调用退出单个线程, exit_group()系统调用退出整个POSIX进程(“线程组”)。


进程和线程之间的主要区别在于,除了每个其他进程之外,进程都在自己的虚拟内存空间中运行。 这意味着两个进程无法访问彼此的数据。 两个进程交互的唯一途径是通过操作系统以某种方式(共享内存段,信号量,套接字等)。

另一方面,线程在其创建过程中都存在。 这意味着线程可以访问同一进程中任何其他线程所具有的所有相同数据(变量,指针,句柄等)。 这是主要的区别。

这有一些影响。 例如,当进程由于某种原因而终止时,它的所有线程都会随之运行。 在线程中出现多处理错误,比如破坏数据也容易得多,因为没有什么东西会迫使你使用你真正应该使用的操作系统同步功能。

链接地址: http://www.djcxy.com/p/87877.html

上一篇: Kernel thread exit in linux

下一篇: Overriding functionality with modules in Linux kernel