操作系统-操作系统结构

news2024/9/20 18:29:49

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的个人主页
🍊个人网站:小嗷犬的技术小站
🥭个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。


本文目录

  • 操作系统的目标
  • 操作系统的机制与策略
  • 操作系统复杂度管理方法(M.A.L.H)
    • 模块化(modularity)
    • 抽象(abstraction)
    • 分层(layering)
    • 层级(hierarchy)
    • 分层和层级的对比
  • 操作系统内核架构
    • 简要结构
    • 宏内核架构
      • 宏内核复杂度管理
      • 宏内核难以满足的场景与诉求
    • 微内核架构
    • 宏内核与微内核的对比
    • 外核架构
    • 多内核架构
    • 操作系统架构组合及其演替
  • 操作系统框架架构举例
    • Android 系统框架
    • ROS 系统框架


操作系统的目标

  • 用户目标:方便使用、容易学习、可靠、不易出错、高效等。
  • 系统目标:易于实现与维护、灵活、可靠、不易出错、高效等。

复杂系统的构建必须考虑内部。

  1. 不同目标之间往往存在冲突。
  2. 不同需求之间需要进行权衡。
  3. 在操作系统的发展历史中,曾多次出现因过于强调各种极致性能而导致设计结构不合理并最终失败的案例(Windows VISTA)。

操作系统的机制与策略

控制复杂度:机制与策略相分离

功能机制策略
登录什么用户、以什么权限登录等输入处理、策略文件管理、桌面启动加载等
调度先到先服务、时间片轮转等调度队列的设计、调度实体的表示、调度的中断处理等
·········

优点:

  1. 不同的策略适应不同的应用需求,而不需要重新实现对应的机制。
  2. 通过持续优化具体的机制来不断完善一个策略的实现。

操作系统复杂度管理方法(M.A.L.H)

模块化(modularity)

  1. 模块化通过"分而治之"原则,将一个复杂系统分解为一些列通过明确定义的接口进行交互的模块,并严格确保模块间的界限。
  2. 模块划分要充分考虑高内聚低耦合,使模块具有独立性。
  3. 模块划分并不是越细越好,过多的模块会导致模块之间联系过多。

现代操作系统都存在一定程度的模块化结构,包括进程管理、内存管理、网络协议栈、设备驱动等。

抽象(abstraction)

  1. 抽象是在模块化的基础上,将接口与内部实现分离,从而使模块之间只需要通过抽象的接口进行相互调用,而无需关心各个模块的内部实现。
  2. 一个好的抽象应该尽可能依从模块间的自然边界,并尽可能减少模块间的交互,从而减少错误在模块间的传递。
  • 抽象实例
    • 虚拟内存抽象:应用无需关心物理地址,针对连续的虚拟地址空间设计即可。
    • 文件系统抽象:应用无需关心数据在存储介质上的位置,只需要通过定义好的文件系统接口(open / read / write)操作文件对应的数据。
  • 宽进严出规则
    • 宽进:可以容忍各种可能的输入,抑制错误输入与恶意输入,避免错误进入模块内部。
    • 严出:严格控制模块对外的输出,从而减少错误在模块间的传播。

分层(layering)

  1. 分层是通过将模块按照一定的原则进行层次的划分,约束每层内部模块间的交互方式与跨层次模块间的交互方式,从而有效减少模块之间的交互
  2. 一个模块只能和同层模块以及相邻的上层或下层模块进行交互。
  3. 在确定层级后,可以先构建底层的模块,然后利用里层模块提供的功能与服务构建上层模块。

层级(hierarchy)

层级是另一种模块的组织方式,他先将一些功能相近的模块组成一个具有清晰接口的自包含子系统,然后将这些子系统递归地组成一个具有清晰接口的更大的子系统。

分层和层级的对比

  • 相同点:都是为了减少模块间的交互,进一步控制系统复杂度。
  • 不同点:分层是指不同类模块之间的层级,层级是指同类模块之间的分层。

分层和层级的对比


操作系统内核架构

常见的操作系统内核架构有:

  • 简要结构
  • 宏内核
  • 微内核
  • 外核
  • 多内核

操作系统内核架构

  • 用户态:运行在非特权级,受内核管理,使用内核服务。
  • 内核态:运行在特权级,集中控制所有计算资源。

简要结构

简要结构操作系统将应用程序和操作系统放置在同一个地址空间(address space)中,无需底层硬件提供复杂的内存管理、特权级隔离功能。

  • 优点:应用程序对操作系统服务的调用都是通过函数调用实现,效率很高
  • 缺点:缺乏隔离能力(在设计时就没有隔离),任何一个应用程序或操作系统模块出现问题,均有可能导致整个系统崩溃,因此难以运行复杂的操作系统

