orange's学习--第八章:微内核宏内核

当一个进程需要操作系统的帮助,它可以通过系统调用让内核来替它完成一些工作。你会发现,用户进程将会有很多事情依赖于内核(因为用户进程的特权级很低,很多内存访问不到,没有IO权限)。比如我们想实现一个文件系统,最起码读写硬盘的工作要求助于内核。这里我们可以逐渐地增加系统调用,但也可以采用另一种方案,就是将这些工作剥离出来,交给一些系统进程来完成,让内核只负责它必须负责的工作,比如进程调度。这种将内核工作简单化的思想,便是微内核的基本思想。而所有工作通过系统调用扔给内核态的做法,被称为宏内核。 

      在基于宏内核的操作系统中,完成具体任务时,用户进程通过系统调用让内核来做事,直来直去,我们之前已经很熟悉了。在基于微内核的操作系统中,这个过程稍微复杂一些。在完成具体任务时,内核的角色很像是个中介。就比如我们将要实现的文件系统吧,设想用户进程P读取一个文件,首先通过内核告诉进程FS,然后FS再通过内核告诉驱动程序 (也是一个独立的进程),驱动程序读取硬盘,返回结果。这样一来,一项工作的完成变得有些曲折,需要多个进程协同工作。于是,进程间通信也就变得至关重要了。 
Minix代码文件src/kernel/proc.c,看一下函数sys_call( )的开头

    121 PUBLIC int sys_call (function, src_dest, m_ptr) 
    122 int function; /* SEND, RECEIVE, or BOTH  */ 
    123 int src_dest; /* source to receive from or dest to send to  */ 
    124 message *m_ptr; /* pointer to message  */ 
    125  { 
    126 /* The only system calls that exist in MINIX are sending and receiving 
    127  * messages.
These are done by trapping to the kernel with an INT instruction . 
    128  * The trap is caught and sys_ call ( ) is called to send or receive a message 
    129  *  (or both). The caller is always given by proc_ptr. 
    130  */ 
    ... 
    143  } 

 一个 “only”道破天机 (或者将你搞晕):在Minix中,不再像Linux 那样有许许多多的系统调用 (sys_call_table[   ]中列出的有几十个),而是仅有发送和接收消息的系统调用。通过sys_call的参数function的注释我们可以知道,系统调用的种类总共有三个,那就是SEND、RECEIVE以及BOTH。 

在Minix 中,真正的系统调用只有三个,这意味着内核不必事无巨细地处理用户进程要求的所有工作,只需要做好其 “邮局”的职能,将消息按照需求来回传送就够了。在Linux  中内核所做的工作,在Minix  中被交给专门的进程来完成。你可能一下子就明白了,原来微内核的 “微”字是让内核功能最简化的意思。 

宏内核的优势在于其逻辑简单,直截了当,实现起来也容易,而且也因为它的直接,避免了像微内核那样在消息传递时占用资源。而微内核的优势在于,它的逻辑虽相对复杂但非常严谨,结构上显得非常优雅和精致,而且程序更容易模块化,从而更容易移植。

从编程的难易程度上来看,宏内核看上去具有一定优势,因为它很直接,不需要绕弯子,但从长期来看,当内核逐渐变大,微内核的结构会更加清晰。虽然选择微内核意味着有调试起来有些困难的消息机制摆在面前,但从设计理念上来看,微内核更加 “摩登”,更“酷”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值