操作系统实战45讲|03.黑盒之中有什么、04.震撼的Linux全景图

news2024/11/26 17:33:37

03.黑盒之中有什么

黑盒之中有什么

从抽象的角度来看,内核就是计算机资源的管理者,管理资源是为了让应用使用资源。
计算机中的资源分为两类:硬件资源、软件资源;
硬件资源有以下这些:

  • 总线,负责连接各种其它设备,是其它设备工作的基础
  • CPU。中央处理器,负责执行程序和处理数据运算。
  • 内存。负责存储运行时的代码和数据
  • 硬盘负责长久存储用户文件数据
  • 网卡。负责计算机与计算机之间的通信
  • 显卡。负责显示工作
  • 各种IO设备,如显示器、打印机、键盘、鼠标
    计算机结构图如下:
    在这里插入图片描述
    计算机中的软件资源,可以表示为计算机中各种形式的数据,如各种文件,软件资源。
    内核作为硬件资源和软件资源的管理者,内部组成在逻辑上大致如下:
  • 管理CPU,由于CPU是执行程序的,而内核把运行时的程序抽象成进程,又称为进程管理
  • 管理内存。由于程序和数据都要占用内存,内存是非常宝贵的资源,所以内核要非常小心地分配释放内存
  • 管理硬盘。硬盘主要存放用户数据,而内核把用户数据抽象成文件 ,即管理文件,文件需要合理地组织,方便用户查找和读写,形成了文件系统。
  • 管理显卡。负责显示信息,现在操作系统支持GUI(图形用户接口),管理显卡自然而然地就成了内核中的图形系统
  • 管理网卡。网卡主要完成网络通信,网络通信需要各种通信协议,最后在内核中形成了网络协议栈,又称网络组件。
  • 管理各种IO设备。
    内核除了这些必要组件之外,根据功能不同还有安全组件等。各种计算机硬件的性能不同,硬件型号不同,硬件种类不同,硬件厂商不同,内核要想管理和控制这些硬件就要编写对应的代码,这样的代码称为驱动程序。

宏内核结构

宏内核结构就是把以上诸如管理进程的代码,管理内存代码、管理各种IO设备的代码、文件系统的代码、图形系统代码以及其它功能模块的代码,把这些所有的代码经过编译,最后链接在一起形成一个大的可执行程序。
宏内核结构
在这里插入图片描述
宏内核提供内存分配功能的服务过程,具体如下:

  • 应用程序调用内存分配的API
  • 处理器模式切换到特权模式,开始运行内核代码
  • 内核里的内存管理代码按照特定的算法,分配一块内存
  • 把分配的内存块的首地址、返回给内存分配的API函数
  • 内存分配的API函数返回,处理器开始运行用户模式下的应用程序,应用程序就得到了一块内存的首地址,并且可以使用这块内存
    宏内核结构的缺点:
    没有模块化、没有扩展性、没有移植性、高度耦合在一起,一旦其中一个组件有漏洞,内核中的所有的组件都可能会出现问题。
    唯一的优点就是性能好

微内核结构

微内核结构正好与宏内核结构相反,它提倡内核功能尽可能少:仅仅只有进程调度、处理中断、内存空间映射、进程间通信等功能。
开发者把实际的进程管理、内存管理、设备管理、文件管理等服务功能,做成一个个服务进程。和用户应用进程一样,它们很特殊,宏内核提供的功能在微内核架构里由这些服务进程专门负责完成。
微内核定义了一种良好的进程间通信的机制----消息。服务进程的编程模型就是循环处理来自其它进程的消息,完成相关服务的功能。
在这里插入图片描述
微内核分配内存的服务过程:

  • 应用程序发送内存分配的消息,这个发送消息的函数微内核提供的,相当于系统API,微内核的API相当少,极端情况下只需要两个一个接收消息,一个发送消息。

  • 处理器切换到特权模式,开始运行核代码

  • 微内核代码让当前进程停止运行,并根据消息包中的数据,确定消息发送给谁,分配内存的消息当然是发送给内存管理服务进程。

  • 内存管理服务进程收到消息,分配一块内存

  • 内存管理服务进程,会通过消息的形式返回分配内存块的地址给内核,然后继续等下一条消息

  • 微内核把包含内存块地址的消息发送给内存分配消息的应用程序。

  • 处理器开始运行用户模式下的应用程序,应用程序就得到了一块内存的首地址,并且可以使用这块内存。
    一来一去的消息和进程之间的切换开销大大影响了系统的性能。
    但是微内核有很多优点,首先,系统结构相当清晰利于协作开发。其次,系统有良好的移植性,微内核代码量非常少,就算重写整个内核也不是难事。最后,微内核有相当好的伸缩性、扩展性,因为那些系统功能只是一个进程,可以随时拿掉一个服务进程以减少系统功能,或者增加几个服务进程以增强系统功能。