如 MS-DOS:

MS-DOS

  • MSDOS.Sys 模块通过命令行接口与用户交互,并负
    责与驱动设备交互以实现对硬件设备的管理。
  • IO 子系统实现对硬件设备IO 访问的管理,并以 IO 请
    求作为抽象为 MSDOS.Sys 和设备驱动提供服务。

宏内核架构

又称单内核,内核的所有模块(进程调度、内存管理、文件系统、设备驱动等)均运行在内核态(特权级),具有直接操作硬件的能力。
应用程序均运行在用户态(非特权级),受到内核管理,并通过系统调用使用内核提供的服务。

  • 优势:拥有巨大且统一的社区和生态。
  • 劣势:通用带来的安全性、可靠性问题;系统庞大带来的创新问题。

宏内核架构

宏内核复杂度管理

  • 模块化:可加载内核模块(LKM)机制。
  • 抽象:将数据、设备、内核对象等均抽象为文件,并为上层应用提供统一的接口。
  • 分层:一开始就具备的性质(THE操作系统)。
  • 层级:存在一定程度的分层结构(调度、控制、内存)。

宏内核复杂度管理

宏内核难以满足的场景与诉求

  • 弹性扩展能力:很难仅仅通过简单的裁剪和扩展,使一个宏内核系统支持从 KB 级别到 TB 级别的场景。
  • 硬件异构性:异构硬件往往需要一些定制化的方式来解决特定问题,这种定制化对于宏内核来说很难得到长期的支持。
  • 功能安全:由于宏内核在故障隔离和时延控制等方面的缺陷,截至目前还无法通过汽车安全完整性认证(ASIL-D)。
  • 信息安全:单点错误会导致整个系统出错,而现在有数百个安全问题(CVE)。
  • 确定性时延:Linux 花费 10+ 年合并实时补丁,目前时延抖动仍然较大。

微内核架构

  • 设计背景最小化内核功能。
  • 实现:对宏内核解耦,将单个功能或模块(文件系统、设备驱动)从内核中拆分出来,作为一个独立的服务部署到独立的运行环境中(一般在用户态),内核仅保留极少的必备功能。
  • 优点:服务与服务之间是完全隔离的,单个服务出现故障或受到安全攻击,不会导致整个操作系统崩溃或被攻击,从而提高了操作系统的可靠性与安全性。
  • 特性机制与策略的进一步分离,也可以更方便地为不同场景定制不同的服务,从而更好地适应不同的应用需求。

微内核架构

宏内核与微内核的对比

宏内核:

  1. 缺乏弹性扩展能力
  2. 硬件异构性支持差
  3. 功能安全尚无法完全保证
  4. 信息安全存在隐患
  5. 时延抖动较大
  6. 拥有巨大的生态

微内核:

  1. 易于扩展:直接添加一个用户态进程即可为操作系统增加服务
  2. 易于移植:大部分模块与底层硬件无关
  3. 更加可靠:在内核模式运行的代码量大大减少
  4. 更加安全:服务与服务之间也存在进程粒度的隔离
  5. 更加健壮:单个模式出现问题不会影响到整个系统
  6. 性能较差:内核模块交互从函数调用变成了进程间通信
  7. 生态欠缺

外核架构

  • 设计背景:解决操作系统内核在对资源抽象上存在问题
    1. 过度的硬件资源抽象带来较大的性能损失。
    2. 针对所有应用的通用抽象对于具体的应用可能不是最优选择。
  • 设计原则:尽可能让应用控制对硬件资源的抽象
    1. 库操作系统(LibOS)。
    2. 操作系统只管理 LibOS。
  • 优势
    1. 动态组装 LibOS,最小化代码增强性能。
    2. 保证多个应用之间的隔离,提升安全性和可靠性。
  • 劣势
    1. 缺乏场景通用性,生态差。
    2. 一旦面向复杂生态优势就会退化。
    3. 不同的 LibOS 间容易代码冗余。

外核架构

多内核架构

  • 设计背景:硬件结构呈现出的特性
    1. 多核(8)以及众核(8+)架构的流行使得一个服务器中存在许多处理器核。
    2. 异构SoC上可能集成多种功能、性能甚至指令集结构各异的处理器核,操作系统内部维护共享状态越来越难导致可扩展性差,甚至造成核多性能反降得现象。
  • 设计原则:基于多硬件及其异构特性
    1. 将一个众核系统看成一个由多个独立处理器核通过网络互联而成的分布式系统。
    2. 在每个CPU核上运行一个独立的操作系统节点,节点间的交互由操作系统节点之上的进程间通信完成

