---------------------------------------------------------------------------------------------------------------------------------
声明 ①极简
②可能有误
③持续更新中
---------------------------------------------------------------------------------------------------------------------------------
一、计系
1.1、OS的基本概念
操作系统——定义
(Operating System,OS)
指控制和管理,整个计系的硬和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基本的系统软件
操作系统——功能
1️⃣系统资源的管理者
①处理机管理
②存储器管理
③文件管理
④设备管理
2️⃣向上层提供服务
①GUI图形用户界面
②命令接口
联机命令接口=交互式命令接口(cmd)(人说一句,系做一句)
脱机命令接口=批处理命令接口(bat)(人说一堆,系统做一堆)
③程序接口
系统调用(广义指令),通过代码间接调用程序接口
(系统调用,是应用程序请求OS服务的唯一方式)
3️⃣对硬件机器的扩展
①裸机,无任何软件支持的计算机
②扩充机器(虚拟机),覆盖了软件
操作系统——特征
①并发(最基本)
②共享(最基本)(并发和共享互为存在条件)
③虚拟
④异步
①
并发
≥2个事件在同一时间间隔内发生。这些事件宏观上同时发生,微观上是交替发生
并行
≥2个事件在同一时刻发生
OS和程序并发一起诞生
单核CPU,同一时刻,just执行一个程序,各个程序只能并发执行
多核CPU,同一时刻,可同时执行多个程序,多个程序可以并行执行
②
共享
即资源共享,指系统中的资源,可供内存中多个并发执行的进程共同使用
互斥共享方式:系统中的某些资源,然可提供给多个进程使用,但一个时间段内只允许一个进程访问该资源
同时共享方式:系统中的某些资源,允许一个时间段内,由多个进程“同时”对它们进行访问
③
虚拟
把一个物理上的实体变为若干个逻辑上的对应物。物理实体(前者)是实际存在的,而逻辑上对应物(后者)是用户感受到的
时分复用技术(虚拟处理器)(无并发性,无虚拟性)
空分复用技术(虚拟存储器)
④
异步
在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预知的速度向前推进,这就是进程的异步性
有并发性,才可能有异步性
1.2、OS的发展历程
1️⃣手工操作阶段
缺
①用户独占全机
②人机速度矛盾,导致资源利用率低
2️⃣批处理阶段——单道批处理系统
引入脱机输入出技术,由监督程序控制作业输入出
①外围机,把程序存到磁带
②计读取磁带,磁带的读写速度>纸带机
优
①缓解人机速度矛盾
②资源利用率↑
缺
①内存中,just一道程序运行
②CPU大量时间,在空闲等待IO完成
③资源利用率依然低
2️⃣批处理阶段——多道批处理系统
优
①多道程序并发执行,共享计算机资源
②资源利用率大幅↑
缺
①用户响应时间长
②无人机交互
3️⃣分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互
优
①用户请求可被及时响应
②解决人机交互
③允许多用户使用一台计算机
④用户对计算机的操作相互独立
缺
①完全公平
②不能优先处理紧急任务
4️⃣实时操作系统
优
①优先相应紧急任务
②及时性
③可靠性
硬实时系统,必须在严格规定时间内完成处理
软实时系统,可偶尔违反时间规定
1.3、OS运行环境
1,OS的运行机制
指令
处理器CPU,能识别、执行的最基本命令
(操作系统)内核
由很多内核程序组成
内核
①OS最重要、最核心的部分
②最接近硬件的部分
程序运行
CPU执行一条一条的机器指令
CPU——判断指令类型
①内核态,运行内核程序,可执行特权指令
②用户态,运行应用程序,just执行非特权指令
CPU——程序状态字寄存器PSW
1,内核态=核心态=管态
0,用户态=目态
CPU——状态切换
①内—>用,执行一条特权指令,修改PSW=0
②用—>内,中断,硬件自动变态,OS强行夺回CPU使用权
2,中断
中断——定义
1️⃣内中断
①与当前指令有关
②中断信号来源于CPU内部
③也称异常、例外
(系统调用,通过陷入指令)
2️⃣外中断
①与当前指令无关
②中断信号来源于CPU外部
③也称中断
中断——类型
1️⃣内中断
①陷阱、陷入,应用程序故意引发
②故障,错误条件引起,内核程序可修复
③终止,致命错误引起,内核程序不可修复
2️⃣外中断
①时钟中断
②I/O中断请求
中断——基本原理
不同的中断信号,要用不同的中断处理程序
①CPU检测到中断信号
②根据信号类型,查中断向量表
③找到中断处理程序的位置
3,系统调用
系统调用——定义
①OS提供给应用程序,使用的接口
②一种可供应用程序,调用的特殊函数
③应用程序,可通过系统调用,来请求OS内核的服务
系统调用——功能——why
①应用程序通过系统调用,请求OS的服务,而共享资源all由OS内核管理
②凡是共享资源,影响其他进程,需要OS介入,必须通过系统调用实现
系统调用——过程
①传参
②执行陷入指令(=trap指令、访管指令)(在用户态下)(非特权指令)
③内核程序,处理系统调用
④返回应用程序
4,OS结构
0,基本概念
原语
①一种特殊的程序,有原子性
②不可中断
CPU状态转换
①有成本
②耗时
③频繁变态,会降低系统性能
1,分层结构
思想
①内核分多层,每层可单向调用更低一层提供的接口
②最底层是硬件,最高层是用户接口
优
①自底向上逐层调试、验证
②易扩充和维护,各层之间调用接口清晰固定
缺
①just可调用相邻低层,难定义各层的边界
②效率低,不可跨层调用,系统调用时间长
2,模块化
思想
①将内核划分为多个模块,各模块之间相互协作
②内核=主模块+可加载内核模块
优
①模块间逻辑清晰、易维护,确定模块间接口后即可多模块同时开发
②支持动态加载新模块到内核,而无需重新编译整个内核,增强OS适应性
③任何模块可直接调用其他模块,无需通信,效率高
缺
①接口未必合理、实用
②模块间相互依赖,更难调试和验证
3,大内核
(也称宏内核、单内核)
思想
all系统功能放在内核
优
性能高,内核内部各种功能都可直接相互调用
缺
①内核功能复杂,难维护
②大内核中某个功能出错,可能导致整个系统崩溃
4,微内核
思想
内核,只放入(中断、原语、进程通信)等最核心功能
优
①内核小功能少,易维护,可靠性高
②内核外,某功能出错,不会导致整个系统崩溃
缺
①性能低,需频繁变态
②用户态下,各功能模块,不可直接相互调用,只能通过内核的消息传递来间接通信
5,外核
思想
①内核负责进程调度、进程通信
②外核负责为用户进程分配未经抽象的硬件资源
③外核负责保证资源使用安全
优
①外核可直接给用户进程分配“不虚拟、不抽象”的硬件资源
②用户进程可灵活使用硬件资源
③减少虚拟硬件资源的映射层,效率↑
缺
①系统一致性 ↓
②系统更复杂
5,操作系统引导
(即开机过程)
①CPU从一个特定主存地址开始,取指令,执行ROM中的引导程序(先进行硬件自检,再开机)
②将磁盘的第一块——主引导记录,读入内存,执行磁盘引导程序,扫描分区表
③从活动分区(又称主分区,即安装了操作系统的分区)读入分区引导记录,执行其中的程序
④从根目录下找到完整的操作系统初始化程序(即 启动管理器)并执行,完成“开机”的一系列动作
6,虚拟机
虚拟机——定义
使用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,每个虚拟机器都可以独立运行一个OS
虚拟机——别称
①虚拟机管理程序
②虚拟机监控程序
③Virtual Machine Monitor
④Hypervisor
⑤Virtual Machine, VM
虚拟机——分类
虚拟机——区别
二、进程与线程
2.1、进程与线程
1,进程的概念
程序:静态,就是个存放在磁盘里的可执行文件
进程:动态,是程序的一次执行过程
同一个程序多次执行会对应多个进程
PID(Process ID,进程ID):当进程被创建时,OS为该进程分配一个唯一的、不重复的身份证号
UID:进程所属用户ID
OS需记录
①PID、UID——>区分各进程
②给进程分配的资源——>管理资源
③进程的运行情况——>对进程的控制、调度
上面一坨,即OS对进程管理所需的信息,all存在一个数据结构PCB (Process Control Block)(进程控制块)中
PCB——存的东西
①进程描述信息
②进程控制和管理信息
③资源分配清单
④处理机相关信息
PCB是进程存在的唯一标志
进程实体(进程映像)——组成
①PCB——>给OS用
②程序段
③数据段
进程——定义
是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
进程调度——定义
OS让这个进程在CPU上运行
进程实体(静态),是进程(动态)的快照
进程——特征
①动态性
②并发性
③独立性
④异步性
⑤结构性
2,进程的状态
进程——状态转换
PCB中,变量state表示进程当前状态
进程——组织方式
①链接
②索引
3,进程的控制
原语的执行有原子性,执行过程只能一气呵成,不能中断
原子性,用关/开中断指令两个特权指令实现
正常
CPU执行完一条指令,检查有无中断信号,执行中断程序
关中断
CPU不检查中断信号,开中断后,才恢复检查
进程上下文(进程运行环境)
进程在运行过程中,寄存器存的中间结果
进程控制——原语
①创建,创建态—>就绪态
②撤销,就绪态/阻塞态/运行态—>终止态
③阻塞,运行态—>阻塞态
④唤醒,阻塞态—>就绪态(③④要成对出现)
⑤切换,运行态—>就绪态
就绪态—>运行态
进程控制原语——共性
①更新PCB的信息
②把PCB插入合适队列
③分配、回收资源
4,进程的通信
进程间通信——定义
(Inter-Process Communication, IPC)
指两个进程之间产生数据交互
进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立
为了保证安全,一个进程不能直接访问另一个进程的地址空间
进程通信——方式
1️⃣共享存储
互斥地访问共享空间,由通信进程自己实现
①基于数据结构的共享
例,int a[3]
速度慢、限制多,低级
②基于存储区的共享
OS在内存中划出一块共享存储区,数据的形式、存放位置都由通信进程控制,而不是OS速度快,高级
2️⃣消息传递
进程间的数据交换以格式化消息为单位
进程通过OS提供的“发送消息/接收消息”两个原语进行数据交换
格式化消息(Message)——组成
①直接通信,消息发送进程,要指明接收进程的ID
②间接通信,信箱
3️⃣管道通信
管道(pipe文件)
一个特殊的共享文件,在内存中开辟一个大小固定的内存缓冲区(循环队列)
注
①管道只能半双工通信,某一时间内只能单向传输
(if要双向同时通信,设两管道)
②各进程,要互斥地访问管道(由OS实现)
③当管道写满时,写进程将阻塞,直到读进程将管道中的数据取走,即可唤醒写进程
④当管道读空时,读进程将阻塞,直到写进程往管道中写入数据,即可唤醒读进程
⑤
问题
管道中的数据被读出,就彻底消失。so多进程读同一管道时,会错乱
解决
(1)一个管道允许多个写进程,一个读进程(标准答案)
(2)允许多个写进程,多个读进程,但系统让各个读进程,轮流从管道中读数据(Linux)
⑥写进程往管道写数据,即便管道没被写满,只要管道没空,读进程就可以从管道读数据
⑦读进程从管道读数据,即便管道没被读空,只要管道没满,写进程就可以往管道写数据