【问题标题】:Whether Linux Kernel can be thought of as a single process是否可以将 Linux Kernel 视为单个进程
【发布时间】:2013-07-16 04:20:33
【问题描述】:

Linux Kernel 是否可以被视为具有多个线程的单个进程?还有什么定义了内核中内存管理模块、调度程序、文件系统等之间的切换。

【问题讨论】:

  • @MarcusJohansson 不是作业问题
  • 内核根据定义不是一个进程(因为它在裸机上运行)。进程需要一个内核来管理!裸硬件不知道进程。
  • 然而内核多线程的!

标签: linux linux-kernel kernel


【解决方案1】:

Linux 内核不能被视为一个进程,因为这是它管理进程的职责之一。

您可以将内核视为一个大的中断处理程序。在内核将处理器授予线程后,获得控制权的唯一方法是中断(或系统调用,这也是中断)。当中断发生时,内核立即获得控制权,并适当地处理中断。此时可以调用内核的各个部分。

内核是多线程的,因为它可以同时处理不同处理器上的各种中断。另一方面,还有内核线程,它们的管理方式与用户线程相同(调度程序的内核线程和用户线程没有区别)。

【讨论】:

  • There is no difference between kernel and user threads for scheduler。那么这些内核线程是如何调度的呢?
  • 这些内核线程以与用户线程相同的方式调度,在同一个队列中,遵循相同的规则。调度器甚至不知道线程是用户线程还是内核线程。
  • @user567879 我回答你的问题了吗?
  • 内核线程的调度方式与用户线程完全相同。为了调用调度程序,内核发出schedule() 函数调用。但是进程调度本身是一个相当大的话题,用 cmets 来描述。
猜你喜欢
  • 1970-01-01
  • 2020-11-11
  • 2014-03-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 2011-08-29
  • 2011-04-05
  • 1970-01-01
相关资源
最近更新 更多