多内核架构

操作系统架构组合及其演替

操作系统架构组合及其演替

操作系统框架架构举例

Android 系统框架

Android 系统框架

  • 实现 Linux 内核与 Android 系统框架的解耦封装
  • 提供用户态驱动模型使设备厂商不需要开源驱动源码

服务化架构与 Binder IPC

服务化架构与 Binder IPC

应用类似微内核架构的思想,系统框架组件化与服务化。

ROS 系统框架

ROS 系统框架

  • 面向机器人硬件场景的系统框架
  • 提供基于场景的系统级服务、提供交互IPC机制
  • 采用计算图的形式来组织各种服务,服务构成节点
  • 每个节点执行一个具体计算处理:感知、融合、规划、控制等
  • 不同的节点可看作不同的应用:接收、发布等
  • 组件的设计以服务为中心
  • 话题
  • 2.0 引入数据分发服务,支持实时性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/674420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机组成原理】Yy-z02硬布线模型机设计

目录 一、Yy-z02模型机的系统结构 二、Yy-z02模型机的数据通路 三、Yy-z02模型机的指令执行 四、Yy-z02模型机的硬布线控制器 一、Yy-z02模型机的系统结构 指令系统的实现 <--- 构造它的硬件系统 硬件系统构造过程&#xff1a; 分析指令格式和各指令的功能确定部件连…

《机器学习公式推导与代码实现》chapter16-集成学习对比与调参

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 集成学习&#xff1a;对比与调参 虽然现在深度学习大行其道&#xff0c;但以XGBoost、LightGBM、CatBoost为代表的Boosting算法仍有其广泛的用武…

【Applied Algebra】有限状态机和模型检测初探

【Applied Algebra】有限状态机和模型检测初探 摘要:有限状态机(FSM)和模型检测有密切的联系。有限状态机提供了一种用状态转换图来表示系统行为的简单方法。而模型检测是一种针对形式化模型&#xff08;例如有限状态机&#xff09;的验证技术&#xff0c;旨在自动验证模型是否…

css基础(一)

目录 思维导图 ​一、css简介 1.1 css语法规范 1.2 css代码规格 1. 样式格式书写 2. 样式大小写 3. 空格规范 二、css选择器 2.1 CSS 选择器的作用 2.2 选择器分类 2.3 标签选择器 2.4 类选择器 2.4 类选择器-多类名 2.5 id 选择器 2.6 通配符选择器 2.7 基础选择器总结 三、CS…

D. Running Miles(公式转换)

Problem - D - Codeforces 有一条长为n的街道&#xff0c;其中第i个景点距离街道起点i英里。第i个景点的美丽值为bi。你想要在离街道起点l英里和r英里处开始和结束慢跑。当你跑步时&#xff0c;你会看到你经过的景点&#xff08;包括起点和终点处的景点&#xff09;。你对沿途慢…

Microsoft365有用吗?2023最新版office有哪些新功能?

office自97版到现在已有20多年&#xff0c;一直是作为行业标准&#xff0c;格式和兼容性好&#xff0c;比较正式&#xff0c;适合商务使用。包含多个组件&#xff0c;除了常用的word、excel、ppt外&#xff0c;还有收发邮件的outlook、管理数据库的access、排版桌面的publisher…

CENTOS上的网络安全工具(二十五)SPARK+NetSA Security Tools容器化部署(1)

一、第三代YAF YAF&#xff08;Yet Another Flowmeter&#xff09;是作为CERT NetSA安全工具套件的传感器部分存在的&#xff0c;支持输入实时数据流和PCAP文件&#xff0c;解析并输出流数据&#xff0c;或针对特定协议的深包检测元数据。目前&#xff0c;YAF在整个系统的作用如…

【js30天挑战】第三天:css变量

效果图&#xff1a; 学到的东西 HTML&CSS部分 css变量写法 //定义:root{ //:root 是 CSS 选择器&#xff0c;它匹配文档的根元素&#xff0c;也就是 html 元素。 --base:#FF0081;--spacing:10px;--blur:0px;} //使用img {filter: blur(var(--blur));}input: range类型…

Redis - 数据结构类型及使用场景详解(一)

一. 简介 Redis 是由 Salvatore Sanfilippo 编写的一个key-value存储系统&#xff0c;是跨平台的非关系型数据库。Redis是一个开源的&#xff0c;使用C语言编写的&#xff0c;遵守BSD协议&#xff0c;支持网络&#xff0c;可基于内存&#xff0c;分布式&#xff0c;可选持久性的…

