常用内核架构

yizhihongxing

 

本文分享自天翼云开发者社区常用内核架构》,作者: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日

相关文章

  • python动态规划算法实例详解

    下面是关于“Python动态规划算法实例详解”的完整攻略。 1. 动态规划算法简介 动规划算法是一种用于解决最优化的算法,它将问题分解为子问题,并使用递推的方式求解子问题的最优解,最终得到原问题的最优解。在Python中,我们可以使用动态规划算法来解决一些复杂的问题,例如背包问题、最长公共子序列问题等。 2. Python实现动态规划算法 2.1 背包问题 …

    python 2023年5月13日
    00
  • Python强化练习之Tensorflow2 opp算法实现月球登陆器

    Python强化练习之Tensorflow2opp算法实现月球登陆器 本文将介绍如何使用Tensorflow 2.0实现opp算法来控制月球登陆器的着陆。我们将介绍opp算法的原理实现步骤,并提供两个示例,分别演示如何使用Python实现简单和复杂的月球着陆控制。 opp法原理 opp算法是一种基于模型预测控制(MPC)的控制法。该算法通过预测未来状态来计算…

    python 2023年5月14日
    00
  • AtCoder Beginner Contest 300

    A – N-choice question (abc300 a) 题目大意 给定一个元素互不相同的数组\(c\)和 \(a,b\),找到 \(i\)使得 \(c_i = a + b\) 解题思路 直接for循环寻找即可。 神奇的代码 #include <bits/stdc++.h> using namespace std; using LL = …

    算法与数据结构 2023年4月30日
    00
  • C语言数据结构树的双亲表示法实例详解

    C语言数据结构树的双亲表示法实例详解 什么是双亲表示法 在树上,每个节点都有且仅有一个父节点(根节点除外)。对于一个树结构,我们可以使用许多方法来表示这个树,其中最常见的一种方法是双亲表示法。该表示法使用一个一维数组来存储树的节点,数组的下标即为该节点的编号,数组的值则表示该节点的父节点编号。 当一个节点没有父节点时,该节点即为根节点。 双亲表示法的优缺点 …

    数据结构 2023年5月17日
    00
  • Java数据结构之链表相关知识总结

    Java数据结构之链表相关知识总结 链表是一种非常常用的数据结构,它有许多实际应用,比如链表可以用来实现栈、队列、散列表和图等数据结构。在Java语言中,链表的实现方式主要有单向链表、双向链表和循环链表。 单向链表 单向链表是一种链表结构,每个节点包含两个元素:节点值和一个指向下一个节点的引用。链表的头结点(第一个节点)不包含值,仅包含指向链表中第一个实际节…

    数据结构 2023年5月17日
    00
  • 【ACM算法竞赛日常训练】DAY10题解与分析【月月给华华出题】【华华给月月出题】| 筛法 | 欧拉函数 | 数论

    DAY10共2题: 月月给华华出题 华华给月月出题 难度较大。 ? 作者:Eriktse? 简介:211计算机在读,现役ACM银牌选手?力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)?? 原文链接(阅读原文获得更好阅读体验):https://www.eriktse.com/algorithm/110…

    算法与数据结构 2023年4月17日
    00
  • Python实现KNN(K-近邻)算法的示例代码

    下面是详细讲解“Python实现KNN(K-近邻)算法的示例代码”的完整攻略,包括算法原理、Python实现和两个示例。 算法原理 KNN(K近邻)算法是一种基于实例的学习算法,其主要思想是通过计算样本间的距离,找到与目标样本最近的K个样本,然后根据这K个样本的类别,来预测目标样本的类别。 KNN算法的实现过程如下: 计算目标样本与每个样本之间的距离。 选取…

    python 2023年5月14日
    00
  • 解读python如何实现决策树算法

    解读Python如何实现决策树算法 决策树算法是一种常用的机器学习算法,它可以用于分类和回归问题。在本文中,我们将详细介绍Python中如何实现决策树算法,并提供两个示例,以说明如何使用Python实现决策树算法。 决策树算法的实现 在Python中,我们可以使用scikit-learn库来实现决策树算法。下面是一个使用scikit-learn库实现决策树算…

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