第 1 章 计算机系统概述
1、操作系统的概念 & 功能
1.1、思维导图
1.2、我们使用的操作系统
常见的操作系统
-
富人用 MacOS 和 IOS
-
穷人用 Windows 和 Android
-
程序猿用 Linux
-
野人还在用诺基亚,塞班,如来!!!
1.3、操作系统的概念( 定义)
一台电脑的诞生~
- Step 1: 厂家组装一台裸机
- Step 2: 出售前安装操作系统
- Step 3: 用户安装应用程序( eg: QQ)
- Step 4: 使用 QQ 聊天
操作系统的定义
操作系统( Operating System, OS) 是指控制和管理整个计算机系统的硬件和软件资源, 并合理地组织调度计算机的工作和资源的分配; 以提供给用户和其他软件方便的接口和环境; 它是计算机系统中最基本的系统软件
操作系统三层的含义
- 操作系统是系统资源的管理者
- 操作系统向上层提供方便易用的服务
- 操作系统是最接近硬件的一层软件
举个栗子
直观的例子: 打开 Windows 操作系统的“ 任务管理器” ( 快捷键: Ctrl+Alt+Del)
1.4、发操作系统的功能和目标
1.4.1、作为系统资源的管理者
操作系统需要管理一系列的系统资源
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
举个栗子
以运行 QQ为例:(执行一个程序前需要将该程序放到内存中, 才能被CPU处理。 )
1.4.2、向上层提供方便易用的服务
操作系统的封装思想
操作系统把一些丑陋的硬件功能封装成简单易用的服务(向上层提供方便易用的服务接口), 使用户能更方便地使用计算机, 用户无需关心底层硬件的原理, 只需要对操作系统发出命令即可
举个生活中的例子
-
车本来长这样,我说这样也能开,你没有意见吧
-
经过设计师封装后,经实现细节隐藏起来,我根本不需要看到转弯时汽车内部的工作原理,我只需要一个美丽的外观~
1、GUI: 图形化用户接口( Graphical User Interface)
用户可以使用形象的图形界面进行操作, 而不再需要记忆复杂的命令、 参数。
例子: 在 Windows 操作系统中, 删除一个文件只需要把文件“ 拖拽” 到回收站即可。
2、命令接口
1)、联机命令接口实例( Windows系统)
联机命令接口 = 交互式命令接口 (特点: 用户说一句,系统跟着做一句 )
- Step 1: win键+R
- Step 2: 输入cmd, 按回车, 打开命令解释器
- Step 3: 尝试使用 time 命令
2)、脱机命令接口实例( Windows系统)
脱机命令接口=批处理命令接口 (特点: 用户说一堆,系统跟着做一堆 )
使用windows系统的搜索功能, 搜索C盘中的 *.bat文件, 用记事本任意打开一个
**3、程序接口 **
程序接口: 可以在程序中进行系统调用来使用程序接口。 普通用户不能直接使用程序接口, 只能通过程序代码间接使用。
如: 写C语言“ Hello world” 程序时, 在printf 函数的底层就使用到了操作系统提供的显式相关的“ 系统调用” ,在有的教材中:系统调用=广义指令
系统调用类似于函数调用, 是应用程序请求操作系统服务的唯一方式
接口的总结
有时候将命令接口和程序接口统称为用户接口
1.5、作为最接近硬件的层次
操作系统需要实现对硬件机器的拓展
- 没有任何软件支持的计算机称为裸机。 在裸机上安装的操作系统,可以提供资源管理功能和方便用户的服务功能, 将裸机改造成功能更强、 使用更方便的机器
- 通常把覆盖了软件的机器成为扩充机器, 又称之为虚拟机
- 操作系统对硬件机器的拓展: 将CPU、 内存、 磁盘、 显示器、 键盘等硬件合理地组织起来, 让各种硬件能够相互协调配合, 实现更多更复杂的功能
- 普通用户无需关心这些硬件在底层是怎么组织起来工作的, 只需直接使用操作系统提供的接口即可
1.6、本节课小结
2、操作系统的四个特征
2.1、思维导图
2.2、操作系统的特征——并发
并发与并行
- 并发: 指两个或多个事件在同一时间间隔内发生。 这些事件宏观上是同时发生的, 但微观上是交替发生的。
- 并行: 指两个或多个事件在同一时刻同时发生。
举个栗子
举例说明并发与并行的区别
操作系统的并发性
- 操作系统的并发性指计算机系统中“同时” 运行着多个程序, 这些程序宏观上看是同时运行着的, 而微观上看是交替运行的。
- 操作系统就是伴随着“多道程序技术” 而出现的。 因此, 操作系统和程序并发是一起诞生的。
注意(重要考点) :
- 单核CPU同一时刻只能执行一个程序, 各个程序只能并发地执行
- 多核CPU同一时刻可以同时执行多个程序, 多个程序可以并行地执行
- 比如Intel 的第八代 i3 处理器就是 4 核CPU, 意味着可以并行地执行4个程序
即使是对于4核CPU来说, 只要有4个以上的程序需要“同时” 运行, 那么并发性依然是必不可少的, 因此并发性是操作系统一个最基本的特性
2.3、操作系统的特征——共享
共享的定义
共享即资源共享, 是指系统中的资源可供内存中多个并发执行的进程共同使用。
所谓的“同时” 往往是宏观上的, 而在微观上, 这些进程可能是交替地对该资源进行访问的(即分时共享),但也有微观上的同时共享,比如QQ音乐和LOL都同时使用计算机的扬声器
生活实例:
- 互斥共享方式: 使用QQ和微信视频。 同一时间段内摄像头只能分配给其中一个进程。
- 同时共享方式: 使用QQ发送文件A, 同时使用微信发送文件B。 宏观上看, 两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源, 从中读取数据。 微观上看, 两个进程是交替着访问硬盘的。
2.4、操作系统的特征——并发和共享的关系
并发 & 共享
并发性指计算机系统中同时存在着多个运行着的程序。
共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
举个栗子
通过上述例子来看并发与共享的关系:使用QQ发送文件A, 同时使用微信发送文件B。
- 两个进程正在并发执行(并发性)。如果失去并发性, 则系统中只有一个程序正在运行, 则共享性失去存在的意义
- 需要共享地访问硬盘资源(共享性) 。如果失去共享性, 则QQ和微信不能同时访问硬盘资源, 就无法实现同时发送文件, 也就无法并发
由此可看出:并发性和共享性互为存在条件
2.5、操作系统的特征——虚拟
虚拟的含义
虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。 物理实体(前者) 是实际存在的, 而逻辑上对应物(后者) 是用户感受到的。
显然, 如果失去了并发性, 则一个时间段内系统中只需运行一道程序, 那么就失去了实现虚拟性的意义了。 因此, 没有并发性, 就谈不上虚拟性
1、空分复用技术”
Yo~用一个例子来理解(背景知识: 一个程序需要放入内存并给它分配CPU才能执行 )
GTA5需要4GB的运行内存, QQ 需要256MB的内存, 迅雷需要256MB的内存, 网易云音乐需要256MB的内存……我的电脑只有 4GB内存
问题: 这些程序同时运行需要的内存远大于4GB, 那么为什么它们还可以在我的电脑上同时运行呢?
答: 这是虚拟存储器技术。 实际只有4GB的内存, 在用户看来似乎远远大于4GB
这就是虚拟技术中的“空分复用技术”
2、时分复用技术
Yo~用一个例子来理解(背景知识: 一个程序需要放入内存并给它分配CPU才能执行 )
某单核CPU的计算机中, 用户打开了以下软件。 。 。
问题: 既然一个程序需要被分配CPU才能正常执行, 那么为什么单核CPU的电脑中能同时运行这么多个程序呢?
解答: 这是虚拟处理器技术。 实际上只有一个单核CPU, 在用户看来似乎有6个CPU在同时为自己服务。虚拟技术中的“时分复用技术” 。 微观上处理机在各个微小的时间段内交替着为各个进程服务
2.6、操作系统的特征——异步
操作系统的异步性
异步是指, 在多道程序环境下, 允许多个程序并发执行, 但由于资源有限, 进程的执行不是一贯到底的,而是走走停停, 以不可预知的速度向前推进, 这就是进程的异步性。
由于并发运行的程序会争抢着使用系统资源, 而系统中的资源有限, 因此进程的执行不是一贯到底的, 而是走走停停的, 以不可预知的速度向前推进
如果失去了并发性, 即系统只能串行地运行各个程序, 那么每个程序的执行会一贯到底。 只有系统拥有并发性, 才有可能导致异步性。
2.7、本节 课小结
注意事项
- 理解并发和并行的区别
- 并发和共享互为存在条件
- 没有并发和共享, 就谈不上虚拟和异步, 因此并发和共享是操作系统的两个最基本的特征
3、操作系统的发展与分类
3.1、思维导图
学习提示
要重点关注和理解各类操作系统主要想解决的是什么问题, 各自的优缺点。
3.2、手工操作阶段
输入输出纯靠手工
- 操作人员通过纸带机将程序输入到计算机中,计算机再将计算结果输出到纸带机供操作人员观看
- 由于操作人员的输入速度和纸带机的读写速度远不如计算机运算的速度,导致计算机的利用率较低
3.3、批处理阶段
3.3.1、单道批处理系统
输入靠外围机,输出靠磁带
引入脱机输入/输出技术(用外围机+磁带完成) , 并由监督程序负责控制作业的输入、 输出
-
利用外围机读取纸带机中的内容,将其提前存入磁带中
-
计算机如磁带直接进行交互,并由监督程序(操作系统的雏形)负责控制作业的输入、 输出,因此计算机的利用率得到很大的提升
-
可以看到,计算机并没有在输入、输出设备上耗费过多的时间
单道批处理系统的优缺点
优点: 缓解了一定程度的人机速度矛盾,资源利用率有所提升。
缺点: 内存中仅能有一道程序运行, 只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成。 资源利用率依然很低。
3.3.2、多道批处理系统
充分压榨 CPU
为了解决单道批处理系统只能串行化执行程序的缺点,操作系统正式诞生, 用于支持多道程序并发运行
举个栗子
- 在执行 J1 任务的计算部分时,输入设备处于空闲状态,此时计算机可以执行 J2 任务的输入部分
- 当执行完 J1 的计算部分后,运算系统处于空闲状态,此时计算机可以执行 J2 任务的计算部分
- 以此类推
多道批处理系统的优缺点
优点: 多道程 资源。 资源利用率 源更能保持“忙碌序并发执行, 共享计算机大幅提升, CPU和其他资” 状态, 系统吞吐量增大。
缺点: 用户响 功能(用户提交自 计算机处理完成, 执行。 eg: 无法调 程中输入一些参数应时间长, 没有人机交互己的作业之后就只能等待中间不能控制自己的作业试程序/无法在程序运行过)
3.4、分时操作系统
面向用户交互
分时操作系统: 计算机以时间片为单位轮流为各个用户/作业服务, 各个用户可通过终端与计算机进行交互。
举个栗子
老渣的例子:老渣以1h为时间片,轮流为女朋友们服务
分时操作系统的优缺点
优点: 用户请求可以被即时响应, 解决了人机交互问题。 允许多个用户同时使用一台计算机, 并且用户对计算机的操作相互独立, 感受不到别人的存在。
缺点: 不能优先处理一些紧急任务。 操作系统对各个用户/作业都是完全公平的, 循环地为每个用户/作业服务一个时间片, 不区分任务的紧急性。
3.5、实时操作系统
保证实时性
在实时操作系统的控制下, 计算机系统接收到外部信号后及时进行处理, 并且要在严格的时限内处理完事件。 实时操作系统的主要特点是及时性和可靠性
主要优点: 能够优先响应一些紧急任务, 某些紧急任务不需时间片排队。
实时操作系统的分类
3.6、其他几种操作系统
看个热闹吧
- 网络操作系统: 是伴随着计算机网络的发展而诞生的, 能把网络中各个计算机有机地结合起来, 实现数据传送等功能, 实现网络中各种资源的共享(如文件共享) 和各台计算机之间的通信。 (如: Windows NT 就是一种典型的网络操作系统, 网站服务器就可以使用)
- 分布式操作系统: 主要特点是分布性和并行性。 系统中的各台计算机地位相同, 任何工作都可以分布在这些计算机上, 由它们并行、 协同完成这个任务。
- 个人计算机操作系统: 如 Windows XP、 MacOS, 方便个人使用。
3.7、本节课小结
4、操作系统的运行机制
4.1、预备知识: 程序是如何运行的?
源代码 → 机器指令 → 运行
- C 语言编写的代码经编译生成机器指令才能被计算机执行
- “指令” 就是处理器(CPU) 能识别、 执行的最基本命令
- 程序运行的过程其实就是CPU执行一条一条的机器指令的过程
- 注: 很多人习惯把 Linux、 Windows、 MacOS 的“小黑框” 中使用的命令也称为“指令” , 其实这是“交互式命令接口” , 注意与本节的“指令” 区别开。 本节中的“指令” 指二进制机器指令
一条高级语言的代码翻译过来可能会对应多条机器指令
4.2、内核程序 v.s 应用程序
应用程序
我们普通程序员写的程序就是“应用程序”,应用程序跑在操作系统之上。
应用程序只能使用“非特权指令” , 如:加法指令、 减法指令等
内核程序
微软、 苹果有一帮人负责实现操作系统, 他们写的是“内核程序”由很多内核程序组成了“操作系统内核” , 或简称“内核(Kernel) ”内核是操作系统最重要最核心的部分, 也是最接近硬件的部分甚至可以说, 一个操作系统只要有内核就够了(eg: Docker—>仅需Linux内核)操作系统的功能未必都在内核中, 如图形化用户界面 GUI
操作系统内核作为 “管理者” , 有时会让CPU执行一些“特权指令” , 如: 内存清零指令。 这些指令可能影响其他运行的程序,只允许“管理者” ——即操作系统内核来使用
4.3、内核态 v.s 用户态
CPU 的两种状态:内核态 & 用户态
在CPU设计和生产的时候就划分了特权指令和非特权指令, 因此CPU执行一条指令前就能判断出其类型 。那么问题来了:CPU能判断出指令类型,但是它怎么区分此时正在运行的是内核程序or应用程序?即如何实现CPU状态的切换?
CPU 有两种状态, “内核态” 和“用户态”
- 处于内核态时, 说明此时正在运行的是内核程序, 此时可以执行特权指令
- 处于用户态时, 说明此时正在运行的是应用程序, 此时只能执行非特权指令
拓展: CPU 中有一个寄存器叫 程序状态字寄存器(PSW) , 其中有个二进制位, 1表示“内核态” , 0表示“用户态”
别名: 内核态=核心态=管态; 用户态=目态
4.4、 用户态的切换
举个栗子
- 刚开机时, CPU 为“内核态” , 操作系统内核程序先上CPU运行
- 开机完成后, 用户可以启动某个应用程序
- 操作系统内核程序在合适的时候主动让出 CPU, 让该应用程序上CPU运行,操作系统内核在让出CPU之前, 会用一条特权指令把 PSW 的标志位设置为“用户态”
- 应用程序运行在“用户态”
- 此时, 一位猥琐黑客在应用程序中植入了一条特权指令, 企图破坏系统…
- CPU发现接下来要执行的这条指令是特权指令, 但是自己又处于“用户态”,这个非法事件会引发一个中断信号
- CPU检测到中断信号后, 会立即变为“核心态” , 并停止运行当前的应用程序, 转而运行处理中断信号的内核程序
- “中断” 使操作系统再次夺回CPU的控制权
- 操作系统会对引发中断的事件进行处理, 处理完了再把CPU使用权交给别的应用程序
内核态与用户态的转变
- 内核态 ==> 用户态: 执行一条特权指令——修改PSW的标志位为“用户态” , 这个动作意味着操作系统将主动让出CPU使用权
- 用户态 ==> 内核态: 由“中断” 引发, 硬件自动完成变态过程, 触发中断信号意味着操作系统将强行夺回CPU的使用权
除了非法使用特权指令之外, 还有很多事件会触发中断信号。 一个共性是, 但凡需要操作系统介入的地方, 都会触发中断信号
4.5、本节课总结
5、中断和异常
5.1、思维导图
5.2、中断的作用
中断机制
CPU 上会运行两种程序, 一种是操作系统内核程序(是整个系统的管理者), 一种是应用程序
在合适的情况下, 操作系统内核会把CPU的使用权主动让给应用程序(第二章进程管理相关内容)
“中断” 是让操作系统内核夺回CPU使用权的唯一途径,“中断” 会使CPU由用户态变为内核态, 使操作系统重新夺回对CPU的控制权
如果没有“中断” 机制, 那么一旦应用程序上CPU运行, CPU就会一直运行这个应用程序,那么操作系统的并发也无从谈起了
内核态与用户态的相互转换
内核态 --> 用户态: 执行一条特权指令将PSW的标志位修改为“用户态” , 这个动作意味着操作系统将主动让出CPU使用权
用户态 --> 内核态: 由“中断” 引发, 硬件自动完成变态过程, 触发中断信号意味着操作系统将强行夺回CPU的使用权
5.3、中断的类型
内中断 & 外中断
内中断:与当前执行的指令有关,中断信号来源于CPU内部
外中断:与当前执行的指令无关,中断信号来源于CPU外部
5.4、内中断的例子
内中断信号
内中断:与当前执行的指令有关,中断信号来源于CPU内部
举个栗子
例子 1: 试图在用户态下执行特权指令,比如黑客在用户程序中插入一条特权指,CPU 会拒绝执行这条指令
例子 2: 若当前执行的指令是非法的, 则会引发一个中断信号,比如执行除法指令时发现除数为 0
例子 3: 有时候应用程序想请求操作系统内核的服务, 此时会执行一条特殊的指令——陷入指令, 该指令会引发一个内部中断信号。执行“陷入指令” , 意味着应用程序主动地将CPU控制权还给操作系统内核。“系统调用” 就是通过陷入指令完成的
5.5、外中断的例子
外中断信号
外中断:与当前执行的指令无关,中断信号来源于CPU外部
每一条指令执行结束时, CPU都会例行检查是否有外中断信号
举个栗子
例子 1: 时钟中断——由时钟部件发来的中断信号,比如时钟部件每隔一个时间片(如 50ms) 会给CPU发送一个时钟中断信号,CPU 接收到这个中断信号之后便会去执行时钟中断的内核程序,操作系统内核会决定接下来让另一个应用程序上CPU运行
例子 2: I/O中断——由输入/输出设备发来的中断信号,比如某个程序需要请求打印机资源,当打印机的输入输出任务完成时,向CPU发送中断信号
5.6、中断的分类
内中断 & 外中断
大多数的教材、 试卷中, “中断” 特指狭义的中断, 即外中断。 而内中断一般称为“异常”
- 内中断:与当前执行的指令有关, 部中断信号的来自CPU内
- 陷入:由陷入指令引发, 是应 用程序故意引发的
- 故障:由错误条件引起的, 可能被 内核程序修复。 内核程序修 复故障后会把 CPU使用权还给应用程序, 让它继续执行 下去。 如: 缺页故障。
- 终止:由致命错误引起, 内核程序无法修复该错误, 因此一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。 如:整数除0、 非法使用特权指令
- 外中断:与当前执行的指令无关,中断信号的来自CPU外部
5.7、中断机制的基本原理
中断向量表
不同的中断信号, 需要用不同的中断处理程序来处理。 当CPU检测到中断信号后, 会根据中断信号的类型去查询“中断向量表” , 以此来找到相应的中断处理程序在内存中的存放位置。
显然, 中断处理程序一定是内核程序, 需要运行在“内核态”
5.8、本节课小结
没有中断机制, 就不可能实现操作系统, 不可能实现程序并发
6、系统调用
6.1、思维导图
6.2、什么是系统调用, 有何作用?
操作系统提供给上层的接口
操作系统作为用户和计算机硬件之间的接口, 需要向上提供一些简单易用的服务。 主要包括命令接口和程序接口。 其中, 程序接口由一组系统调用组成。
“系统调用” 是操作系统提供给应用程序(程序员/编程人员) 使用的接口, 可以理解为一种可供应用程序调用的特殊函数, 应用程序可以通过系统调用来请求获得操作系统内核的服务
6.3、系统调用与库函数的区别
系统调用 & 库函数
不涉及系统调用的库函数: 如的“取绝对值” 的函数
涉及系统调用的库函数: 如“创建一个新文件” 的函数
层级 | 作用 |
---|---|
普通应用程序 | 可直接进行系统调用, 也可使用库函数。 有的库函数涉及系统调用, 有的不涉及 |
编程语言 | 向上提供库函数。 有时会将系统调用封装成库函数, 以隐藏系统调用的一些细节, 使程序员编程更加方便。 |
操作系统 | 向上提供系统调用, 使得上层程序能请求内核的服务 |
裸机 |
6.4、小例子: 为什么系统调用是必须的?
举个栗子
生活场景: 去学校打印店打印论文, 你按下了 WPS 的“打印” 选项, 打印机开始工作。你的论文打印到一半时, 另一位同学按下了 Word 的“打印” 按钮, 开始打印他自己的论文。
思考: 如果两个进程可以随意地、 并发地共享打印机资源, 会发生什么情况?两个进程并发运行, 打印机设备交替地收到 WPS 和 Word 两个进程发来的打印请求, 结果两篇论文的内容混杂在一起了…
解决方法: 由操作系统内核对共享资源进行统一的管理, 并向上提供“系统调用” , 用户进程想要使用打印机这种共享资源, 只能通过系统调用向操作系统内核发出请求。 内核会对各个请求进行协调处理。
6.5、什么功能要用到系统调用?
系统调用的使用场合
应用程序通过系统调用请求操作系统的服务。 而系统中的各种共享资源都由操作系统内核统一掌管, 因此凡是与共享资源有关的操作(如存储分配、 I/O操作、 文件管理等) , 都必须通过系统调用的方式向操作系统内核提出服务请求, 由操作系统内核代为完成。 这样可以保证系统的稳定性和安全性, 防止用户进行非法操作。
拓展: 感兴趣的同学可以搜索“Linux 系统调用” , 了解 Linux 操作系统提供了哪些系统调用
6.6、系统调用的过程
系统调用的执行流程
-
首先应用程序正常执行指令,此时 CPU 工作在用户态
-
此时应用程序想执行 fork 系统调用,需要先通过传参指令向相应的寄存器传入参数,然后再执行陷入指令,陷入指令向 CPU 发出一条内中断信号,从而使 CPU 转入相应的中断处理程序——即系统调用的入口程序
-
在系统调用入口程序中,CPU会根据寄存器中的参数判断用户需要哪种系统调用服务,然后根据寄存器参数指定 fork 系统调用的参数,并执行该 fork 调用
-
进而转到 fork 系统调用的处理程序中。。。
执行系统调用的过程:传递系统调用参数 → 执行陷入指令(用户态) → 执行相应的内请求核程序处理系统调用(核心态) → 返回应用程序
系统调用的注意事项
陷入指令是在用户态执行的,即 Trap 指令是非特权指令, 执行陷入指令之后立即引发一个内中断, 使CPU进入核心态
发出系统调用请求是在用户态,系统调用入口程序与 fork 系统调用的处理程序均工作在内核态
注意别名:陷入指令 = trap 指令 = 访管指令
6.7、本节课小结
凡是与共享资源有关的操作、 会直接影响到其他进程的操作, 就一定需要操作系统介入, 就需要通过系统调用来实现
7、操作系统的体系结构
7.1、思维导图
7.2、 两种处理器状态、 两种程序
接下这一波灵魂拷问
有的指令“人畜无害” 。 比如: 加、 减、 乘、 除 这些普通的运算指令。
有的指令有很高的权限。 比如: 内存清零指令。 如果用户程序可以使用这个指令, 就意味着一个用户可以将其他用户的内存数据随意清零, 这样做显然是很危险的。 因此内存清除指令不允许用户程序使用。
问题: CPU如何判断当前是否可以执行特权指令?
处于用户态时,CPU只能执行非特权指令
处于核心态时,特权指令、 非特权指令都可执行
问题:如果标记这两种状态?
用程序状态字寄存器(PSW) 中的某标志位来标识当前处理器处于什么状态。 如 0 为用户态, 1 为核心态
内核程序与用户程序
内核程序:操作系统的内核程序是系统的管理者,既可以执行特权指令, 也可以执行非特权指令, 运行在核心态。
用户程序:为了保证系统能安全运行, 普通应用程序只能执行非特权指令, 运行在用户态
7.3、操作系统的内核
操作系统内核
Yo~生活经验: 我们安装完 Windows 操作系统后, 会发现操作系统提供了多种多样的功能, 比如“记事本” 、“任务管理器” 。 然而, 这些功能并不是必不可少的。 即使没有“任务管理器” , 我们仍然可以使用计算机。
内核是计算机上配置的底层软件, 是操作系统最基本、 最核心的部分。实现操作系统内核功能的那些程序就是内核程序。
操作系统内核需要运行在内核态,操作系统的非内核功能运行在用户态
操作系统的体系结构: 大内核和微内核
7.4、操作系统的体系结构
频繁变态会降低系统性能
一个故事: 现在, 应用程序想要请求操作系统的服务, 这个服务的处理同时涉及到进程管理、存储管理、 设备管理
注意: 变态的过程是有成本的, 要消耗不少时间, 频繁地变态会降低系统性能
举个栗子类比一下
操作系统的体系结构问题与企业的管理问题很相似。
内核就是企业的管理层, 负责一些重要的工作。 只有管理层才能执行特权指令, 普通员工只能执行非特权指令。 用户态、 核心态之间的切换相当于普通员工和管理层之间的工作交接
大内核: 企业初创时体量不大, 管理层的人会负责大部分的事情。 优点是效率高; 缺点是组织结构混乱, 难以维护。
微内核: 随着企业体量越来越大, 管理层只负责最核心的一些工作。 优点是组织结构清晰, 方便维护; 缺点是效率低。
典型的大内核/宏内核/单内核 操作系统: Linux、 UNIX
典型的微内操作系统: Windows NT
7.5、本节课总结
注意事项
特权指令只能在核心态下执行
内核程序只能在核心态下执行
核心态、 用户态之间的切换(后续讲解内容)