首页 > 其他分享 >常用内核架构

常用内核架构

时间:2023-04-20 17:58:07浏览次数:46  
标签:常用 架构 消息 应用程序 API 内核 微内核 内存

 

本文分享自天翼云开发者社区《常用内核架构》,作者: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 结构良好,层面分明,利于功能扩展,不容易产生问题且性能稳定。

 

标签:常用,架构,消息,应用程序,API,内核,微内核,内存
From: https://www.cnblogs.com/developer-tianyiyun/p/17337722.html

相关文章

  • linux架构day04:ssh远程管理服务实践
    ssh远程管理服务实践linuxssh端口:22加密传输数据支持root用户telnet端口:23明文传输数据不支持root用户windowsrdp端口:3389remotedesttopprotoclssh基本概述SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输。确......
  • 爬虫常用方法
    1.selenium转beautifulsoup:pageSource=driver.page_sourcesoup=BeautifulSoup(pageSource,'html.parser') 2.bs4查找页面内容:resultPages=soup.find(text=re.compile(u'查询失败,请重新查询!$'))print('resultPages:'+str(resultPages))......
  • 一文搞定接口幂等性架构设计方案
    幂等性介绍现如今很多系统都会基于分布式或微服务思想完成对系统的架构设计。那么在这一个系统中,就会存在若干个微服务,而且服务间也会产生相互通信调用。那么既然产生了服务调用,就必然会存在服务调用延迟或失败的问题。当出现这种问题,服务端会进行重试等操作或客户端有可能会进行......
  • 常用正则表达式
    1、日期格式yyyy-MM-dd包括正确性验证^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$2、日期格式yyyy-MM包括正确性验证^[0-9]{4}-(((0[13578]|(10|12)))|(02-(0[1-9]|[1-2][0-9]))|((0......
  • 2 01 | 基础架构:一条SQL查询语句是如何执行的?
    你好,我是林晓斌。这是专栏的第一篇文章,我想来跟你聊聊MySQL的基础架构。我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于MySQL的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最简单的表,表里只有......
  • Linux常用命令
    1.PWD命令:显示用户当前所在目录2.ls命令:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息格式ls[选项][目录或文件]3.cd命令:改变工作目录。将当前工作目录改变到指定的目录下4.grep命令:用于查找文件里符合条件的字符串5.find命令:用来......
  • MySQL常用命令
    查询所有数据库名![image]showdatabases;(https://img2023.cnblogs.com/blog/2805463/202304/2805463-20230420144431240-201364771.png)(使用哪个数据库)use[databasename];(查询数据库下的所有表名)showtables;(查询表中数据)select*from[tablename];(查询表结构)des[tab......
  • 19 18 | 架构设计,专业分工和协作精神的体现
    你好,我是乔新亮。今天,我想和你聊聊,关于架构设计的一些认知和体会。作为技术人,最常接触的概念,恐怕就是架构设计了。即便是初出茅庐的新手程序员,可能也听说过6大设计原则与23种设计模式。因为,要成为管理者或技术专家,架构设计绝对是你绕不开的槛。因此,关于架构设计的书和课程非......
  • 18 17 | 架构决策,是技术管理者最重要的能力
    你好,欢迎来到我的专栏:「乔新亮的CTO成长复盘」第三章——也是最后一章:「对专业成长的复盘」,我是乔新亮,很高兴能见到你。说起来真的有点感慨,自从10月26日专栏上线起,眨眼间,我们共同度过了一月有余的时光。在这段时间里,有超过3500人加入课程,与你我一起成长。专栏共发布了......
  • Vue3+TS+Node打造个人博客(后端架构)
    在使用Express搭建后端服务时,主要关注的几个点是:路由中间件和控制器SQL处理响应返回体数据结构错误码Web安全环境变量/配置路由和控制器路由基本上是按模块或功能去划分的。首先是按模块去划分一级路由,各个模块的子功能相当于是用二级路由处理。简单举个例子,/article......