文章目录
操作系统的演进
多道程序设计
- 多道程序设计是指在计算机内存中同时存放多个程序
- 多道程序在计算机的管理程序之下相互穿插运行
操作系统五大功能
操作系统相关概念
并发性
- 并行是指两个或多个事件可以在同一个时刻发生
- 并发是指两个或多个事件可以在同一个时间间隔发生
共享性
-
共享性表现为操作系统中的资源可供多个并发的程序共同使用
-
这种共同使用的形式称之为资源共享
-
当资源被程序A占用时,其他想使用的话只能等待,
只有进程A使用完以后,其他进程才可以使用该资源 -
某种资源在一段时间内并发地被多个程序访问,这种“同时”是宏观的,从宏观去看该资源可以被同时访问
虚拟性
- 虚拟性表现为把一个物理实体转变为若干个逻辑实体
- 物理实体是真实存在的,逻辑实体是虚拟的
- 虚拟的技术主要有时分复用技术和空分复用技术
- 时分复用技术:
- 资源在时间上进行复用,不同程序并发使用
- 多道程序分时使用计算机的硬件资源
- 提高资源的利用率
- 空分复用技术
- 空分复用技术用来实现虚拟磁盘、虚拟内存等
- 提高资源的利用率,提升编程效率
- 异步性
- 在多道程序环境下,允许多个进程并发执行
- 进程在使用资源时可能需要等待或放弃
- 进程的执行并不是一气呵成的,而是以走走停停的形式推进
进程管理之进程实体
为什么需要进程
- 进程是系统进行资源分配和调度的基本单位
- 进程作为程序独立运行的载体保障程序正常执行
- 进程的存在使得操作系统资源的利用率大幅提升
进程的实体
- 标识符:标识符唯一标记一个进程,用于区别其他进程
- 状态:标记进程的进程状态,如:运行态
- 程序计数器:进程即将被执行的下一条指令的地址
- 内存指针:程序代码、进程数据相关指针
- 上下文数据:进程执行时处理器存储的数据
- IO 状态信息:被进程IO操作所占用的文件列表
- 记账信息: 使用处理器时间、时钟数总和等
进程控制块(PCB)
- 用于描述和控制进程运行的通用数据结构
- 记录进程当前状态和控制进程运行的全部信息
- PCB的使得进程是能够独立运行的基本单位
- PCB是操作系统进行调度经常会被读取的信息
- PCB是常驻内存的,存放在系统专门开辟的PCB区域内
进程与线程
- 线程是操作系统进行运行调度的最小单位
- 包含在进程之中,是进程中实际运行工作的单位
进程管理之进程实体 - 一个进程可以并发多个线程,每个线程执行不同的任务
进程的五状态模型
- 就绪状态
- 当进程被分配到除CPU以外所有必要的资源后
- 只要再获得CPU的使用权,就可以立即运行
- 其他资源都准备好、只差CPU资源的状态为就绪状态
- 执行状态
- 进程获得CPU,其程序正在执行称为执行状态
- 在单处理机中,在某个时刻只能有一个进程是处于执行状态
- 阻塞状态
- 进程因某种原因如:其他设备未就绪而无法继续执行
- 从而放弃CPU的状态称为阻塞状态
- 创建状态
建进程时拥有PCB但其他资源尚未就绪的状态称为创建状态
- 进程结束由系统清理或者归还PCB的状态称为终止状态
进程间的同步
- 对竞争资源在多进程间进行使用次序的协调
- 使得并发执行的多个进程之间可以有效使用资源和相互合作
临界资源
临界资源指的是一些虽作为共享资源却又无法同时被多个线程共同 访问的共享资源。当有进程在使用临界资源时,其他进程必须依据 操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使 用共享资源。
进程同步的原则
- 空闲让进:资源无占用,允许使用
- 忙则等待:资源有占用,请求进程等待
- 有限等待:保证有限等待时间能够使用资源
- 让权等待:等待时,进程需要让出CPU
进程同步的方法
- 消息队列
- 共享存储
- 信号量
线程同步
方法: 互斥量 读写锁 自旋锁 条件变量
Linux的进程管理
进程的类型
- 前台进程就是具有终端,可以和用户交互的进程
- 后台进程
- 与前台进程相对,没有占用终端的就是后台进程
- 后台程序基本上不和用户交互,优先级比前台进程低
- 将需要执行的命令以“&”符号结束
- 守护进程
- 守护(daemon)进程是特殊的后台进程
- 很多守护进程在系统引导的时候启动,一直运行直到系统关闭
- Linux有很多典型的守护进程
进程的标记
- 进程ID
- 进程ID是进程的唯一标记,每个进程拥有不同的ID
- 进程ID表现为一个非负整数,最大值由操作系统限定
- 进程的状态标记
操作Linux进程的相关命令
ps命令,top命令, kill命令
- ps命令常用于显示当前进程的状态
ps命令常配合aux参数或ef参数和grep命令检索特定进程 - kill命令发送指定信号给进程, kill –l 可以查看操作系统支持的信号
- top,查看全部进程。
作业管理之进程调度
进程调度概述
进程调度是指计算机通过决策决定哪个就绪进程可以获得CPU使用
进程调度算法
◆ 先来先服务调度算法
◆ 短进程优先调度算法
◆ 高优先权优先调度算法
◆ 时间片轮转调度算法
作业管理之死锁
死锁的产生
- 共享资源数量不满足各个进程需
- 各个进程之间发生资源竞争导致死锁
死锁的四个必要条件
◆ 互斥条件
◆ 请求保持条件
◆ 不可剥夺条件
◆ 环路等待条件
预防死锁的方法
银行家算法
◆ 是一个可操作的著名的避免死锁的算法
◆ 以银行借贷系统分配策略为基础的算法
存储管理之内存分配与回收
内存分配的过程
-
单一连续分配
◆ 单一连续分配是最简单的内存分配方式
◆ 只能在单用户、单进程的操作系统中使用 -
固定分区分配
◆ 固定分区分配是支持多道程序的最简单存储分配方式
◆ 内存空间被划分为若干固定大小的区域
◆ 每个分区只提供给一个程序使用,互不干扰
动态分区分配
◆ 首次适应算法(FF算法)
◆ 最佳适应算法(BF算法)
◆ 快速适应算法(QF算法)
内存回收的过程
… 空闲区1 回收区 … …
◆ 不需要新建空闲
◆ 不需要新建空闲链表节点
◆ 只需要把空闲区1的容量增大为空闲区即可