内核的架构 --- 宏内核与微内核

本文对比了宏内核和微内核两种操作系统内核架构。宏内核将所有核心服务集成在一个可执行程序中,耦合度高,稳定性好但扩展性较差。微内核则仅包含基本功能,其余服务以进程形式运行,具有更好的伸缩性和移植性,但可能因消息传递带来性能损失。
摘要由CSDN通过智能技术生成

宏内核

宏内核就是把进程管理代码、 内存管理代码、 设备管理代码、 文件管理代码、 各种设备驱动程序代码以及其
他功能模块的代码经过编译, 最后链接在一起, 形成一个大的可执行程序。 这个大程序里有实现支持这些功能的所有代码, 向用户应用软件提供一些接口, 这些接口就是常说的系统API函数。 这个大程序运行在处理器的特权模式下, 这个模式通常被称为内核模式。

宏内核的结构图像:
在这里插入图片描述
宏内核如何调用系统API做内存分配功能:
1) 应用程序调用内存分配的API函数。
2) 处理器切换到特权模式, 开始运行内核代码。
3) 内核里的内存管理代码按照特定的算法, 分配一块内存。4) 把分配的内存块的首地址返回给内存分配的API函数。
5) 内存分配的API函数返回, 处理器开始运行用户模式下的应用程序, 应用程序就得到了一块内存的首地址并可以使用这块内存了。

优点:

  1. 代码耦合度非常高,内核内部的功能组件代码可以相互调用。
  2. 如果对宏内核进行精密的实现和测试,宏内核将是非常稳定高效地。

缺点:

  1. 代码耦合度高导致如果有一行代码出问题,那么整个内核将崩溃
  2. 如果要给宏内核添加一个功能,不得不将整个内核代码都全部编译,链接,再重启计算机启用新版本内核

微内核

微内核需要保证内核功能尽可能的少:仅仅只有进程调度,处理中断,内存空间映射,进程间通信等功能。 这种内核无法实际性地提供什么服务,开发者需要将实际的进程管理,内存管理,设备管理,文件管理等服务功能设计为一个个服务进程,与用户应用进程一样,只是他们很特殊,是为了专门完成传统宏内核提供的功能的。

微内核接收应用程序的请求,这个请求的传递机制叫做消息。
应用程序要传递相关服务,就得向微内核发送一条与此服务对应的消息,这条消息会被转发给相应的服务进程,由它来完成具体的服务。

在这里插入图片描述
1) 应用程序发送内存分配的消息, 这个发送消息的函数是微内核提供的, 相当于系统API。 微内核的API相当少, 极端情况下仅需要两个, 一个接受消息的API和一个发送消息的API。
2) 处理器切换到特权模式, 开始运行内核代码。
3) 微内核代码让当前进程停止运行并根据消息包中的数据, 确定发送给谁, 分配内存的消息当然是发送给内存管理服务进程。
4) 内存管理服务进程收到消息, 分配一块内存。
5) 内存管理服务进程, 也通过消息的形式返回分配内存块的地址给内核。 继续等待下一条消息。
6) 微内核把包含内存块地址的消息返回给发送内存分配消息的应用程序。
7) 处理器开始运行用户模式下的应用程序, 应用程序就得到了一块内存的首地址并可以使用这块内存了。

优势:

  1. 具有相当好的伸缩性,扩展性。可以随时拿掉一个服务进程以减少或增加系统功能
  2. 有利于清晰地协作开发
  3. 良好的移植性,内核代码很少,重写可行

缺点:

  1. 消息传递和各个服务进程的切换带来的开销很大,系统性能折扣
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值