分离硬件的相关性

分层的主要目的和好处就是屏蔽底层细节,使上层开发更加简单。
计算机领域的一个基本方法是增加一个抽象层,从而使得抽象层的上下两层独立的发展,所以在内核内部再分若干层也不足为奇。
分离硬件的相关性就是把操作硬件和处理硬件功能差异的代码抽离出来,形成一个独立的软件抽象层,对外提供相应的接口方便上层开发。

选择

将操作系统内核分为三个大层:

  • 内核接口层
  • 内核功能层
  • 内核硬件层

内核接口层,定义了一系列接口,主要有两点内容:

  • 定义了一套UNIX接口的子集,
  • 这套接口的代码,就是检查参数是否合法,如果参数有问题就返回相关的错误,接着调用下层完成功能的核心代码
  • 内核功能层主要完成各种实际功能:
    1.进程管理,主要实现进程的创建、销毁、调度进程
    2.内存管理,在内核功能层只有内存池管理,分两种内存池:页面内存池和任意大小的内存池
    3.中断管理,这个在内核功能层中非常简单,就是把一个中断回调函数安插到相关的数据结构中,一旦发生相关的中断就会调用这个函数。
    4.设备管理,这个是最难的,需要用一些列的数据结构表示驱动程序模块,驱动程序本身、驱动程序创建的设备,最后把它们组织在一起,还要实现创建设备、销毁设备、访问设备的代码,这些代码最终会调用设备驱动程序,达到操作设备的目的。
    内核硬件层,主要包括一个具体硬件平台相关的代码
    1.初始化,初始化代码是内核被加载到内存中最先需要运行的代码,例如初始化少量的设备、CPU、内存、中断的控制、内核用于管理的数据结构等。
    2.CPU控制,提供CPU模式设定、开、关中断、读写CPU特定寄存器等功能的代码。
    3.中断处理。保存中断时机器的上下文,调用中断回调函数,操作中断控制器。
    4.物理内存管理。提供分配、释放大块内存,内存空间映射,操作MMU\Cache
    5.平台其它相关的功能,有些硬件平台上有些特殊的功能能,需要额外处理一下
    同时,我们把文件系统、网络组件、其它功能组件作为虚拟设备交由设备管理,比如需要文件系统时就写一个文件系统虚拟设备的驱动,完成文件系统的功能,需要网络时就开发一个网络虚拟设备的驱动,完成网络功能。
    在这里插入图片描述

04.震撼的Linux全景图

Linux五大重要组件
在这里插入图片描述
NT内核架构图
在这里插入图片描述
Darwi架构图
在这里插入图片描述

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

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

相关文章

一个Transformer在尺度上适合多模态扩散的所有分布

文章目录 One Transformer Fits All Distributions in Multi-Modal Diffusion at Scale摘要本文方法实验结果 One Transformer Fits All Distributions in Multi-Modal Diffusion at Scale 摘要 本文提出了一个统一的扩散框架(UniDiffuser)来拟合一个模型中与一组多模态数据相…

Vue3+Vite+Pinia+Naive后台管理系统搭建之三:vue-router 的安装和使用

前言 如果对 vue3 的语法不熟悉的,可以移步 Vue3.0 基础入门快速入门。 如果对 vue-router 语法不熟悉的,可以移步Vue3 系列:vue-router。 1. 安装依赖 yarn add vue-router // or npm install vue-router 2. 构建 src/router/index.js …

对话式ai人工智能的主要好处有哪些

对话式 AI 是客户服务的一个重要且不断增长的组成部分,尤其是客户越来越多地采用的数字自助服务。 对话式 AI 可以在提高客户满意度 (CSAT) 方面发挥很重要的作用。在 IBM 于 2021 年进行的一项研究中,99% 的公司报告称,由于使用虚拟对话式 …

支持源码的低代码核心工具,逻辑引擎

在现代企业管理中,决策扮演着至关重要的角色。然而,随着业务规模的扩大和数据量的增加,人工决策变得越来越困难和耗时,而且容易受到主观因素的影响。逻辑引擎的出现为企业提供了一种高效、准确的决策推理工具,能够以逻…

数字化转型迫在眉睫

在挑战商业世界现状并实现数字化转型时,一定程度的阻力是不可避免的。事实上,《福布斯》的一篇文章援引哈佛商学院的研究表明,70%的组织变革努力都失败了,“原因之一是高管们没有从足够多的人那里了解他们的计划和想法。”支持。”…

市面上的ipad国产触控笔怎么样?好用的电容笔合集

