目录
1 进程
- 进程是程序的一次执行过程
- 进程是系统进行资源分配和调度的基本单位 <注:线程是任务调度和执行的基本单位>
- 进程之间不能直接交换数据,可以通过管道(共享文件)、信息传递、共享存储等方式通信
1.1 进程的状态转换
- 运行状态:进程占用CPU;
- 就绪状态:进程获得了CPU外的一切所需资源,等待CPU资源;
- 阻塞状态:进程因为等待某一事件发生而暂停运行,即使得到CPU控制权,也无法运行;
- 创建状态:进程正在被创建;
- 结束状态:进程正在从系统中消失;
状态转换
状态转换 | 触发条件 |
---|---|
就绪态–>运行态 | 进程被调度,获得CPU资源(分派CPU时间片) |
运行态–>就绪态 | 1. 时间片用完后,不得不让出处理机; 2. 可剥夺的OS中,当有更高优先级的进程就绪时,调度程序将正在执行的进程转换为就绪态 |
运行态–>阻塞态 | 1. 进程请求某一资源(如外设) 的使用和分配时; 2. 等待某一事件的发送时(如I/O操作的完成); |
阻塞态–>就绪态 | 1. I/O操作结束或中断结束时; 2. 发送了阻塞队列等待的事件,如发送了V操作,信号量+1,然后阻塞队列被唤醒到就绪队列中; |
1.2 进程的通信
- 管道(共享文件):在内存中开辟一个大小固定的内存缓冲区,本质就是一个循环队列,要求先进先出;
- 信息传递:进程间的数据交换以格式化的信息为单位,进程通过操作系统提供的“发送信息和接收信息”两个原语进行数据交换;
- 共享存储:通过共享存储区来进行通信,数据的形式和存放位置都由通信进程控制,而不是操作系统;
1.3 补充
1.3.1 进程和程序的区别与联系
PCB(进程控制块):进程的唯一标识
1.3.2 死锁与饥饿
1.3.3 同步与互斥的区别和联系
2 线程
- 线程是进程当中的一条执行流程;
- 线程是CPU调度的基本单位,可以独立执行程序;
- 线程没有自己独立的地址空间,每个线程只拥有自己独立的栈空间;
- 线程之间可以共享进程的资源,不能共享虚拟地址空间、不能共享栈指针;
- 同一个进程或不同进程内的线程可以并发执行;<注:进程之间可以并发,但不能并行>
2.1 进程和线程的区别
3 调度算法
调度算法 | 操作 |
---|---|
先来先服务调度(FCFS) | 按照进程到达的顺序处理进程。 |
短作业优先调度(SJF) | 优先选择执行时间最短的进程。 |
优先级调度(HPF) | 优先级最高的进程首先获得CPU。 |
高响应比优先调度(HRRN) | 结合了FCFS和SJF的特点。它根据响应比(等待时间+执行时间)来选择下一个执行的进程。 |
时间片轮转RR | 若时间片过大,退化为FCFS;若时间片过小,则切换频繁,处理机开销增大 |
4 死锁
- 死锁是多个进程因为竞争资源而造成的一种互相等待;
- 死锁的充分条件:资源分配图中每种资源只有一个,又出现了环路;
为什么会出现死锁
产生死锁的必要条件
四个条件都要满足才会出现死锁
条件 | 解释 |
---|---|
互斥条件 | 多个线程不能同时使用同一个资源; |
不剥夺条件 | 进程A已经拥有资源1,在使用完之前不能被其他进程获取; |
请求并保持条件 | 进程A已经有资源1,想申请资源2,但是资源2被进程B持有,进程A处于等待状态,并且A不释放资源1; |
循环等待条件 | 两个线程获取资源的顺序构成了环路; |
如何解决死锁
- 死锁预防:破坏四个必要条件之一
- 死锁避免:安全性算法、银行家算法;
- 死锁检测和解除:资源剥夺法;撤销进程法;进程回退法;
5 内存管理方法
分段 | 分页 | 段页式 | |
---|---|---|---|
地址映射表 | 每个进程一张段表 | 每个进程一张页表,页表驻留在内存 | 每个进程一个段表,每个段一个页表 |
地址结构 | 段号 + 段内偏移 | 页号 + 页内偏移 | 段号 + 段内页号 + 页内偏移 |
以什么单位划分 | 以段位单位分配; 每段是一个连续存储区、不一定等长; 段与段之间可连续,也可不连续; | 逻辑地址分配 - 按页分配; 物理地址分配 - 按内存块分配 | 分段方法来分配管理用户地址空间; 分页方法来管理物理存储空间 |
长度是否固定 | 段长不固定 | 页长固定 | 段长不固定,页长固定 |
访问主存次数 | 2次 | 2次 | 3次 |
碎片情况 | 产生外部碎片 | 产生内部碎片 | 产生内部碎片 |
5.1 分段
段表:逻辑空间与内存空间映射的表
物理地址 = 段基址 + 偏移量
5.2 分页
- 把整个虚拟和物理内存空间切成一段段固定尺寸的大小,在linux中,每一页的大小为4kB;
- 页表就是记录页面在内存中对应的物理块号;
5.3 段页
步骤1 - 将程序划分为多个有逻辑意义的段【分段】
步骤2 - 对分段划分出来的连续空间,再划分固定大小的页【分页】
6 页面置换算法(虚拟内存)
最佳置换算法OPT | 先进先出置换算法FIFO | 最近最久未使用置换算法LRU | 时钟置换算法CLOCK | |
---|---|---|---|---|
置换流程 | ![]() | ![]() | ![]() | ---- |
思想(个人理解) | 向后找最晚出现的页面置换出来; | 先进来的页面先置换出去; | 向前找最晚出现的页面置换出来; | FIFO和LRU的结合 |