操作系统-操作系统体系结构(内核 外核 模块化 宏内核 微内核 分层结构)

本文主要是介绍操作系统-操作系统体系结构(内核 外核 模块化 宏内核 微内核 分层结构),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 大内核与微内核
    • 总览
    • 操作系统的内核
    • 大内核与微内核的性能差异
    • 小结
  • 分层结构与模块化与外核
    • 总览
    • 分层结构
    • 模块化
    • 宏内核,微内核
    • 外核

大内核与微内核

总览

在这里插入图片描述

操作系统的内核

操作系统的核心功能在内核中
在这里插入图片描述
对于与硬件关联程度的程序
在这里插入图片描述
由于进程管理,存储器管理,设备管理这些工作与硬件联系较少,有时候不会把它们放到内核中。
所以有的操作系统不把这些功能放到内核中,只保留与硬件接触最紧密的部分

所以此时就有两种内核设计方法

属于内核的功能需要运行在内核态,不属于内核的功能运行在用户态
在这里插入图片描述

大内核与微内核的性能差异

采用微内核时,进程管理,存储管理,设备管理都涉及到需要请求内核的工作,此时需要变态

而大内核只需要两次变态

在这里插入图片描述

小结

在这里插入图片描述

分层结构与模块化与外核

总览

在这里插入图片描述
在这里插入图片描述

分层结构

在这里插入图片描述

每层只会下一层的接口

从底层开始调试,从而保证上一层关于底一层方面的接口没有问题,从而只需关注本层的相关调试

扩充方便,只需要提供对于层与层之间的接口即可

有时候底层可能需要高层的功能,此时就与高层只能调用底层这个规定不同了,所以说难以合理定义各层的边界

不能跨层调用,此时需要一层一层往下传递
在这里插入图片描述

模块化

在这里插入图片描述

模块调用多,所以接口的定义实现有时不够完善从而使得每个模块都正好满足

都能相互调用,此时如果某个模块出现问题,可能出现的问题是调用的模块的问题,也有可能是自身模块的问题

确定接口就可以并行开发就是说确定好接口后就可以同时准备各个接口的代码实现
在这里插入图片描述

宏内核,微内核

内核中每个模块之间的依赖性很强,所以当内核中某个模块出现问题,可能会导致整个系统出现问题

在这里插入图片描述

在这里插入图片描述

外核

Exokernel
外核分配回收未经抽象(没有虚拟化或者说物理地址)的硬件资源

程序通过库函数调用普通内核的一些内核功能,也可以调用外核的一些功能

在普通操作系统中,进程申请内存空间时得到的时虚拟的地址空间(连续的),此时虚拟页面对应到实际的物理页框中,这些物理页框在内存中其实是离散的。给进程(一般是存文件)分配的外存空间也是虚拟的地址空间(连续),对应物理磁盘的存储空间也可能是离散的

外核给用户进程直接分配未经抽象的硬件资源,当用户进程经常要随机访问自己所分配到的虚拟外存空间时,此时由于实际对应的物理空间是离散的,在随机访问各个位置时可能需要大量的移动磁头。而如果采用外核分配,直接得到一块连续的物理外存空间,当随机访问各个地址时,磁头移动的距离减少,性能从而提升

外核也能申请连续物理内存空间,此时用户看到就是实实在在的物理内存地址空间。

外核需要保证硬件资源使用安全,即本进程不能访问其他进程的空间,其他进程也不能访问本进程的空间
在这里插入图片描述
一致性:每个进程申请的地址类型不同(物理地址和虚拟地址),这样对后续的管理需要有不同的处理,所以也会更复杂

虚拟地址分配时,进程访问访问自己地址空间时,此时需要查页表,将虚拟地址转换为实际物理地址
在这里插入图片描述

这篇关于操作系统-操作系统体系结构(内核 外核 模块化 宏内核 微内核 分层结构)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629406

相关文章

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

kotlin中的模块化结构组件及工作原理

《kotlin中的模块化结构组件及工作原理》本文介绍了Kotlin中模块化结构组件,包括ViewModel、LiveData、Room和Navigation的工作原理和基础使用,本文通过实例代码给大家... 目录ViewModel 工作原理LiveData 工作原理Room 工作原理Navigation 工

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree