【问题标题】:Are the services offered by the linux kernel implemented as kernel threads?linux内核提供的服务是作为内核线程实现的吗?
【发布时间】:2013-09-08 08:36:36
【问题描述】:

类似于进程管理内存管理

schedulermemory manager 是否作为内核线程在需要时在 cpu 上运行?如果不是,内核如何处理它们?

它们是像进程、任务还是在需要时执行的某些代码行?

【问题讨论】:

    标签: multithreading linux-kernel operating-system


    【解决方案1】:

    有些是,有些不是。 “进程管理”和“内存管理”这两个术语有点宽泛,涵盖了相当多的内核代码。

    对于内存管理,对mmap() 的调用只需要更改一些数据结构,并且可以由当前线程完成,但如果页面被换出,它将由kswapd 完成,这是一个内核线程。

    您可能会认为调度程序是一种特殊情况:由于调度程序负责调度所有线程,因此它本身不是线程并且不会在任何线程上执行(否则它需要自行调度......安排自己,如果它必须先安排自己才能做到这一点?)。您可能会认为调度程序在必要时直接在每个处理器内核上运行。

    【讨论】:

    • +1 仅用于最后一段。我知道操作系统调度程序/调度程序是如何工作的,直到我读到:)
    • 那么,假设内核就像一大块代码,调度程序、内存管理器、中断处理程序等......需要时执行?
    • 您可以将任何程序视为“代码的大块”,所以这是真的,但不是特别有用的抽象。 “内存管理器”实际上由几个不同的部分组成,例如交换器、故障处理程序和页面缓存。交换器是线程,故障处理程序是中断处理程序,页缓存是数据。由于交换器是一个线程,它会在调度时执行。由于错误处理程序是一个中断处理程序,因此它直接运行以响应页面错误。
    猜你喜欢
    • 1970-01-01
    • 2011-07-15
    • 2010-12-20
    • 2016-05-28
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多