操作系统总结
操作系统总结
-
操作系统引论
- 操作系统的目标与作用
- 操作系统的功能与作用
- 操作系统的概念
-
操作系统的演进历程
-
传统的人工操作模式
-
离线处理模式
-
其显著特点是实现了单道程序连续执行的功能
-
支持多道程序并行运行的批处理体系
-
分时操作系统的核心理念是实现时间片轮转
-
实时操作系统通过精确的时间戳管理来保证响应速度
-
详细对比了分时、实时以及批处理三种操作系统的主要特性及其应用场景的表格
-
操作系统的基本特征
-
- 操作系统的特征
- 操作系统的功能主要包括
-
进程管理
-
-
进程的定义与特征
-
- 进程的定义
- 进程的特征
- 进程的结构
- PCB的结构
- 进程的组织
-
进程的描述
-
- 进程的基本状态
-
进程控制
-
- 进程控制
- 原语
-
-
-
进程同步机制
-
-
并发进程间的基本关系体现在关键资源的分配与释放上。
-
关键资源(即共享数据的关键对象)
-
关键区域(即一段连续代码)
-
关键区域的使用规范包括互斥原则和顺序执行的要求。
-
数据原子性通过互斥操作来保证。
-
经典进程同步问题
-
- 生产者消费者问题
-
进程间通信
-
- 进程通信
-
线程
-
- 线程与进程的关系
-
-
喵的,写不完了,不写了
-
操作系统引论

由图可知,计算机操作系统是计算机系统中的系统软件
操作系统的目标和作用
操作系统的目的
- 方便性
- 有效性
- 可扩充性
- 开放性
操作系统的作用
从用户体验角度而言:操作系统的作用是实现人与计算机硬件系统的有效交互界面(位于计算机硬件架构最底层的软件体系)

就计算机资源而言:操作系统作为计算机系统中的资源配置者存在,并涵盖软硬件设施以及处理机、存储器、I/O设备和文件等数据。

*从功能扩充的角度看:扩展了基于操作系统的计算机系统,并被视为一种能够显著提升功能性能并提供更为便捷的操作界面的扩充型计算系统或虚拟计算平台。

操作系统的定义
到目前为止,操作系统还没有统一的定义,下面其中给出两种定义
- OS是计算机系统的组成部分之一,在执行软硬件资源管理和操作流程的同时为用户提供便捷的交互界面。
- 操作系统由负责调度作业并实现有效性评估、确保运行效率稳定性的一组程序构成,在满足用户需求的同时具备友好性特征。
操作系统的发展
世界上的第一台计算机时1946年诞生的
人工操作方式
使用起来较为不便的操作方式要求操作人员具备高深的计算机知识
运行速度较慢
同一用户占用全部系统资源
脱机输入输出方式

相较于人工操作方式而言,在优化了输入和输出的效率方面表现更为出色。
输入与输出的效率不高。
一个用户占据主导地位并独享全部计算机资源。
单道批处理系统
根据设备与主机的连接方式不同,系统可分为两类:一类是在线批处理,另一类是离线批处理。
- 单道性
- 成批性
- 顺序性
例子:

多道批处理系统
特征:
- 多道性:指的是程序能够在内存中同时运行并按需调用。
- 无序性:
- 成批性:
例子:

分时系统
内存中有多个独立运行的用户进程,在每次时间片结束后自动终止当前进程,并由系统立即切换到下一个等待处理的进程。每个进程均能在短时间内完成一次处理任务。
特点:
- 多线程支持(并行处理): 该系统能够有效实现多条指令的并行执行
- 独立执行: 每个进程均能自主完成任务,互不干扰
- 快速响应: 用户请求均能在毫秒级别内得到即时反馈
- 互动交流: 观众与机器之间可实现实时互动对话
实时系统
需具备快速响应随机发生的外部事件的能力,并能在短时间内完成事件的响应处理。
分时,实时,批处理三种操作系统的特征比较表

操作系统的基本特征
操作系统的特征
并发性:多条用户程序可在同一时间段内并行执行
共享性:系统中的资源可被内存中的多线程进程共同利用,并支持互斥共享以及同时访问
虚拟性:物理设备能够被模拟为多块虚拟设备
异步性:这些多线程过程按照非阻塞模式运行
操作系统的功能主要包括
处理机管理
存储器管理
设备管理
文件管理
接口管理
进程管理
进程的定义与特征
进程的定义
进程代表程序连续执行的结果;同时,进程代表包含程序段、数据以及PCB在内的程序实体在其运行过程中所处的状态,并被视为系统资源分配与调度的一个核心单位。
进程的特征
结构性:基于程序段、数据段以及进程控制块构建
动态性:进程可被灵活地创建、执行及撤消
并发性:在同一个时间段内运行多个进程
独立性:是单独运行并获取资源的基础单元
异步性:该系统采用非同步方式进行处理
进程的结构
进程主要由纯代码段、数据存储区域以及进程控制块构成
其中代码部分则负责描述进程所执行的功能
数据部分则存储着程序运行所需的全部数据信息
而PCB机制则既能够清晰标识出各个运行中的进程存在状态,同时也能够细致刻画出每个进程中关键时刻的状态特征
PCB的结构

PCB包含有进程相关信息、控制相关数据、资源相关信息以及CPU现场相关信息等关键要素。其中,在这些要素中最为突出的是控制相关数据与CPU现场相关信息。
PCB在系统中充当了唯一标识存在的一种独特标记。
基本结构:
标识信息:用于代表进程的身份信息包括以下几个方面:
- 进程标识符(PID):作为系统中唯一标识一个运行中的程序的独特编号
- 用户标识符(UID):表示创建该进程的用户身份信息
- 进程家族树指针(PPID):描述了该进程在整个家族树中的位置及相关成员信息
用于控制进程所需的信息主要包含以下几大类信息:
-
进程的状态信息(Status): 包括系统创建该进程(生成)、该进程中处于就绪状态(待执行)、正在执行程序(运行状态)、等待资源(等待状态)以及程序被强行结束(终止状态)等基本的状态信息。
-
进程优先级设置参数(Priority): 主要用于决定该进程中各作业队列的调度顺序及资源分配策略。
-
程序的起始地址(Start): 包括程序的基本入口地址及其对应的堆栈基址等关键信息参数。
-
CPU使用时间(CPUTIME): 指的是该进程中实际占用中央处理器的时间总量及其具体分配情况。
-
内存使用时间(RAMTIME): 指的是该进程中实际占用随机访问存储器的时间总量及其具体分配情况。
-
资源信息
-
CPU现场信息
进程的组织
线性表是由PCB构成的一种数组结构。
其优点在于无需进行动态申请和回收PCB。
然而该方法存在以下缺陷:
首先预设好的PCB尺寸不足灵活,
其次每当执行进程操作时都需要遍历整个列表进行处理。
链表
基于进程状态的分类机制将进程划分为不同的队列。
优点:支持灵活管理的系统架构能够使各队列内的资源数量进行实时调整;确保资源按状态分组存放便于快速定位。
缺点:资源分配过程存在开销;构造过程中需使用指针结构;增加额外存储开销。
基于进程的状态不同而建立多张索引表,在内存中对应地分配了这些索引表的首地址位置
进程的描述
进程的基本状态
- 三种基本状态
就绪状态:进程拥有除处理机CPU外的所有资源(这些资源数量可能有多个,并按顺序排列在就绪队列中)。
执行状态:程序正在处理机上运行(在一个单处理机系统中只有一个进程处在此种状态)。
阻塞状态:由于发生某事件(例如请求I/O操作或申请缓存空间等),进程暂停执行的状态被称为阻塞状态(也可称为睡眠状态或等待状态)。
- 进程的基本状态的转换
被置于执行状态的进程可以通过阻塞原语(block)转换为其阻塞状态
被置于阻塞状态的进程可以通过唤醒(wakeup) 原语转换为其就绪状态


进程控制
进程控制
进程控制:系统通过具备特定功能的程序来创建和撤销进程,并完成各状态间的转换工作。旨在实现多进程运行的同时保证高效率,并行处理任务以促进资源共享和协调配合。
原语
一段程序用于完成某种特定功能。
注:一旦启动的原语程序就无法被中断运行。
换言之,在这种情况下一旦开始执行就不会释放处理器直至任务结束。
- 进程创建原语

- 进程正常结束原语

- 进程终止原语

- 进程阻塞原语

引起阻塞事件:阻塞是一种主动的行为
发起对系统的请求(例如申请I/O分配)
执行某个操作(例如执行I/O操作)
当前没有新的数据输入(例如通过进程间通信)
当前没有新的任务等待处理(系统进程)
- 进程唤醒原语

引起进程唤醒事件
系统请求得以实现(例如取得I/O资源)
某个操作得以完成(例如I/O操作得以完成)
新数据已送达(其他进程已将数据送达)
又有新的工作等待处理(由系统进程负责)
- 进程挂起原语suspend

- 进程激活原语active

进程同步
并发进程之间的基本关系
并发进程之间主要存在两种关系——同步和互斥
- 同步
同步涉及多个相关进程在其执行过程中的时序安排;即从逻辑上讲,在任何情况下都需要确保两个或多个进程中按照一定的先后顺序进行操作;这种有序的关系通常是由于各个进程之间的相互协作的结果。
- 互斥
排他性使用是指在多个并行程序运行时的环境中,只允许单个并行进程占用某种资源。
临界资源
临界资源是指每次只能被单个进程占用的资源,在某个进程完成全部操作后才能由其他进程使用。
临界资源的使用遵循严格的互斥机制
临界区
临界区是指进程中访问临界资源的代码段
该进程可划分为以下部分:
非专门区域;
申请区域的功能是审查正在被访问的代码是否释放了相关的临界资源;
核心区域;
释放在所有相关联的临界资源;
非专门区域。
临界区的使用规则
- 空闲让进
- 忙则等待
- 让权等待
- 有限等待
信号量
这是一个典型的数值类型;它是一种特殊用途的机制(标记符S)。
除此之外;仅限于两种经典的原子操作能够完成对信号量的操作(即P和V操作)。
- wait(S) : 等待操作,相当于申请资源,也叫P操作
procedure wait(S);
var s: semaphore;
begin
s.value := s.value - 1;
if s.vlaue < 0 then block(s.L);
end;
代码解释

- signal(S) :发信号操作,相当于释放资源,也叫V操作
procedure wait(S);
var s: semaphore;
begin
s.value := s.value + 1;
if s.vlaue <= 0 then wakeup(s.L);
end;
代码解释

利用信号量实现复杂的进程同步

经典进程同步问题
生产者消费者问题




进程间通信
进程通信
进程通信时指进程之间的信息交换
进程间通信的方式
- 共享内存(无格式)
- 消息队列 (有格式)
- 管道(相当于文件)
线程
线程与进程的关系
- 进程中的运行实体即为 thread。
- 进而言之, 任何一个进程都可能拥有多个 thread 的实例。
- 每个进程中必然存在至少一个占主导地位的 thread, 我们将其称为 main thread。
- process 在这里扮演着 thread 承载的角色, 即 process 作为执行活动的基本单位承载着所有相关的子 thread。