EMC学习笔记(八)阻抗控制(二)

阻抗控制&#xff08;二&#xff09; 1.差分阻抗控制1.1 当介质厚度为5mil时的差分阻抗随差分线间距的变化趋势1.2 当介质厚度为13mil时的差分阻抗随差分线间距的变化趋势1.3 当介质厚度为25mil时的差分阻抗随差分线间距的变化趋势 2.屏蔽地线对阻抗的影响2.1 地线与信号线之间…

Day_54-55

目录 Day_54基于 M-distance 的推荐 一. 关于M-distance 的推荐 1. 基本数据说明 2. 推荐系统的算法过程 3. 简单思考 二. 代码复现 1. 数据导入 2. 代码的初始化 3. 核心代码 3.1 基础数据的构建 3.2 leave-out-leave测试 3.3 误差计算 Day_55基于 M-distance 的推荐 (续) …

对象的构造顺序

问题 C 中的类可以定义多个对象&#xff0c;那个对象构造的顺序是怎样的&#xff1f; 对于局部对象 当程序执行流到达对象的定义语句时进行构造 下面程序中的对象构造顺序是什么&#xff1f; 对于堆对象 当程序执行流到达 new 语句时创建对象 使用 new 创建对象将自动触发构…

python 使用 openpyxl 处理 Excel 教程

目录 前言一、安装openpyxl库二、新建excel及写入单元格1.创建一个xlsx格式的excel文件并保存2.保存成流(stream)3.写入单元格 三、创建sheet工作表及操作四、读取excel和单元格1.读取 excel 文件2.读取单元格3.获取某一行某一列的数据4.遍历所有单元格5.遍历指定行列范围的单元…

Android卡顿优化

卡顿的定义 如果在一个Vsync周期内&#xff08;60HZ的屏幕上就是16.6ms&#xff09;&#xff0c;按照整个上帧显示的执行的顺序来看&#xff0c;应用UI线程的绘制、RenderThread线程的渲染、SurfaceFlinger/HWC的图层合成以及最终屏幕上的显示这些动作没有全部都执行完成的话&…

【C语言】-- X型图案

今天刷了牛客网上的一道题&#xff0c;不难&#xff0c;但思路很重要&#xff0c;否则你就得写一长串代码&#xff0c;下面是要求。牛客网链接->X形图案。 下面是两组示例。 通过观察示例&#xff0c;我们发现输入的数字是奇数时&#xff0c;图案最中间只有一个*&#xff0c…

什么是Ajax?Ajax如何发送请求(详)

本篇来讲关于Ajax的内容&#xff0c;当然还有小伙伴可能不知道该怎么读 "Ajax"&#xff0c;它读 "阿贾克斯" &#xff0c;当然了读法可能因人而异&#xff0c;下面来进入正题&#xff0c;先来了解一下什么是Ajax&#xff1f; Ajax 是什么&#xff1f; Ajax…

魔法与现实-如何使用GPT帮我改一个万行vue代码中的BUG

开篇 传说在人类诞生之初是和魔法共存的。随时时间的流失,人们逐步开始淡忘了魔法。也有传说魔法是亚瑟王于“剑栏“一战(Battle of Camlann)后梅林永远封存了魔法使其不被心术不正者所使用。不管哪种说法,随着时间的流失,人类在飞速进步。从水利磨坊到蒸汽机的发明、再到…

Latex中表格Table环境和Tabular环境

目录 一、Table和Tabular的区别 二、一个简单的Table环境示例&#xff1a; 三、Latex的“自动换行”功能 四、Latex多行和多列 五、使用tablesgenerator快速将excel表格转换成tex代码 六、设置表格的宽度与页面宽度一致 说明:一至四内容来自Latex中使用Table&#xff08;表…

Scala入门【运算符和流程控制】

运算符 在 Scala 中其实是没有运算符的&#xff0c;所有运算符都是方法。我们只是省去了 .方法名() 中的点 . 和括号 () 。 调用对象的方法时&#xff0c;点 . 可以省略&#xff1b;如果函数参数只有一个&#xff0c;或者没有参数&#xff0c;括号()可以省略。 //num1 n…

Unity解决:GIS(GPS的经纬度坐标)定位系统坐标转unity坐标(世界坐标)

目录 一、前言 二、功能实现 三、测试 四、备注 如果要实现该效果的demo&#xff0c;请联系作者 一、前言 最近项目中用到了第三方的定位系统&#xff0c;有的是使用GPS定位、有的是使用UWB定位。第三方的定位系统把他们的定位信息通过网络发送给Unity&#xff0c;在Unity…