而对那些把IPAD当作学习工具的人而言,这个Apple Pencil绝对是不可或缺的。然而,苹果版本的Pencil却是昂贵得让许多人望而却步。因此,最佳方法是选择一个平替的电容笔。我是从几年前开始用IPAD的,也是一个数码爱好者,近…

AIGC行业周刊【2023-0709】【第六期】2023年世界人工智能大会大佬发言汇总

点击加入->【智子纪元-AIGC】技术交流群 一、大咖观点: 0709AI日报:2023年世界人工智能大会大佬发言汇总「5年内,人类程序员没了」,Stability AI老板大胆预测,一众大佬狂怼:大错特错,都懒得…

在vite创建的vue3项目中加载Cesium立体地形信息并调整初始化角度

在vite创建的vue3项目中加载Cesium立体地形信息并调整初始化角度 使用vite创建vue3项目 npm create vitelatestcd到创建的项目文件夹中 npm install安装Cesium npm i cesium vite-plugin-cesium vite -D配置 (1)在项目的vite.config.js文件中添加&#x…

算法训练营第三十一天||理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和

理论基础 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次…

专项练习24

目录 一、选择题 1、JavaScript 中的数字在计算机内存中占多少个Byte? 2、请问以下JS代码会输出什么 二、编程题 1、以数字的形式返回数字参数向下取整的结果 一、选择题 1、JavaScript 中的数字在计算机内存中占多少个Byte? A、2 Byte B、4Byte C…

如何在购物 App 上实现商品快递物流信息的展示

前言 现如今,人们大多数会选择在手机购物App上进行购物,这样买东西很是便捷,不用出门就能买到全国各地甚至是国外的商品,下单之后只需要等待快递送达就可以了。一个购物APP,不可或缺的一个辅助功能就是,展…

GPT-4 验明真身的经典三连问:快速区分 GPT-3.5 与 GPT-4

GPT-4 验明真身的经典三连问:快速区分 GPT-3.5 与 GPT-4

华为VRP系统基础

系列文章目录 华为数通学习(1) 目录 一,什么是VRP? 二,VRP的发展 三,VRP的文件系统 3.1,系统文件:.cc结尾 ​编辑 3.2,配置文件:.cfg,.zip,.dat结尾 3.…

统计年,月,日,java补充无的数据

需求:营收趋势图。需要按年,按月,按日。按年,后方选择日历 起始年-结束年。例如start2013 end 2023 按月,后方选择月份 起始月-结束月。例如start 2022-10 end 2023-07。 按日,后方选择日 起始日-结束日。例…

Vue-CodeMirror 使用

vue2 安装 npm install vue-codemirror -S # or yarn add vue-codemirror -S 全局配置&#xff0c;main.js文件引入 import VueCodemirror from vue-codemirror // import base style import codemirror/lib/codemirror.css Vue.use(VueCodemirror)Vue 文件内使用 <templ…

QDialog的相关API函数

目录 常用的一些 API 函数: QDialog 的子类 QMessageBox&#xff1a; QFileDialog QFont 字体类 QColorDialog QInputDialog QProgressDialog 总结 QDialog是Qt框架中的一个控件类&#xff0c;用于实现对话框的界面。对话框通常用于显示一个独立的窗口&#xff0c;该窗口会显…

手撕spring05(xml解析bean)

概述 通过加载配置文件的信息&#xff0c;注册xml的bean配置 整体设计 知识点补充 返回指定资源的输入流 // 相对路径获取流 java.lang.ClassLoader#getResourceAsStream // 绝对路径获取流 java.io.FileInputStream#FileInputStream(java.io.File) // URL获取流 java.net…

尚医通02:医院API的CRUD+环境搭建

目录 今日必会 项目环境搭建 医院设置模块搭建 配置使用Swagger2 统一返回结果 实现带条件带分页查询接口 新增、修改接口开发 批量删除、锁定医院设置 统一异常处理 今日必会 1.简单的搭建环境。要明白什么时候是pom/war/jar yygh_parent <pom> commo…

开发第一个基于PyQt5的桌面应用

必须使用两个类&#xff1a;QApplication和QWidget。都在PyQt5.QtWidgets。 创建设计了一个小窗口 Qt-Designer的介绍 布局——垂直布局、水平布局、栅格布局、表张布局 空间 垂直、水平空间 按钮相关的控件 普通按钮、工具条按钮、单选按钮、多选按钮、连接命令按钮 列表控…

GD32F4_USB无法识别

Q&#xff1a;GD32F4做USB通讯&#xff0c;在120M\160M时钟主频下能被识别并通讯&#xff0c;在设置主频为200M时无法被识别或通讯异常。 A&#xff1a;注意USB时钟来源&#xff0c;USB工作时钟频率为48M