笔记:现代操作系统:原理与实现(2)

第三章 操作系统结构

操作系统的机制与策略

操作系统乃至计算机系统中控制复杂度的—个重要设计原则是:将策略与机制相分离,其中策略(policy)表示要‘‘做什么”,机制(mechanjsm)表示该“如何做”。

操作系统复杂度管理方法

管理复杂系统的重要方法是 M.A.L.H 方法,即模块化(modularity)、抽象(abstraction)、分层(layering)和层级(hierarchy)。

  • 模块化:模块化就是通过“分而治之”(divide and conquer)原则,将一个复杂系统分解为一系列通过明确定义的接口进行交互的模块,并严格保障模块之间的界限。
  • 抽象:抽象是在模块化的基础上,将接口与内部实现分离,从而使模块之间只需通过抽象的接口进行相互调用,而无须关心各个模块的内部实现。

小知识:宽进严出原则:

一个模块的接口应该容忍各种可能的输入,抑制错误甚至恶意的输入,避免错误或恶意输入的效果在模块内传播,并且尽可能严格地控制模块对外的输出,从而减少错误在模块间的传播。

  • 分层:分层是通过将模块按照一定的原则进行层次的划分,约束每层内部模块间的交互方式与跨层次模块间的交互方式,从而有效地减少模块之间的交互。
  • 层级:层级是另外一种模块的组织方式。首先将一些功能相近的模块组成一个具有清晰接口的自包含子系统,然后再将这些子系统递归地组成一个具有清晰接口的更大子系统。

比如在操作系统中,既有分层的模块结构(如内核层、用户层),也有层级的进程管理结构(父进程与子进程)

操作系统内核架构

随着操作系统功能的不断增多和代码规模的不断扩大,提供合理的层级结构,对于降低操作系统复杂度、提升操作系统安全与可靠性来说变得尤为重要。下图列举了一些常见的操作系统内核架构。

在这里插入图片描述

简要结构

  • 特点:应用程序与操作系统放置在同一个地址空间(address space)中,无须底层硬件提供复杂的内存管理、特权级隔离等功能。
  • 优势:任何程序对操作系统服务的调用可直接通过函数调用高效完成。
  • 劣势:任何一个应用程序或操作系统模块出现了问题,均有可能使整个系统崩溃。
  • 典型例子:MS-DOS(MicroSoft Disk Operating System)、FreeRTOG、uCOS。

MS-DOS的系统结构:

在这里插入图片描述

宏内核结构

  • 特点:操作系统内核的所有模块(包括进程调度、内存管理、文件系统、设备驱动等)均运行在内核态,具备直接操作硬件的能力。
  • 优势:性能高、模块间通信高效、资源管理集中、广泛支持与优化。
  • 劣势:一个通用的、适用于大部分场景的设计,常常意味着很难满足特定场景下对安全性、可靠性、实时性等方面的需求;同时,在一个庞大的系统中进行创新也变得越来越困难。
  • 典型例子:UNIX/Linux、FreeBSD。

宏内核的基本结构:

在这里插入图片描述

微内核结构

  • 特点:对宏内核架构的操作系统进行解耦,将单个功能或模块(如文件系统、设备驱动等)从内核中拆分出来,作为一个独立的服务部署到独立的运行环境中;内核仅保留极少的功能,为这些服务提供通信等基础能力,使其能够互相协作以完成操作系统所必需的功能。
  • 优势:服务与服务完全隔离,能有效提供操作系统的可靠性与安全性;方便为不同场景定制不同服务。
  • 劣势:开发难度高,通信开销大

外核结构

  • 特点:为不同的应用提供定制化的高效资源管理:按照不同应用领域的要求’将对硬件资源的抽象模块化为一系列的库(即LibOS)
  • 优势:
    • 可按照应用领域的特点与需求,动态组装成最适合该应用领域的 LibOS,最小化非必要的代码,从而获得更高的性能。
    • 处于硬件特权级的操作系统内核可以做到非常小,并且由于多个 LibOS 之间的强隔离性,从而可以提升整个计算机系统的安全性与可靠性。
  • 劣势:
    • LibOS通常是为某种应用定制的’缺乏跨场景的通用性,应用生态差。
    • 不同的LibOS通常会实现相同或类似的功能,容易造成代码冗余。

