我已阅读此Linux - Threads and Process
我知道每个内核线程都有唯一的task_struct
但是现在我的问题是内核如何管理用户应用程序的线程,假设任何用户应用程序有12个线程,那么内核如何管理它们,每个线程都有像内核线程一样的独特task_struct
答案 0 :(得分:0)
内核在可能的情况下管理它们,即。每当从“中断”输入时,它会改变线程的状态。
有两种类型的中断:来自正在运行的线程的系统调用,或来自驱动程序的调用,来自KB,NIC,磁盘,计时器等的“真实”硬件中断,可以改变状态线程并启动一个sceduling算法运行,可能会改变在可用内核上运行的线程集。
在中断之间,内核不管理任何内容,因为它没有输入。
当正在运行的线程使系统调用创建新线程时,将引发task_struct。新线程已准备就绪,只要调度算法将其分派到核心上,就会运行。