内核的进程管理与调度
不同操作系统下,进程管理与调度的实现和机制有很大不同。对于上层应用(特别是跨平台)的开发,进程管理与调度显得不那么重要;但是,对于贴近操作系统的底层开发,就非常有必要了解Linux中进程的管理与调度
1.进程与线程的本质与实现
- Linux中,进程就是执行中的程序及其相关的资源与信息(如文件描述符、当前状态等);而线程就是一种特殊的进程,所谓的多线程程序,其实就是多个共享资源的进程。所以,Linux不区分进程与线程,内核以进程为单位进行调度
- 内核通过一个叫task list(任务队列)的双向链表来维护进程。链表中的节点类型为task_struct俗称进程描述符,里面描述了进程的方方面面如:打开的文件fd,进程代码的地址空间,进程状态state,进程号pid