外核结构架构图:

在这里插入图片描述

外核结构与微内核的区别

  • 外核架构将多个硬件资源划分为一个“切片”,每个切片中保护的多个硬件资源由 LibOS 管理并直接服务于一个应用;而微内核架构则是通过让一个操作系统模块独立运行在一个地址空间上来管理一个具体的硬件资源,为操作系统中所有的应用服务。
  • 外核架构中,运行在特权级的内核主要为 LibOS 提供硬件的多路复用能力并管理 LibOS;而微内核架构中,内核主要提供进程间通信(IPC)功能。
  • 外核架构在面向一个功能与生态受限的场景时可通过定制化 LibOS 获得非常高的性能;而微内核架构则需要更复杂的优化才能获得与之类似的性能。

多内核结构

  • 特点:将—个众核系统看成一个由多个独立处理器核通过网络互联而成的分布式系统;它提供了—层基于进程间通信的抽象,从而避免了处理器核之间通过共享内存进行隐式的共享。
  • 优势:可以避免传统操作系统架构中的复杂的隐式共享所带来的性能可 扩展性瓶颈;非常容易支持异构处理器架构。
  • 劣势:不同节点之间存在的状态冗余对资源开 销会造成一定压力;需要移植现有应用才能适应多内核架构。

多内核架构图:

在这里插入图片描述

混合内核架构

由于设计需求的多样化,现实中的操作系统往往融合了多种架构的设计思想。

  • 虽然Linux内核是公认的宏内核架构,但其近期也开始融合了微内核架构中的用户态驱
    动模型(如UIO与VFIO等)。
  • 苹果操作系统内核XNU是一个Mach微内核与BSD UNIX的混合体,被使用于MacOSX中。
  • WmdowsNT的操作系统内核也采用了微内核设计思想,但是将一些系统服务运行在内核态。

操作系统架构组合及演进:

在这里插入图片描述

操作系统框架结构

Android系统框架

在这里插入图片描述

在Linux内核之上运行的Android系统框架包括如下几个主要组件:

  • 硬件抽象层(hardwareabstractlayer):Android在Linux内核上提供—层硬件抽象层的主要原因有两个:
    • linux宏内核架构使得设备驱动运行在linux内核态,因此设备驱动的接口依赖于linux内核设备驱动接口的演进,这会阻碍 Android 系统框架的独立演进与升级。
    • Linux 内核采用了 GPL v2 开源协议,协议要求运行在同一个地址空间的设备驱动必须开源代码,这会导致一些硬件的实现细节也被公开,因此一些设备厂商担心其硬件竞争力受到影响。
  • Android 库(Android library):Android 库一方面提供了一些方便 Android 应用开发的自定义库,另外一方面也重新实现了一些标准库(如 glibc 等),从而规避了 LGPL 开源协议。
  • Android 运行环境(Android Runtime, ART)。由于 Android 应用的主要开发语言是 Java,因此需要一个运行时环境将应用从字节码转化为可执行代码。早期的 Android 采用 Dalvik 虚拟机的形式,通过解释执行与 JIT(Just-in-Time)编译的方式运行,因而带来一些性能与功耗的损失。Android 自 5.0 后引入了 Android 运行环境(ART),通过 Ahead-of-Time (AOT) 预先编译的方式,将 Java 代码预编译为二进制可执行代码,从而避免了运行时的编译开销。
  • Android 应用框架(Android application framework)。Android 应用框架提供了应用运行所需要的基础服务,包括服务管理(service manager)、活动管理(activity manager)、包管理(package manager)、窗口管理(window manager)等。这些服务化的组件利用操作系统内核提供的资源抽象,为应用构建了一系列方便调用的应用服务。

服务化架构与 Binder IPC

Android 系统框架的设计整体应用了类似微内核架构的思想,将系统框架组件化与服务化,各个组件依赖于 Android 提供的 Binder IPC 进行通信。

在这里插入图片描述

ROS系统框架

