mirror of
https://github.com/Didnelpsun/CS408.git
synced 2026-11-03 05:43:42 +08:00
更新
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -48,7 +48,7 @@
|
||||
|
||||
#### 程序接口
|
||||
|
||||
用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务。由一组系统调用(也称广义指令)组成。
|
||||
用户通过程序间接使用的,编程人员可以使用它们来请求操作系统服务。由一组**系统调用**(也称**广义指令**)组成。
|
||||
|
||||
用户通过在程序中使用这些系统调用来请求操作系统为其提供服务(也称为系统调用),只能通过用户程序间接调用,如使用各种外部设备、申请分配和回收内存及其它各种要求。
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
## 操作系统的特征
|
||||
|
||||
操作系统具有并发、共享、虚拟、异步四个特征,其中并非和共享是两个最基本的特征,两者互为存在条件。
|
||||
操作系统具有并发、共享、虚拟、异步四个特征,其中并发和共享是两个最基本的特征,两者互为存在条件。
|
||||
|
||||
### 并发
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
|
||||
### 虚拟
|
||||
|
||||
多道程序设计:是指在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始到结束之间的状态。这就称为多道程序设计。多道程序技术运行的特征:多道、宏观上并行、微观上串行。
|
||||
#### 虚拟技术
|
||||
|
||||
+ 虚拟是把一个物理上的实体变为若干逻辑上的对应物。
|
||||
+ 物理实体(前者)是实际存在的;而后者是虚的,是用户感觉上的事务。
|
||||
@@ -113,10 +113,22 @@
|
||||
+ 比如$A$进程正在占用$CPU$计算,$B$进程这时也想占用$CPU$计算,$B$进程只有等,等$A$进程算完了,$A$进程去访问磁盘资源了,这时$B$进程再占用$CPU$进行计算,$B$进程还没计算完,$A$进程从磁盘取出资源了,$A$进程发现$B$这时在占用$CPU$,这时$A$进程就需要等待,等$B$算完后再继续到$CPU$中进行计算。由于每个进程占用资源的时间不固定,所以进程的执行以不可预知的速度前进。
|
||||
+ 操作系统必须在运行环境相同的条件下保证运行结果的一致性。
|
||||
|
||||
#### 多道程序设计
|
||||
|
||||
多道程序设计:是指在计算机内存中同时存放几道相互独立的程序,使它们在管理程序控制之下,相互穿插的运行。 两个或两个以上程序在计算机系统中同处于开始到结束之间的状态。这就称为多道程序设计。多道程序技术运行的特征:多道、宏观上并行、微观上串行。
|
||||
|
||||
+ 制约性:共享资源和相互协同产生了竞争。
|
||||
+ 间断性:为了竞争公平,需要间断释放资源重新竞争。
|
||||
+ 共享性。
|
||||
+ ~~封闭性~~。
|
||||
+ ~~顺序性:单道程序设计特征~~。
|
||||
|
||||
## 操作系统的发展阶段
|
||||
|
||||
### 手动操作阶段
|
||||
|
||||
无操作系统。
|
||||
|
||||
+ 缺点:
|
||||
+ 用户独占全机。
|
||||
+ 人机速度矛盾。
|
||||
@@ -132,7 +144,7 @@
|
||||
+ 缓解了一定的人机速度矛盾,资源利用率得到提升。
|
||||
+ 缺点:
|
||||
+ 内存只能有一道程序运行。只能串行执行。
|
||||
+ $CPU$大量时间用于等待I/O的完成,资源利用率低。
|
||||
+ $CPU$大量时间用于等待$I/O$的完成,资源利用率低。
|
||||
|
||||
### 多道批处理系统
|
||||
|
||||
@@ -188,25 +200,29 @@
|
||||
|
||||
### 其他操作系统
|
||||
|
||||
+ 网络操作系统:伴随计算机网络发展而但是,能连接网络中各个计算机从而能传输数据,实现网络中各种资源的共享和计算机之间的通信,如$Windows\,NT$。
|
||||
+ 网络操作系统:伴随计算机网络发展,能连接网络中各个计算机从而能传输数据,实现网络中各种资源的共享和计算机之间的通信,如$Windows\,NT$。
|
||||
+ 分布式操作系统:具有分布性和并行性,系统中各个计算机地位相同,任何工作可以分布在这些计算机上,并行写协同完成任务。
|
||||
+ 个人计算机操作系统:方便个人使用的操作系统,如$Windows\,10$、$MacOS$。
|
||||
+ 个人计算机操作系统:方便个人使用的操作系统,如$Windows\,10$、$MacOS$等。
|
||||
|
||||
## 操作系统运行环境
|
||||
|
||||
系统开机后,操作系统的程序会被自动加载到内存中的系统区,这段区域是$RAM$。
|
||||
|
||||
### 操作系统运行机制
|
||||
|
||||
#### 两种指令
|
||||
|
||||
+ 指令就是处理器能识别和执行的最基本命令。所以指令能控制处理器,需要给指令进行控制,对于危险的指令要更高的权限。
|
||||
+ 特权指令:
|
||||
+ 指具有特殊权限的指令,只用于操作系统或其他系统软件,一般不直接提供给用户使用。
|
||||
+ 指具有特殊权限的指令,只用于操作系统或其他系统软件,只能操作系统使用,普通用户不能直接使用。
|
||||
+ 如有关对$I/O$设备使用的指令、有关访问程序状态的指令、存取特殊寄存器指令。
|
||||
+ 具体而言如清内存、置时钟、输入输出、分配系统资源、修改虚存的段表和页表,修改用户的访问权限等。
|
||||
+ 非特权指令:
|
||||
+ 可以被用户自由使用的指令。
|
||||
+ 如读取时钟、从内存中取数、将运算结果装入内存、算术运算、寄存器清零等。
|
||||
|
||||
相关特权指令说明:
|
||||
|
||||
+ 置时钟:若在用户态下执行“置时钟指令”,则一个用户进程可在时间片还未到之前把时钟改回去,从而导致时间片永远不会用完,进而导致该用户进程一直占用$CPU$,这显然不合理。
|
||||
+ 输入输出:涉及中断指令,而中断处理由系统内核负责,工作在核心态。
|
||||
|
||||
@@ -219,6 +235,10 @@
|
||||
+ 用户态(目态):只能执行非特权指令。
|
||||
+ 核心态(管态):可以执行特权指令。
|
||||
|
||||
计算机通过**硬件**完成操作系统由用户态到核心态的转换,这是通过中断机制来实现的。发生中断事件时(有可能是用户程序发出的系统调用),触发中断,硬件中断机制将计算机状态置为核心态。
|
||||
|
||||
计算机通过**操作系统程序**从核心态到用户态的转换,执行完成中断后操作系统自动转换。
|
||||
|
||||
#### 程序类别
|
||||
|
||||
根据程序所可以使用指令的权限,程序分为两种:
|
||||
@@ -239,7 +259,7 @@
|
||||
+ 时钟中断实现进程切换。
|
||||
+ 中断处理:
|
||||
+ 负责实现中断机制,提高$CPU$利用率。
|
||||
+ 只有一小部分功能属于内核,负责保护和恢复现场,转移控制权道相关处理程序。
|
||||
+ 只有一小部分功能属于内核,负责保护和恢复现场,转移控制权给相关处理程序。
|
||||
+ 原语:
|
||||
+ 是一种特殊的公用程序,是最接近硬件的部分。
|
||||
+ 这种程序的运行具有原子性,运行时间短,调用次数频繁。
|
||||
@@ -269,7 +289,7 @@
|
||||
+ 内中断(异常、例外、陷入)信号来自$CPU$内部,与当前执行的命令有关,必须立刻处理,且对于无法恢复故障的需要终止进程。
|
||||
+ 自愿中断:指令中断。如系统调用时使用的访管指令(陷入指令、$trap$指令)引起的**访管中断**。
|
||||
+ 强迫中断:
|
||||
+ 硬件故障。(缺页)
|
||||
+ 硬件故障。(缺页、主存故障造成机器校验中断)
|
||||
+ 软件中断。(整数除$0$)
|
||||
+ 外中断(中断)信号来自$CPU$外部,与当前执行的命令无关。
|
||||
+ 外设请求:如$I/O$操作完成时发出的中断信号。
|
||||
@@ -285,22 +305,26 @@
|
||||
#### 外中断的处理过程
|
||||
|
||||
1. 关中断。$CPU$响应中断后,首先要保护程序的现场状态,在保护现场的过程中,$CPU$不应响应更高级中断源的中断请求。否则,若现场保存不完整,在中断服务程序结束后,也就不能正确地恢复并继续执行现行程序。
|
||||
2. 保存断点。为保证中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来的程序的断点(即程序计数器$PC$)保存起来。由硬件自动完成。
|
||||
2. 保存断点。为保证中断服务程序执行完毕后能正确地返回到原来的程序,中断隐指令将原来的程序的断点(即程序计数器$PC$)保存起来。由硬件自动完成。
|
||||
3. 中断服务程序寻址。其实质是取出中断服务程序的入口地址送入程序计数器$PC$。
|
||||
4. 保存现场和屏蔽字。进入中断服务程序后,首先要保存现场,现场信息一般是指程序状态字寄存器PSWR和某些通用寄存器的内容。
|
||||
4. 保存现场和屏蔽字。进入中断服务程序后,首先要操作系统保存现场,现场信息一般是指程序状态字寄存器$PSWR$和某些通用寄存器的内容。
|
||||
5. 开中断。允许更高级中断请求得到响应。
|
||||
6. 执行中断服务程序。这是中断请求的目的。
|
||||
7. 关中断。保证在恢复现场和屏蔽字时不被中断。
|
||||
8. 恢复现场和屏蔽字。将现场和屏蔽字恢复到原来的状态。
|
||||
9. 开中断、中断返回。中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到原程序的断点处,以便继续执行原程序。
|
||||
|
||||
第一步道第三步是$CPU$进入中断周期后,由硬件自动完成(中断隐指令),第四到九条是中断服务程序完成。
|
||||
第一步到第三步是$CPU$进入中断周期后,由硬件自动完成(中断隐指令),第四到九条是中断服务程序完成。
|
||||
|
||||
中断处理和子程序调用都会压栈保存数据。子程序调用只需保存程序断点,即该指令的下一条指令的地址;中断处理不仅要保存断点($PC$的内容),还要保存程序状态字寄存器($PSW$)的内容。
|
||||
|
||||
### 系统调用
|
||||
|
||||
#### 系统调用的概念
|
||||
|
||||
系统调用是程序接口的组成部分,用于应用软件调用,也称为广义指令。可以认为是一种可供应应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
|
||||
系统调用是程序接口的组成部分,用于应用软件调用,也称为**广义指令**。可以认为是一种可供应应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
|
||||
|
||||
通过编译,系统调用需要触发访管指令,所以形成一系列参数与访管指令。
|
||||
|
||||
#### 系统调用的过程
|
||||
|
||||
@@ -315,7 +339,7 @@
|
||||
|
||||
+ 陷入指令也称为访管指令,在用户态执行(因此不是特权指令),执行陷入指令后立刻引发一个内中断,从而$CPU$进入核心态。
|
||||
+ 发出系统调用请求的是在用户态,而对系统调用的相应处理在核心态下进行。
|
||||
+ 陷入指令是**唯一一个**只能在用户态执行,而不能核心态执行的指令。
|
||||
+ 陷入指令是**唯一一个**只能在用户态执行,而不能在核心态执行的指令。
|
||||
|
||||
#### 系统调用的类别
|
||||
|
||||
@@ -336,11 +360,114 @@
|
||||
|
||||
## 操作系统的体系结构
|
||||
|
||||
体系结构根据内核功能的多少分为:
|
||||
按功能关系分类可以分为分层式架构和模块化架构;按照内核架构分类可以分为宏内核和微内核。
|
||||
|
||||
+ 微内核:内核功能只包含基本的时钟管理、中断处理、原语功能。
|
||||
+ 优点:内核功能少,结构清晰,方便维护。
|
||||
+ 缺点:因为很多功能不在内核中,需要频繁在核心态和用户态之间切换,效率较低。
|
||||
+ 大内核:除了基本功能外还包含进程管理等其他功能。
|
||||
+ 优点:高性能。
|
||||
+ 缺点:内核代码庞大,结构混乱,难以维护。
|
||||
### 分层法
|
||||
|
||||
层$0$为硬件,层$N$为用户接口。每层只能调用紧邻其低层的功能和服务。
|
||||
|
||||
优点:
|
||||
|
||||
+ 便于系统调试和验证,简化系统设计和实现。从底层向上调试。
|
||||
+ 易扩充和维护。
|
||||
|
||||
缺点:
|
||||
|
||||
+ 分层困难,不够灵活。
|
||||
+ 依赖复杂,效率较低。
|
||||
|
||||
### 模块化
|
||||
|
||||
将系统功能划分为独立模块,通过接口进行通信。重点是划分模块的方式。
|
||||
|
||||
标准:
|
||||
|
||||
+ 内聚性,模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好。
|
||||
+ 耦合度,模块间相互联系和相互影响的程度。耦合度越低,模块独立性越好。
|
||||
|
||||
优点:
|
||||
|
||||
+ 提高了操作系统设计的正确性、可理解性和可维护性。
|
||||
+ 增强了操作系统的可适应性。
|
||||
+ 加速了操作系统的开发过程。
|
||||
|
||||
缺点:
|
||||
|
||||
+ 模块间的接口规定很难满足对接口的实际需求。
|
||||
+ 各模块设计者齐头并进,每个决定无法建立在上一个已验证的正确决定的基础上,因此无法找到一个可靠的决定顺序。
|
||||
|
||||
### 宏内核
|
||||
|
||||
除了基本功能外还包含进程管理等其他功能。
|
||||
|
||||
优点:高性能,速度快。
|
||||
|
||||
缺点:
|
||||
|
||||
+ 内核代码庞大,结构混乱,难以维护。
|
||||
+ 可靠性低,单个服务崩溃全系统崩溃。
|
||||
+ 占用空间大。
|
||||
+ 可移植性差。
|
||||
|
||||
### 微内核
|
||||
|
||||
内核功能只包含基本的进程(线程)管理、低级存储器管理、中断和陷入处理。
|
||||
|
||||
通过信息传递机制传输数据。
|
||||
|
||||
优点:
|
||||
|
||||
+ 扩展性和灵活性。
|
||||
+ 可靠性和安全性。
|
||||
+ 可移植性。
|
||||
+ 分布式计算。
|
||||
|
||||
缺点:因为很多功能不在内核中,需要频繁在核心态和用户态之间切换,效率较低。
|
||||
|
||||
### 外核
|
||||
|
||||
外核为一个程序,在内核态中运行,为虚拟机分配资源并管理。
|
||||
|
||||
优点:
|
||||
|
||||
+ 减少了映射层,不需要表格重映磁盘地址。
|
||||
+ 将多道程序与操作系统代码分离。
|
||||
|
||||
## 操作系统引导
|
||||
|
||||
1. 激活$CPU$。
|
||||
2. 硬件自检。
|
||||
3. 加载操作系统硬盘。
|
||||
4. 加载主引导记录$MBR$。
|
||||
5. 扫描硬盘分区表,加载硬盘活动分区。
|
||||
6. 加载分区引导记录$PBR$。
|
||||
7. 加载启动管理器。
|
||||
8. 加载操作系统。
|
||||
|
||||
## 虚拟机
|
||||
|
||||
```txt
|
||||
--------------------------------------------------------
|
||||
| 用户操作系统程序进程 | 用户操作系统程序进程 | |
|
||||
----------------------------------------------| 控制域 |
|
||||
| 客户操作系统 | 客户操作系统 | |
|
||||
--------------------------------------------------------
|
||||
| 第一类虚拟机管理程序 |
|
||||
--------------------------------------------------------
|
||||
| 硬件 |
|
||||
--------------------------------------------------------
|
||||
```
|
||||
|
||||
```txt
|
||||
------------------------
|
||||
| 用户程序 |
|
||||
------------------------
|
||||
| 客户操作系统 |
|
||||
-------------------------------------------
|
||||
| 第二类虚拟机管理程序 | 宿主操作系统进程 |
|
||||
-------------------------------------------
|
||||
| 宿主操作系统 |
|
||||
-------------------------------------------
|
||||
| 硬件 |
|
||||
-------------------------------------------
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user