Linux内核空间中的进程

时间:2015-01-25 10:10:37

标签: linux linux-kernel linux-device-driver embedded-linux archlinux

在用户空间中,我们可以通过在程序中执行程序或调用fork来创建进程,内核将为每个用户空间进程创建进程描述符(task_struct)。

在内核空间中是否存在任何称为进程的概念,如果是这样,它们将如何创建?

根据我的理解,内核空间将使用kernel_thread()等在内核空间中创建,kernel_thread()在内部调用do_fork(),因此内核线程也使用task_struct表示? / p>

如果使用task_struct表示用户空间进程和内核空间线程,那么调度程序将如何调度用户空间进程和内核空间线程?

2 个答案:

答案 0 :(得分:2)

是的,它们都是通过task_struct处理的。

关键内核线程具有RT("实时")调度程序类,它优先于通常用于用户空间线程的CFS调度程序。 。请检查你的ps:

# ps ax --format uname,pid,ppid,tty,cmd,cls,pri,rtprio | egrep '(FF|RR)'

(内核线程显示在方括号中)

但是,正如您所看到的,许多内核线程都有TS调度程序。我不认为有理由让所有内核线程实时。例如,您可以通过VLC播放器显示的情绪场景推迟回写到磁盘。

答案 1 :(得分:1)

此外,我认为即使POSIX线程与其他线程共享内存段(例如堆,全局变量)也由task_struct处理。