ROS 是 Robot Operating System 的缩写,即机器人操作系统。虽然名字中包含操作系统,但 ROS 实际上是一个面向机器人硬件场景的系统框架,可运行在 Linux 内核以及其他兼容 POSIX 接口的操作系统内核之上。作为一个操作系统的系统框架,ROS 提供了

ROS层次架构图:

在这里插入图片描述

简要而言,ROS 可以分为基础设施层、通信层和应用层。其中,基础设施层包括 ROS 中的 Python、C++ 等运行环境、ROS 文件系统与 ROS 包管理机制等。在基础设施层之上运行了 ROS 的通信层,提供基础的 ROS IPC 机制以及 ROS 的数据分发服务(Data Distribution Service, DDS)等。ROS 的应用层是由一个个节点所构成的计算,这些节点之间可以使用 ROS 的通信层直接进行互相调用,或者通过对一些话题(topic)发布消息或者订阅消息来进行间接通信。

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

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

相关文章

c++ 压缩与解压缩

1、使用zip开源库,引入比较简单,只需要包含四个头文件,不需要编译成库文件:zip.h、zip.cpp、unzip.h、unzip.cpp。2、压缩使用到的主要函数:CreateZip 创建zip文件ZipAdd 添加文件ZipAddFolder 添加文件夹CloseZip 关闭…

水下无线光通信(UWOC)TDD系统:光收发端编解码与信号处理分析与方案(数字版)

在光收发模块中添加编解码与信号处理模块,核心目标是提升水下信道抗干扰能力(对抗后向散射、环境光、信号衰减)、降低误码率,同时兼容原有TDD时隙控制逻辑。以下从“编码方案选型”“光发送端信号处理”“光接收端信号处理”“与原有系统集成”四部分展开,形成完整技术闭环…

Seat 事务@GlobalTransactional传播行为

一,分布式事务传播行为调用链描述一个普通事务注解的方法,调用一个分布式事务注解方法分布式事务注解方法:包含一个本地更新,和两个外部服务更新操作,涉及三个服务问题1,普通事务注解方法,在全局…

美团龙猫利用expat库实现的保存xml指定范围数据到csv的C程序

用自己代码逐个字符解析的速度较慢,尝试了libxml2也比较慢,它需要一次性读入内存,而expat库支持流式读取。就让龙猫写了一个程序,毕竟是久经考验的库,程序很快就调试通过了。要不是我一开始没信心,让他先输…

Transformer核心—自注意力机制

Transformer基础—自注意力机制 当我们处理文本、语音这类序列数据时,总会遇到一个老问题:模型到底该怎么理解“前后文”呢? RNN 和 LSTM 曾经是热门的答案,它们沿着时间顺序一点点地读数据,但读得太慢,还容…

分片上传-

分片上传原理:客户端将选择的文件进行切分,每一个分片都单独发送请求到服务端;断点续传 & 秒传原理:客户端 发送请求询问服务端某文件的上传状态 ,服务端响应该文件已上传分片,客户端再将未上传分片上传…

零知开源——基于STM32F103RBT6的智能风扇控制系统设计与实现

✔零知IDE 是一个真正属于国人自己的开源软件平台,在开发效率上超越了Arduino平台并且更加容易上手,大大降低了开发难度。零知开源在软件方面提供了完整的学习教程和丰富示例代码,让不懂程序的工程师也能非常轻而易举的搭建电路来创作产品&am…

ReACT Agent概述

目录 1. 核心思想:解决传统方法的局限性 2. ReACT 的工作原理:一个循环过程 3. 技术实现的关键要素 4. ReACTAgent 在任务中的具体工作流程 5. 优势与重要性 6. 挑战与局限性 总结 ReACT 是一个非常重要的框架,它代表了构建能够推理&a…

必知!机器人的分类与应用:RPA、人形与工业机器人

每当提及“机器人”这三个字,许多人的第一反应或许仍是科幻电影中那种具备人类外形、可自由行走与对话的仿生装置。然而,一个值得深入探讨的科技现实是:我们对于人形机器人的迷恋,更多源自文化叙事与情感投射,而非真实…

最快的 C 语言 JSON 库 - yyjson

