operating-system - Minix/Microkernel 中系统调用和内核调用的区别
问题描述
从概念上讲,Minix 中的系统调用和内核调用有什么区别?
我有点理解像 Linux 这样的操作系统中的这种差异,但是在像 Minix 这样的微内核中呢?两种类型的调用是否相同?
解决方案
在实现方面,微内核和单片内核中的系统调用是相同的——系统调用捕获内核,内核处理请求。
最大的不同是系统调用的目的——让我们以文件系统为例。
在单片内核中,大多数服务都在内核内部实现,包括文件系统。因此,要打开文件,对文件进行操作,需要进行系统调用。
在微内核中,大多数服务都是在用户级别实现的,需要系统调用的内容实际上取决于系统的架构方式。在服务被组件化的类 Minix 系统中,向文件系统服务器发出文件系统请求。这仍然涉及系统调用——但系统调用是向文件系统服务器编码所需操作的 IPC 消息,而不是对内核的特定操作请求。内核只是简化了消息传输。
正如我所说,这取决于系统架构。基于微内核的系统可以有一个架构,其中文件系统包含在访问它的进程中,因此大多数文件操作不需要系统调用(但您的存储驱动程序可能需要一些系统调用)。
推荐阅读
- r - 罗马二项式回归
- gtk3 - 如何更改 Gtk3 TextView 的插入符号和换行符呈现行为?
- xml - 是否有任何 gradle 插件来验证 XML?
- asp.net - 为什么我的 ASP.NET 应用程序以域用户身份运行,在出现 Active Directory 问题后需要重新启动才能使用 PrincipalContext?
- chatbot - 延迟发送消息
- openmdao - 如何在 OpenMDAO 2.5.0 的可重新配置模型中更新连接大小?
- sql - 获取最新记录或第一笔交易(销售) BigQuery SQL 标准
- javascript - ajax 不发送变量,发送未定义
- javascript - AngularJS 中的 Session 或 LocalStorage CRUD 表
- apache-spark - Spark:驱动内存参数的使用