常用内核架构

 

本文分享自天翼云开发者社区常用内核架构》,作者:JackW

 

宏内核

应用程序调用内存分配的 API(应用程序接口)函数。

处理器切换到特权模式,开始运行内核代码。

内核里的内存管理代码按照特定的算法,分配一块内存。

把分配的内存块的首地址,返回给内存分配的 API 函数。

内存分配的 API 函数返回,处理器开始运行用户模式下的应用程序,应用程序就得到了一块内存的首地址,并且可以使用这块内存了。

特点:功能耦合,效率高;但是开发一个新的功能也得重新编译、链接、安装内核,因为它没有模块化,没有扩展性、没有移植性,高度耦合在一起,一旦其中一个组件有漏洞,内核中所有的组件可能都会出问题。

常用内核架构

微内核

应用程序发送内存分配的消息,这个发送消息的函数是微内核提供的,相当于系统 API,微内核的 API(应用程序接口)相当少,极端情况下仅需要两个,一个接收消息的 API 和一个发送消息的 API。

处理器切换到特权模式,开始运行内核代码。

微内核代码让当前进程停止运行,并根据消息包中的数据,确定消息发送给谁,分配内存的消息当然是发送给内存管理服务进程。

内存管理服务进程收到消息,分配一块内存。

内存管理服务进程,也会通过消息的形式返回分配内存块的地址给内核,然后继续等待下一条消息。

微内核把包含内存块地址的消息返回给发送内存分配消息的应用程序。

处理器开始运行用户模式下的应用程序,应用程序就得到了一块内存的首地址,并且可以使用这块内存了。

常用内核架构 

特点:微内核牺牲一定性能,具有不少优点,首先,系统结构相当清晰利于协作开发。其次,系统有良好的移植性,微内核代码量非常少,就算重写整个内核也不是难事。最后,微内核有相当好的伸缩性、扩展性,因为那些系统功能只是一个进程,可以随时拿掉一个服务进程以减少系统功能,或者增加几个服务进程以增强系统功能。

 

Darwin-XUN 内核

Darwin是苹果公司2000年开发的开源OS。集成了卡耐基梅隆大学的微内核Mach和伯克利大学的类Unix操作系统,后者提供一整套的操作系统服务。

常用内核架构

 

Windows NT(new Technology)

微软为了获得市场,从不稳定的Windows3.1、95/98、ME之后推出NT,后续的XP更是成为其商业巅峰。

常用内核架构

 

 

总结

Linux 性能良好,结构异常复杂,不利于问题的排查和功能的扩展,而 Darwin-XNU 和 Windows 结构良好,层面分明,利于功能扩展,不容易产生问题且性能稳定。

 

原文链接:https://www.cnblogs.com/developer-tianyiyun/p/17337722.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:常用内核架构 - Python技术站

(0)
上一篇 2023年4月20日
下一篇 2023年4月23日

相关文章

  • Java数据结构顺序表的详细讲解

    Java数据结构顺序表的详细讲解 什么是顺序表? 顺序表是一种线性结构,它通过一段连续的存储空间来存储一组元素,每个元素占用一个固定大小的存储单元,元素之间按照一定的顺序紧密排列。 顺序表的实现 在Java中,顺序表可以通过数组实现。数组是一种非常基础的数据结构,它可以用来存储相同类型的数据,数组元素的地址是连续的,因此可以通过下标访问数组中的元素。 实现步…

    数据结构 2023年5月17日
    00
  • 用Python给图像算法做个简单应用界面

    下面是详细讲解“用Python给图像算法做个简单应用界面”的完整攻略,包含两个示例说明。 应用界面的作用 应用界面是一种非常有用的工具,可以帮助用户更方便地使用图像算法。应用界面可以提供以下功能: 显示图像 提供算法选项 显示算法结果 保存算法结果 应用界面可以使用户更轻松地使用图像算法,而不需要编写代码或使用命令行界面。 Python实现应用界面 Pyth…

    python 2023年5月14日
    00
  • Python实现的概率分布运算操作示例

    Python实现的概率分布运算操作示例 概率分布是概率论中的重要概念,它描述了随机变量在不同取值下的概率分布情况。在Python中,我们可以使用许多库来进行概率分布运算,例如NumPy、SciPy和pandas等。这些库提供了许多函数和方法,用于生成、计算和可视化各种概率分布。下面是一个Python实现的概率分布运算操作示例,包含两个示例说明。 示例1:正态…

    python 2023年5月14日
    00
  • Python数据结构之栈详解

    Python数据结构之栈详解 什么是栈? 栈(stack)是一种数据元素只能在一端进行插入和删除操作的线性表。 栈的特点是后进先出,即在一个非空栈中,最后放入的元素最先被取出。 栈的操作 栈操作的基本有两个: push(elem):插入一个新的元素elem到栈中。 pop():弹出栈顶的元素,并返回这个被弹出元素的值。 此外还有一个用于查询栈顶元素的操作: …

    数据结构 2023年5月17日
    00
  • Python编程实现使用线性回归预测数据

    下面是详细讲解“Python编程实现使用线性回归预测数据”的完整攻略,包含两个示例说明。 线性回归简介 线性回归是一种用于建立变量之间线性关系的机器学习算法。它可以用于预测一个变量的值,给定另一个或多个变量的值。线性回归的目标是找到一条直线,使得所有数据点到该直线的距离之和最小。 Python编程实现使用线性回归预测数据 下面是Python编程实现使用线性回…

    python 2023年5月14日
    00
  • Python实例详解递归算法

    下面是关于“Python实例详解递归算法”的完整攻略。 1. 递归算法概述 递归算法是一种基于函数调用自身的算法,它的基本思想是将一个大问题分解成若干个小问题,然后递归地解决每个小问题,最终将所有小问题的解合并成大问题的解。在Python中,我们可以使用递归算法来解决各种问题,例如计算阶乘、斐波那契数列等。 2. 递归算法实现 2.1 计算阶乘 阶乘是一个正…

    python 2023年5月13日
    00
  • Java数据结构之双向链表的实现

    Java数据结构之双向链表的实现 一、双向链表的定义 双向链表是一种包含两个指针的链表数据结构,每个节点都有两个指针,一个指向前一个节点,一个指向后一个节点。 二、双向链表的实现 1. 定义节点 首先,我们需要定义一个节点类,包含节点的值,指向前一个节点的指针pre和指向后一个节点的指针next,代码如下: public class Node { int v…

    数据结构 2023年5月17日
    00
  • python数据结构之图深度优先和广度优先实例详解

    下面是详细讲解“Python数据结构之图深度优先和广度优先实例详解”的完整攻略。 1. 什么是图? 图是由节点和边组成的一种数据结构。节点表示图中的元素,边表示节点之间的关系。图可以用来解决各种实际问题,如社交网络、地图等。 2. Python实现图的深度优先和广度优先遍历 2.1 深度优先遍历 下面是Python实现图的深度优先遍历的示例: def dfs…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部