文章目录DOM 模式下的性能比对一、AWS EC2 (AMD EPYC 7R32, gcc 9.3)二、iPhone (Apple A14, clang 12)持续更新中 持续更新中 持续更新中一个用 ANSI C(C89) 编写的高性能 JSON 库 API.md DOM 模式下的性能比对 DOM 模式,即构建完整 JSON 内存结构后访问数据的模…

TP8 模型save更新不成功

一、User文件头部代码class User extends Model {const TITLE_NAME 用户;//名称//不能删除protected $name user_; //表名 protected $connection \app\services\database\model\DbConnModel::CONN_DB_SITE; //数据库的连接二、更新部分我要更新user_1用户表中的用户信息$se…

中囯移动电视盒子(魔百和)B860AV2.1-A2和CM311-5-zg刷机手记

文章目录B860AV2.1-A2电视盒子情况打开隐藏或屏蔽的功能进入Recovery模式打开WiFi(如果被隐藏)打开运维调试打开ADB调试安装第三方应用、设置第三方桌面等(Fiddler抓包替换官方App安装包)开启ADB和使用ADB禁止“首次启动设置”刷机…

【系统架构设计(14)】项目管理下:软件质量与配置管理:构建可靠软件的基础保障

文章目录一、核心思想二、软件质量属性:定义"好软件"的标准三、质量保证与控制:实现质量标准的方法四、CMMI模型:组织质量能力的演进路径五、软件配置管理:质量成果的保护机制六、软件工具:质量管理的技术支…

码农的“必修课”:深度解析Rust的所有权系统(与C++内存模型对比)

在软件开发的世界里,内存管理是至关重要的一个环节。它是程序运行的基础,直接关系到程序的性能、稳定性和安全性。一个糟糕的内存管理策略,可能导致内存泄漏、野指针、缓冲区溢出等一系列令人头疼的问题,甚至带来灾难性的安全漏洞…

Java全栈学习笔记30

# MySQL 卸载安装版电脑管家/360/控制面板卸载mysql服务即可删除ProgramData中的MySQL目录解压版winr 输入 services.msc 打开服务管理。查看是否存在MySQL,如果存在则删除注册表 winR regedit 打开注册表计算机\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Servic…

Transformers 学习入门:前置知识补漏

在学习 Transformers 之前,打好神经网络和自然语言处理的基础至关重要。本文整理了需要掌握的核心前置知识,用通俗的例子帮你快速理解复杂概念,为后续学习铺平道路。​ 一、神经网络基础​ 1. 多层感知机(MLP)&#xf…

双摄工业相机的主要特点和应用场景

双摄工业相机(双目摄像头)在工业领域中的应用非常广泛,其核心优势在于通过双镜头模拟人眼立体视觉,能够获取深度信息并实现高精度三维重建。 一、双摄工业相机的核心优势 深度感知与三维重建 双目摄像头通过两个镜头从不同角度拍…

YOLOv11改进:FocalModulation替换SPPF(精度更高的空间金字塔池化)

YOLOv11:FocalModulation替换SPPF(精度更高的空间金字塔池化) 引言 在目标检测领域,YOLO系列算法以其高效性和准确性广受欢迎。作为YOLO系列的最新成员之一,YOLOv11在多个方面进行了优化和改进。其中,空间金…

LLM与数据工程的融合:衡石Data Agent的语义层与Agent框架设计

在数字经济浪潮中,企业数据智能正经历从"工具辅助"到"智能协同"的范式跃迁。传统BI系统受限于静态报表与预设指标,难以应对动态业务场景的复杂需求。衡石科技发布的HENGSHI SENSE 6.0通过"Data AI Agent"架构创新&#x…

假设一个算术表达式中包含圆括号、方括号和花括号3种类型的括号,编写一个算法来判别,表达式中的括号是否配对,以字符“\0“作为算术表达式的结束符

思想:这道题是栈的应用类型,我们可以建立一个栈来保存(,[,{,通过遍历字符串如果是三个左括号其中一个则入栈,当遇到)]}则出栈配对,如果左右匹配,则遍历下一个元素,如果不匹配直接返回,如果遍历字符串结束&a…