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

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

文章目录

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

大内核与微内核

总览

在这里插入图片描述

操作系统的内核

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

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

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

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

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

而大内核只需要两次变态

在这里插入图片描述

小结

在这里插入图片描述

分层结构与模块化与外核

总览

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

分层结构

在这里插入图片描述

每层只会下一层的接口

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

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

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

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

模块化

在这里插入图片描述

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

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

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

宏内核,微内核

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

在这里插入图片描述

在这里插入图片描述

外核

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

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

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

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

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

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

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

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



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

相关文章

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

SpringBoot利用树形结构优化查询速度

《SpringBoot利用树形结构优化查询速度》这篇文章主要为大家详细介绍了SpringBoot利用树形结构优化查询速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一个真实的性能灾难传统方案为什么这么慢N+1查询灾难性能测试数据对比核心解决方案:一次查询 + O(n)算法解决

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径