Ric*_*lka 20
简短的答案:
Init 只是第一个进程;它不管理任何进程或线程。它确实创建了一些,使用内核系统调用 fork() 和 exec。
我认为您对流程是什么有一个模糊的概念。它不仅仅意味着执行一些代码。是的,内核在 init 之前执行(甚至在此之前执行引导加载程序)。但是“过程”具有以下特定定义:
因此,一旦内核初始化,它就会运行 init,然后它会生成它的配置所说的任何其他进程。
就#2 而言,所有内核的东西都在内核中。将内核视为一大块代码。同样,不是一个进程,而是一个大的代码块。内核的一部分处理内存管理,一部分处理自身的调度部分(如驱动程序等),一部分处理调度进程。
nin*_*alj 18
内核根本不像一个进程。它不会被调度,它要么代表进程运行(所谓的进程上下文或用户上下文),要么作为中断或异常的结果运行(所谓的中断上下文)。
也就是说,Linux 内核会产生内核线程来执行某些任务,或者避免在中断上下文中运行某些内容过长的时间(这就是 ksoftirqd 线程所做的,避免可能导致的过度延迟,例如:丢失音频,...) .
您可以在ps命令的输出中看到内核线程。它们很容易识别:它们的名称在括号之间。其中一些每个CPU运行一个实例,CPU以斜线后的数字标识,因此[ksoftirqd/0]是CPU 0上的ksoftirqd实例。
不,不是......内核(和内核扩展)直接加载到内存中。如果内核中存在不安全代码,那么没有什么可以阻止它和大麻烦。
除此之外,内核基本上在进程之间执行/切换。显然,实际运行进程的东西本身并不是进程。
(tl;dr 1. no 2. 内核/其扩展的一部分)
| 归档时间: |
|
| 查看次数: |
16650 次 |
| 最近记录: |