【问题标题】:Difference between system call and kernel call in Minix/MicrokernelMinix/Microkernel 中系统调用和内核调用的区别
【发布时间】:2020-02-22 01:44:11
【问题描述】:

从概念上讲,Minix 中的系统调用和内核调用有什么区别?

我有点理解像 Linux 这样的操作系统中的这种差异,但是在像 Minix 这样的微内核中呢?两种类型的调用是否相同?

【问题讨论】:

    标签: operating-system minix microkernel


    【解决方案1】:

    在实现方面,微内核与单片内核中的系统调用是相同的 - 系统调用捕获到内核,内核处理请求。

    最大的不同在于系统调用的用途——让我们以文件系统为例。

    在单片内核中,大多数服务都在内核中实现,包括文件系统。所以要打开一个文件,对一个文件进行操作,需要一个系统调用。

    在微内核中,大多数服务都是在用户级别实现的,需要系统调用的内容实际上取决于系统的架构方式。在服务被组件化的类 Minix 系统中,向文件系统服务器发出文件系统请求。这仍然涉及系统调用——但系统调用是向文件系统服务器发送编码所需操作的 IPC 消息,而不是对内核的特定操作请求。内核只是方便了消息传输。

    正如我所说,这取决于系统架构。基于微内核的系统可以有一个架构,其中文件系统包含在访问它的进程中,因此大多数文件操作不需要系统调用(但您的存储驱动程序可能需要一些系统调用)。

    【讨论】:

    • “文件系统包含在访问它的进程中的架构”将是外部内核,而不是微内核。当然有无限的混合体(例如“大部分是微内核,部分是外内核,还有一点点单体”)。
    • 这取决于您使用的定义。 L4 微内核可用于构建许多不同类型的系统,包括我上面描述的系统。这并不意味着 L4 内核不是“微内核”。