前言
次文章为观看王道考研课程(操作系统)的笔记
视频链接:https://www.bilibili.com/video/BV1YE411D7nH?spm_id_from=333.337.search-card.all.click
1.1 操作系统的概念,功能和目标
1.1.1概念
O S \color{red}OS OS是指:
- 控制和管理整个计算机硬件和软件资源,并合理地组织调度计算机的工作和资源分配
- 以提供给用户和其它软件方便的接口和环境
- 是计算机最基本的 系统软件 \color{red}系统软件 系统软件
1.1.2操作系统的功能和目标
作为系统的管理者
- 提供的功能:
- 文件管理 2. 存储器管理 3. 处理机管理 4. 设备管理
- 目标:安全高效
作为用户和计算机硬件之间的接口
-
提供的功能
-
命令接口(允许用户 直接 \color{red}直接 直接使用)
联机命令接口:用户说一句,系统做一句
脱机命令接口:用户说一堆,系统做一堆 -
程序接口(允许用户通过程序 间接 \color{red}间接 间接使用)
由一组 系统调用 \color{red}系统调用 系统调用组成(程序接口=系统调用=广义指令) -
GUI(图形化界面)
-
-
目标:方便用户使用
作为最接近硬件的层次
需要提供的功能和目标:实现对硬件机器的扩展
没有任何软件支持的计算机称为 裸机 \color{red}裸机 裸机。在裸机上安装操作系统,可以提供资源管理的功能和方便用户的服务功能,将裸机改造成功能更强、使用更方便的机器
通常把覆盖了软件的机器称为 扩充机器 \color{red}扩充机器 扩充机器,又称为 虚拟机 \color{red}虚拟机 虚拟机
1.2 操作系统的四个特征
1.2.1并发
并发
\color{red}并发
并发:指的是两个或多个事件在同一时间间隔发生。这些事件
宏观上是同时发生
\color{red}宏观上是同时发生
宏观上是同时发生的,但
微观上是交替发生
\color{red}微观上是交替发生
微观上是交替发生的,
操作系统的并发性
\color{red}操作系统的并发性
操作系统的并发性指的是计算机中同时存在着多个运行着的程序
易混淆概念——
并行
\color{red}并行
并行:指两个或多个事件在同一时刻同时发生
1.2.2共享
共享
\color{red}共享
共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用
两种资源共享方式
-
互斥共享方式:系统中的某些资源,虽然可以提供给多个进程使用,但 一个时间段内只允许一个进程访问该资源 \color{red}一个时间段内只允许一个进程访问该资源 一个时间段内只允许一个进程访问该资源
例:使用 Q Q QQ QQ视频和微信视频,同一时间段摄像头只会分配给其中一个进程 -
同时共享方式:系统内的某些资源。 允许一个时间段内由多个进 程 ′ ′ 同 时 ′ ′ 对他们进行访问 \color{red}允许一个时间段内由多个进程''同时''对他们进行访问 允许一个时间段内由多个进程′′同时′′对他们进行访问
所谓的“同时”往往是宏观上的,而在微观上,这些进程可能是交替地对该资源进行访问(即分时共享)
例:使用 Q Q QQ QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都是在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据,微观上看,两个进程是交替访问硬盘的。
并发和共享互为存在条件
1.2.3虚拟
虚拟 \color{red}虚拟 虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上的对应物是用户感受到的
虚拟技术
- 空分复用技术(如虚拟存储器技术)
- 时分复用技术(如虚拟处理机)
没有并发性就谈不上虚拟性
1.2.4异步
异步 \color{red}异步 异步是指,在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步
1.3 O S OS OS的发展和分类
1.3.1 手工操作阶段
主要缺点:用户独占全机、人机速度矛盾导致资源利用率极低
1.3.2 批处理阶段–单道批处理系统
引入
脱机技术
/
输出技术
\color{red}脱机技术/输出技术
脱机技术/输出技术(用磁带完成),并
监督程序
\color{red}监督程序
监督程序负责控制作业的输入、输出
主要优点:缓解了一定程度的人机速度矛盾,资源利用率有所提升
主要缺点:
内存中仅能有一道程序运行
\color{red}内存中仅能有一道程序运行
内存中仅能有一道程序运行,只有该程序运行结束后才能调入下一道程序。
C
P
U
有大量的时间是在空闲等待
I
/
O
完成
\color{red}CPU有大量的时间是在空闲等待I/O完成
CPU有大量的时间是在空闲等待I/O完成。资源利用率依然很低。
1.3.3 批处理阶段–多道批处理系统
每次往内存中输入多道程序
操作系统正式诞生,并引入了中断技术,由操作系统负责管理这些程序的运行。各个程序并发执行
主要优点:多道程序
并发
\color{red}并发
并发执行,
共享
\color{red}共享
共享计算机资源。
资源利用率大幅度提升
\color{red}资源利用率大幅度提升
资源利用率大幅度提升,CPU和其它资源保持“忙碌”状态,系统吞吐量增大。
主要缺点:用户响应时间长,
没有人机交互功能
\color{red}没有人机交互功能
没有人机交互功能(用户提交自己的作业后就只能等待计算机处理完成,中间不能控制自己的作业执行)
1.3.4 分时操作系统
计算机以
时间片
\color{red}时间片
时间片为单位
轮流为各个用户
/
作业服务
\color{red}轮流为各个用户/作业服务
轮流为各个用户/作业服务,各个用户可以通过终端与计算机进行交互。
主要优点:用户请求可以被即时响应,
解决了人机交互问题
\color{red}解决了人机交互问题
解决了人机交互问题。允许多个用户同时使用一台计算机,并且用户对计算机的操作相互独立,感受不到别人的存在。
主要缺点:
不能优先处理一些紧急任务
\color{red}不能优先处理一些紧急任务
不能优先处理一些紧急任务。操作系统对各个用户/作业是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务地紧急性。
1.3.5 实时操作系统
主要优点:能够优先相应一些紧急任务,某些紧急任务不需要时间片排队。
在实时操作系统地控制下,计算机系统接收到外部信号后及时进行处理,并且
要在严格地时限内处理完事件
\color{red}要在严格地时限内处理完事件
要在严格地时限内处理完事件,实时操作系统的主要特点是
及时性和可靠性
\color{red}及时性和可靠性
及时性和可靠性
分类:
- 硬实时系统:必须在绝对严格的规定时间内完成处理 例:导弹控制系统,自动驾驶系统
- 软实时系统:能够接受偶尔违反时间规定 例:12306火车订票系统
1.3.6 其它操作系统
- 网络操作系统:是伴随着计算机网络的发展而诞生的,能够把网络中各个计算机有机地结合起来,实现数据传送等功能, 实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信 \color{red}实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信 实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如 W i n d o w s N T Windows\ NT Windows NT就是一种典型的网络操作系统,网站服务器就可以使用)
- 分布式操作系统:主要特点是 分布性和并行性 \color{red}分布性和并行性 分布性和并行性。系统中的各台计算机地位相同, 任何工作都可以在这些计算机上由他们并行 \color{red}任何工作都可以在这些计算机上由他们并行 任何工作都可以在这些计算机上由他们并行, 协同完成这个任务 \color{red}协同完成这个任务 协同完成这个任务
- 个人计算机操作系统:如 W i n d o w s X P , M a c O S Windows\ XP,\ MacOS Windows XP, MacOS,方便个人使用
1.4 OS的运行机制和体系结构
1.4.1 预备知识:指令
简单来说,指令就是处理器(CPU)能识别、执行的最基本的命令
1.4.2 运行机制
两种指令
- 特权指令:不允许用户程序使用 如:内存清零指令
- 非特权指令:运行用户程序使用 如:加法指令
CPU判断当前是否可以执行特权指令的方法
两种处理器状态:
- 用户态(目态)此时CPU只能执行非特权指令
- 核心态(管态)特权指令、非特权指令都可以执行
(用程序状态字寄存器(
P
S
W
PSW
PSW)中的某标志位来识别当前处理器处于什么状态, 如0为用户态,1为核心态)
两种程序:
- 内核程序 :操作系统的内核程序是系统的管理者,既可以执行特权指令,也可以执行非特权指令,运行在核心态
- 应用程序 :为了保证系统程序能安全运行,普通应用程序只能执行非特权指令,运行在用户态
1.4.3 操作系统内核
内核 \color{red}内核 内核是计算机上配置的底层 软件 \color{red}软件 软件,是操作系统最基本,最核心的部分,实现操作系统内核功能的那些程序就是 内核程序 \color{red}内核程序 内核程序。
操作系统内核 { 时钟管理 实现计时功能 中断处理 负责实现中断机制 原语 { 是一种特使的程序 处于操作系统的最底层,是最接近硬件的部分 这种程序的运行具有 原子性 − 运行不可中断,一气呵成 运行时间短,调用频繁 对系统资源进行管理的功能 { 进程管理 存储器管理 设备管理 操作系统内核 \begin{cases} 时钟管理\ \ \ 实现计时功能\\ 中断处理\ \ \ 负责实现中断机制\\原语\begin{cases}是一种特使的程序\\处于操作系统的最底层,是最接近硬件的部分\\这种程序的运行具有{\color{red}{原子性}}-运行不可中断,一气呵成\\运行时间短,调用频繁\end{cases}\\对系统资源进行管理的功能\begin{cases}进程管理\\存储器管理\\设备管理\end{cases} \end{cases} 操作系统内核⎩ ⎨ ⎧时钟管理 实现计时功能中断处理 负责实现中断机制原语⎩ ⎨ ⎧是一种特使的程序处于操作系统的最底层,是最接近硬件的部分这种程序的运行具有原子性−运行不可中断,一气呵成运行时间短,调用频繁对系统资源进行管理的功能⎩ ⎨ ⎧进程管理存储器管理设备管理
时间管理,中断处理,原语三者与硬件关联密切
对系统资源进行管理的功能:有的操作系统不把这部分功能归为”内核功能“,也就是说,不同的操作系统,对内核功能的划分可能并不一样。
1.4.4 操作系统的体系结构
操作系统的体系结构 { 大内核 { 将操作系统的主要功能模块都作为系统内核 , 运行在核心态 优点:高性能 缺点:内核代码庞大,结构混乱,难以维护 微内核 { 只把最基本的功能保留在内核 优点:内核功能少,结构清晰,方便维护 缺点:需要频繁的在核心态和用户态之间切换,性能低 操作系统的体系结构 \begin{cases}大内核\begin{cases}将操作系统的主要功能模块都作为系统内核,运行在核心态\\优点:高性能\\缺点:内核代码庞大,结构混乱,难以维护\end{cases}\\微内核\begin{cases}只把最基本的功能保留在内核\\优点:内核功能少,结构清晰,方便维护\\缺点:需要频繁的在核心态和用户态之间切换,性能低\end{cases} \end{cases} 操作系统的体系结构⎩ ⎨ ⎧大内核⎩ ⎨ ⎧将操作系统的主要功能模块都作为系统内核,运行在核心态优点:高性能缺点:内核代码庞大,结构混乱,难以维护微内核⎩ ⎨ ⎧只把最基本的功能保留在内核优点:内核功能少,结构清晰,方便维护缺点:需要频繁的在核心态和用户态之间切换,性能低
1.5 中断和异常
1.5.1 中断机制的诞生
为了解决系统资源利用率低的问题,人们发明了操作系统(作为计算机的管理者),引如中断机制,实现了多道程序并发执行。
本质:发生中断
\color{red}本质:发生中断
本质:发生中断就意味着
需要操作系统介入,开展管理工作
\color{red}需要操作系统介入,开展管理工作
需要操作系统介入,开展管理工作
1.5.2 中断的概念和作用
- 当中断发生时,CPU立即进入 核心态 \color{red}核心态 核心态
- 当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理
- 对于不同的中断信号,会进行不同的处理
发生了中断,就意味着需要操作系统的介入,开展管理工作,由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。
中断
\color{red}中断
中断可以时CPU从
用户态切换为核心态,使操作系统获得计算机的控制权
\color{red}用户态切换为核心态,使操作系统获得计算机的控制权
用户态切换为核心态,使操作系统获得计算机的控制权。有了中断,才能实现多道程序的并发执行。
用户态、核心态的装换实现方式:
”
用户态
−
>
核心态
\color{red}用户态->核心态
用户态−>核心态“是通过
中断
\color{red}中断
中断实现的,并且
中断
\color{red}中断
中断是
唯一
\color{red}唯一
唯一途径
”
核心态
−
>
用户态
\color{red}核心态->用户态
核心态−>用户态“的切换时通过
执行一个特权指令
\color{red}执行一个特权指令
执行一个特权指令,将撤程序状态字(
P
S
W
PSW
PSW)的标志位设置位”用户态“
1.5.3 中断的分类
中断
(
广义的中断
)
{
内中断
(
也称异常、例外、陷入
)
{
自愿中断
−
−
指令中断
(
如系统调用时使用的访管指令
(
又叫陷入指令、
t
r
a
p
指令
)
)
强迫中断
(
{
硬件故障
(
如缺页
)
软件中断
(
如整除
0
)
外中断
(
中断
(
狭义上的中断
)
)
{
外设请求
(
如:
I
/
O
操作完成发出的中断信号
)
人工干预
(
如:用户强行终止一个进程
)
中断(广义的中断)\begin{cases}内中断(也称异常、例外、陷入)\begin{cases}自愿中断--指令中断(如系统调用时使用的访管指令(又叫陷入指令、trap指令))\\强迫中断(\begin{cases}硬件故障(如缺页)\\软件中断(如整除0)\end{cases}\end{cases}\\外中断(中断(狭义上的中断))\begin{cases}外设请求(如:I/O操作完成发出的中断信号)\\人工干预(如:用户强行终止一个进程)\end{cases} \end{cases}
中断(广义的中断)⎩
⎨
⎧内中断(也称异常、例外、陷入)⎩
⎨
⎧自愿中断−−指令中断(如系统调用时使用的访管指令(又叫陷入指令、trap指令))强迫中断({硬件故障(如缺页)软件中断(如整除0)外中断(中断(狭义上的中断)){外设请求(如:I/O操作完成发出的中断信号)人工干预(如:用户强行终止一个进程)
内中断:信号来源:CPU
内部
\color{red}内部
内部,与当前执行的指令
有关
\color{red}有关
有关
外中断:信号来源:CPU
外部
\color{red}外部
外部,与当前执行的指令
无关
\color{red}无关
无关
另一种分类方式
中断
(
广义的中断
)
{
内中断
{
陷阱、陷入
(
t
r
a
p
)
有意而为之的异常,如系统调用
故障
(
f
a
u
l
t
)
由错误条件引起的,可能被故障处理程序修复,如缺页
终止
(
a
b
o
r
t
)
不可修复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整除
0
外中断
{
I
/
O
中断请求
人工干预
中断(广义的中断)\begin{cases}内中断\begin{cases}陷阱、陷入(trap)\ \ \ \ 有意而为之的异常,如系统调用\\故障(fault)\ \ \ \ 由错误条件引起的,可能被故障处理程序修复,如缺页\\终止(abort)\ \ \ \ 不可修复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整除0\end{cases}\\外中断\begin{cases}I/O中断请求\\人工干预\end{cases} \end{cases}
中断(广义的中断)⎩
⎨
⎧内中断⎩
⎨
⎧陷阱、陷入(trap) 有意而为之的异常,如系统调用故障(fault) 由错误条件引起的,可能被故障处理程序修复,如缺页终止(abort) 不可修复的致命错误造成的结果,终止处理程序不再将控制返回给引发终止的应用程序,如整除0外中断{I/O中断请求人工干预
1.5.4 外中断的处理过程
- 执行完每个指令后,CPU都要检查当前是否有外部中断信号
- 如果检测到外部中断信号,则需要保护被中断进程的CPU环境(如程序状态字 P W S PWS PWS、程序计数器 P C PC PC、各种通用寄存器)
- 根据中断信号类型转入相应的中断处理程序
- 恢复原进程的CPU环境并退出中断,返回原进程继续往下执行
1.6 系统调用
1.6.1 什么是系统调用,有何作用?
”系统调用“是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可提供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。
应用程序通过 系统调用 \color{red}系统调用 系统调用请求操作系统服务。系统中各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等),都需要通过系统调用的方式向操作系统提出请求,由操作系统代为完成,这样 可以保证系统的稳定性和安全性 \color{red}可以保证系统的稳定性和安全性 可以保证系统的稳定性和安全性,防止用户进行非法操作
系统调用 ( 按功能分类 ) { 设备管理 完成设备的 请求 / 释放 / 启动 等功能 文件管理 完成文件的 读 / 写 / 创建 / 删除 等功能 进程控制 完成进程的 创建 / 撤销 / 阻塞 / 唤醒 等功能 进程通信 完成进程之间的 消息传递 / 信号传递 等功能 内存管理 完成内存的 分配 / 回收 等功能 系统调用(按功能分类)\begin{cases}设备管理\ \ \ \ 完成设备的\ 请求/释放/启动\ 等功能\\文件管理 \ \ \ 完成文件的\ 读/写/创建/删除\ 等功能\\进程控制\ \ \ \ 完成进程的\ 创建/撤销/阻塞/唤醒\ 等功能\\进程通信\ \ \ \ 完成进程之间的\ 消息传递/信号传递\ 等功能\\内存管理\ \ \ \ 完成内存的\ 分配/回收\ 等功能\end{cases} 系统调用(按功能分类)⎩ ⎨ ⎧设备管理 完成设备的 请求/释放/启动 等功能文件管理 完成文件的 读/写/创建/删除 等功能进程控制 完成进程的 创建/撤销/阻塞/唤醒 等功能进程通信 完成进程之间的 消息传递/信号传递 等功能内存管理 完成内存的 分配/回收 等功能
系统调用相关处理涉及到对系统资源的管理、对进程的控制,这些功能需要执行一些 特权指令 \color{red}特权指令 特权指令才能完成,因此 系统调用的相关处理 \color{red}系统调用的相关处理 系统调用的相关处理需要在 核心态 \color{red}核心态 核心态下进行。
1.6.2 系统调用和库函数的区别
普通应用程序 可直接进行系统调用,也可以使用库函数。 有的库函数涉及系统调用,有的不涉及 编程语言 向上提供库函数。有时会将系统调用封装成库函数。 以隐藏系统调用的一些细节,使上层系统调用更加方便。 操作系统 向上提供系统调用 裸机 \begin{array}{|c|l|} \hline 普通应用程序&可直接进行系统调用,也可以使用库函数。\\&有的库函数涉及系统调用,有的不涉及\\ \hline 编程语言&向上提供库函数。有时会将系统调用封装成库函数。\\&以隐藏系统调用的一些细节,使上层系统调用更加方便。\\ \hline 操作系统&向上提供系统调用\\ \hline裸机\\\hline \end{array} 普通应用程序编程语言操作系统裸机可直接进行系统调用,也可以使用库函数。有的库函数涉及系统调用,有的不涉及向上提供库函数。有时会将系统调用封装成库函数。以隐藏系统调用的一些细节,使上层系统调用更加方便。向上提供系统调用
不涉及系统调用的库函数:如”取绝对值“的函数
涉及系统调用的库函数:如”创建一个新文件“的函数
1.6.3 系统调用背后的过程
传递系统调用参数 -> 执行陷入命令(
用户态
\color{red}用户态
用户态) -> 执行系统调用相应服务程序(
核心态
\color{red}核心态
核心态) -> 返回用户程序
注意:
- 陷入指令 \color{red}陷入指令 陷入指令是在 用户态 \color{red}用户态 用户态执行的,执行陷入指令之后立即引发一个 内中断 \color{red}内中断 内中断,从而CPU 进入核心态 \color{red}进入核心态 进入核心态
- 发出系统调用请求 \color{red}发出系统调用请求 发出系统调用请求是在 用户态 \color{red}用户态 用户态,而 对系统调用的相应处理 \color{red}对系统调用的相应处理 对系统调用的相应处理在 核心态 \color{red}核心态 核心态下进行
- 陷入指令是唯一一个只能在用户态执行,不能在核心态执行的指令