前言:后天考试,一学期没去上课啥都不会,于是从零开始学OS了。打算边学边写一篇博客,一些考不到或太繁杂的知识就不说了,面向60分学习(
如果文中有错误还请各位大佬指出QAQ
以下内容部分参考王道论坛的《操作系统考研复习指导》(@avgstuBoboge大佬发的pdf,有水印)。
文章目录
- 2.进程
-
- 2.1 概述
- 2.2 五状态模型
-
- 进程执行过程
- 进程间通信
- 线程
- 2.3 处理机调度
-
- 三级调度
- 无法调度的情况
- 进程调度方式
- 调度性能评价
- 经典调度算法
- 2.4 同步与互斥
-
- PV操作
- 同步问题
- 2.5 死锁
-
- 死锁产生的条件
- 死锁的处理策略
- 银行家算法
- 3.内存管理
-
- 3.1 内存管理概念
-
- 内存管理的功能
- 连续分配管理方式
- 分页存储管理
- 分段存储管理
- 段页式存储管理
- 3.2 虚拟内存管理
-
- 虚拟内存
- 请求管理
- 缺页中断
- 页面置换
- 4.文件与设备管理
-
- 4.1 文件
-
- 文件分配方式
- 4.2 磁盘
-
- 磁盘调度
- 4.3 设备
- 1.操作系统概述
-
- 1.1 基本概念
-
- 作用
- 性质
- 1.2 发展历程
- 1.3 运行环境
-
- 用户态
- 内核态
- 例题
-
- 进程调度
- 同步、互斥、信号量
- 饥饿和死锁
- 虚拟分页
- 虚拟段页
- 虚拟多级分页
- 地址转换
- 页面替换
- 磁盘调度
(huj:)主观题考点:进程同步和互斥,信号量的使用,死锁和饥饿,虚拟页式,虚拟段页,虚拟多级分页,地址转换,缺页中断,页面替换,进程调度,磁盘调度。
2.进程
2.1 概述
由于多道程序环境的并发执行,各程序失去了封闭性。此时,为了控制调度程序的并发执行,我们引入了进程的概念。
进程可以看作程序的一次执行过程,是系统进行资源分配的最小单位。进程具有以下性质:
- 动态性:进程并非一成不变,而是具有不同的状态和过程,动态性是进程最基本的特征。
- 并发性:多个进程能在一段时间内同时进行,显著提高资源利用率。
- 独立性:进程是独立运行、获得资源、接受调度的基本单位。
- 异步性:由于进程间的相互制约,导致了进程的间断性,这也造成了执行结果的不可再现性。因此,操作系统必须配置相应的同步机制。
- 结构性:进程实体由程序段,数据段,PCB(Process Control Block)组成。
创建/撤销进程的本质是对PCB的创建/撤销。
未建立PCB的程序无法作为独立单位参与运行,即PCB是进程存在的唯一标志。
2.2 五状态模型
上回说到,进程具有动态性,由此可见,进程通常具有以下五种状态,其中就绪、阻塞、运行是三个基本状态。
进程执行过程
五状态模型下进程执行的过程,简而言之就是:
进程正在被创建时是创建态,创建完成就进入了就绪态,当该进程被调度,得到了资源就进入了运行态,如果:
(1)运行的时候需要等待某些事件(如I/O设备)就会进入阻塞态,等到所等待的事件发生就会回到就绪态。
(2)运行的时间过长,用完了当前的时间片,就会让出资源回到就绪态。
(3)运行结束,一切正常,去往终止态等待消亡。
进程在状态间的转移,实质上是PCB的创建、删除、入/出队。
进程间通信
进程间要进行数据交换,就必然需要通信方法,效率较高的进程间通信方法主要有三类:
- 共享存储:通信的进程拥有共享空间,通过对空间进行直接访问可以实现进程间通信。
- 消息传递:进程通过系统提供的发送/接受消息的两个原语来进行数据交换。可以直接发送给对方,也可以发送到一个中间实体后转运给对方。
- 管道通信:管道(pipe)是连接一对进程以实现它们之间通信的共享文件,管道的本质是一个固定大小的缓冲区。可以理解为共享存储的优化和发展。
线程
线程可以理解为一个轻量级进程,是基本的CPU执行单元,也是程序执行流的最小单元。
一个进程中有多个线程,线程不拥有系统资源,但是和同一进程中的其他线程共享该进程的所有资源。提高了操作系统的并发性能。
进程可以创建进程和线程,线程只可以创建其他线程。
每个线程和进程一样,拥有唯一的标识符。
2.3 处理机调度
三级调度
一个作业从提交至完成,往往要经历以下三级调度:
- 作业调度(高级调度):按一定原则分为资源给一或多个作业并建立相应进程。
- 中级调度:挂起暂时不能运行的进程至外存,使外存中可以运行的进程变为就绪态并入队。
- 进程调度(低级调度):根据调度算法将CPU分配给某个进程。进程调度是最基本的一种调度。
无法调度的情况
- 在处理中断的过程中:中断过程复杂且不属于某一进程,不应被剥夺CPU资源。
- 进程在操作系统内核程序临界区中:进入临界区后需要独占式访问共享数据。
- 原子操作过程中。
进程调度方式
- 剥夺调度方式:立即暂停当前执行的进程并抢占CPU。
- 非剥夺调度方式:等到当前进程执行完再抢占CPU,无法适用于分时和大多数的实时系统。
调度性能评价
- CPU利用率。
- 系统吞吐量:单位时间内CPU完成作业的数量。
- 周转时间:作业从提交到完成所经历的时间。
- 等待时间:进程处于等待CPU状态的时间之和。调度算法实质上影响的是等待时间。
- 响应时间:用户提交请求到系统首次产生响应的时间。
经典调度算法
- FCFS算法:FCFS,就是先提交的作业先运行,属于不可剥夺算法。
- SJF算法:短作业优先算法,不考虑作业紧迫程度,优先选择运行时间最短的作业。可能导致长作业长期不被调度(饥饿现象)。
- 优先级调度算法:根据静态和动态优先级将CPU分配给优先级最高的作业。
- 高响应比优先调度算法:综合了FCFS和SJF算法,选出 [响应比=(等待时间+执行时间)/执行时间] 最高的作业运行。
- 时间片轮转调度算法:以时间片为单位按到达时间循环执行就绪队列中的作业,主要用于分时系统。
- 多级反馈队列调度算法:上述算法之集大成者,设置多个优先级、时间片大小不同的就绪队列。高优先级队列在时间片内无法完成,则压入次级队列,最后一级队列进行时间片轮转调度算法。当且仅当高优先级队列为空时才会运行次级队列中的作业。
(好像只考4&5来着
2.4 同步与互斥
由于进程具有异步性,为了让不同程序经过调度得到确定的结果,我们需要利用原语对进程进行同步,从而得到需要的结果。
PV操作
wait(S)//P
{
while(S<=0);
S--;
}
signal(S)//V
{
S++;
}
同步问题
- 生产者-消费者问题
- 读者-写者问题
- 哲学家进餐问题
- 吸烟者问题
具体例子就略了,书上肯定有,这里说一下做这类题目的思考方法:
假设所有进程并行,考虑各进程之间的关系与临界资源制约的最坏情况,利用 m u t e x mutex mutex达到互斥的目的。
注意 N N N个临界资源时,互斥信号量的范围为取值 − ( N − 1 ) − 1 -(N-1)-1 −(N−1)−1。
2.5 死锁
当P进程拥有A资源请求B资源,Q进程拥有B资源请求A资源的时候就发生了死锁。
死锁产生的条件
- 互斥:进程拥有的资源无法同时被多个进程占有。
- 不剥夺:进程所拥有的资源无法被释放,除非该进程主动释放。
- 请求和保持:进程拥有着某个资源的同时请求其他资源。
- 循环等待:进程对资源的拥有与请求形成的有向图是一个环。
当且仅当四个条件都被满足的时候才会发生死锁。
死锁的处理策略
- 预防:设置限制使四个条件无法全部满足以预防死锁
- 避免:分配资源时防止系统进入不安全状态。
- 检测及解除:及时检测死锁的发生并解除。
银行家算法
银行家算法是最著名的死锁避免算法,核心思想是让系统时刻处于能够满足所有可能需求的安全状态。
数据结构:
- A v a i l a b l e [ m ] Available[m] Available[m]:
前言:后天考试,一学期没去上课啥都不会,于是从零开始学OS了。打算边学边写一篇博客,一些考不到或太繁杂的知识就不说了,面向60分学习(
如果文中有错误还请各位大佬指出QAQ
以下内容部分参考王道论坛的《操作系统考研复习指导》(@avgstuBoboge大佬发的pdf,有水印)。
文章目录
- 2.进程
-
- 2.1 概述
- 2.2 五状态模型
-
- 进程执行过程
- 进程间通信
- 线程
- 2.3 处理机调度
-
- 三级调度
- 无法调度的情况
- 进程调度方式
- 调度性能评价
- 经典调度算法
- 2.4 同步与互斥
-
- PV操作
- 同步问题
- 2.5 死锁
-
- 死锁产生的条件
- 死锁的处理策略
- 银行家算法
- 3.内存管理
-
- 3.1 内存管理概念
-
- 内存管理的功能
- 连续分配管理方式
- 分页存储管理
- 分段存储管理
- 段页式存储管理
- 3.2 虚拟内存管理
-
- 虚拟内存
- 请求管理
- 缺页中断
- 页面置换
- 4.文件与设备管理
-
- 4.1 文件
-
- 文件分配方式
- 4.2 磁盘
-
- 磁盘调度
- 4.3 设备
- 1.操作系统概述
-
- 1.1 基本概念
-
- 作用
- 性质
- 1.2 发展历程
- 1.3 运行环境
-
- 用户态
- 内核态
- 例题
-
- 进程调度
- 同步、互斥、信号量
- 饥饿和死锁
- 虚拟分页
- 虚拟段页
- 虚拟多级分页
- 地址转换
- 页面替换
- 磁盘调度
(huj:)主观题考点:进程同步和互斥,信号量的使用,死锁和饥饿,虚拟页式,虚拟段页,虚拟多级分页,地址转换,缺页中断,页面替换,进程调度,磁盘调度。
2.进程
2.1 概述
由于多道程序环境的并发执行,各程序失去了封闭性。此时,为了控制调度程序的并发执行,我们引入了进程的概念。
进程可以看作程序的一次执行过程,是系统进行资源分配的最小单位。进程具有以下性质:
- 动态性:进程并非一成不变,而是具有不同的状态和过程,动态性是进程最基本的特征。
- 并发性:多个进程能在一段时间内同时进行,显著提高资源利用率。
- 独立性:进程是独立运行、获得资源、接受调度的基本单位。
- 异步性:由于进程间的相互制约,导致了进程的间断性,这也造成了执行结果的不可再现性。因此,操作系统必须配置相应的同步机制。
- 结构性:进程实体由程序段,数据段,PCB(Process Control Block)组成。
创建/撤销进程的本质是对PCB的创建/撤销。
未建立PCB的程序无法作为独立单位参与运行,即PCB是进程存在的唯一标志。
2.2 五状态模型
上回说到,进程具有动态性,由此可见,进程通常具有以下五种状态,其中就绪、阻塞、运行是三个基本状态。
进程执行过程
五状态模型下进程执行的过程,简而言之就是:
进程正在被创建时是创建态,创建完成就进入了就绪态,当该进程被调度,得到了资源就进入了运行态,如果:
(1)运行的时候需要等待某些事件(如I/O设备)就会进入阻塞态,等到所等待的事件发生就会回到就绪态。
(2)运行的时间过长,用完了当前的时间片,就会让出资源回到就绪态。
(3)运行结束,一切正常,去往终止态等待消亡。
进程在状态间的转移,实质上是PCB的创建、删除、入/出队。
进程间通信
进程间要进行数据交换,就必然需要通信方法,效率较高的进程间通信方法主要有三类:
- 共享存储:通信的进程拥有共享空间,通过对空间进行直接访问可以实现进程间通信。
- 消息传递:进程通过系统提供的发送/接受消息的两个原语来进行数据交换。可以直接发送给对方,也可以发送到一个中间实体后转运给对方。
- 管道通信:管道(pipe)是连接一对进程以实现它们之间通信的共享文件,管道的本质是一个固定大小的缓冲区。可以理解为共享存储的优化和发展。
线程
线程可以理解为一个轻量级进程,是基本的CPU执行单元,也是程序执行流的最小单元。
一个进程中有多个线程,线程不拥有系统资源,但是和同一进程中的其他线程共享该进程的所有资源。提高了操作系统的并发性能。
进程可以创建进程和线程,线程只可以创建其他线程。
每个线程和进程一样,拥有唯一的标识符。
2.3 处理机调度
三级调度
一个作业从提交至完成,往往要经历以下三级调度:
- 作业调度(高级调度):按一定原则分为资源给一或多个作业并建立相应进程。
- 中级调度:挂起暂时不能运行的进程至外存,使外存中可以运行的进程变为就绪态并入队。
- 进程调度(低级调度):根据调度算法将CPU分配给某个进程。进程调度是最基本的一种调度。
无法调度的情况
- 在处理中断的过程中:中断过程复杂且不属于某一进程,不应被剥夺CPU资源。
- 进程在操作系统内核程序临界区中:进入临界区后需要独占式访问共享数据。
- 原子操作过程中。
进程调度方式
- 剥夺调度方式:立即暂停当前执行的进程并抢占CPU。
- 非剥夺调度方式:等到当前进程执行完再抢占CPU,无法适用于分时和大多数的实时系统。
调度性能评价
- CPU利用率。
- 系统吞吐量:单位时间内CPU完成作业的数量。
- 周转时间:作业从提交到完成所经历的时间。
- 等待时间:进程处于等待CPU状态的时间之和。调度算法实质上影响的是等待时间。
- 响应时间:用户提交请求到系统首次产生响应的时间。
经典调度算法
- FCFS算法:FCFS,就是先提交的作业先运行,属于不可剥夺算法。
- SJF算法:短作业优先算法,不考虑作业紧迫程度,优先选择运行时间最短的作业。可能导致长作业长期不被调度(饥饿现象)。
- 优先级调度算法:根据静态和动态优先级将CPU分配给优先级最高的作业。
- 高响应比优先调度算法:综合了FCFS和SJF算法,选出 [响应比=(等待时间+执行时间)/执行时间] 最高的作业运行。
- 时间片轮转调度算法:以时间片为单位按到达时间循环执行就绪队列中的作业,主要用于分时系统。
- 多级反馈队列调度算法:上述算法之集大成者,设置多个优先级、时间片大小不同的就绪队列。高优先级队列在时间片内无法完成,则压入次级队列,最后一级队列进行时间片轮转调度算法。当且仅当高优先级队列为空时才会运行次级队列中的作业。
(好像只考4&5来着
2.4 同步与互斥
由于进程具有异步性,为了让不同程序经过调度得到确定的结果,我们需要利用原语对进程进行同步,从而得到需要的结果。
PV操作
wait(S)//P
{
while(S<=0);
S--;
}
signal(S)//V
{
S++;
}
同步问题
- 生产者-消费者问题
- 读者-写者问题
- 哲学家进餐问题
- 吸烟者问题
具体例子就略了,书上肯定有,这里说一下做这类题目的思考方法:
假设所有进程并行,考虑各进程之间的关系与临界资源制约的最坏情况,利用 m u t e x mutex mutex达到互斥的目的。
注意 N N N个临界资源时,互斥信号量的范围为取值 − ( N − 1 ) − 1 -(N-1)-1 −(N−1)−1。
2.5 死锁
当P进程拥有A资源请求B资源,Q进程拥有B资源请求A资源的时候就发生了死锁。
死锁产生的条件
- 互斥:进程拥有的资源无法同时被多个进程占有。
- 不剥夺:进程所拥有的资源无法被释放,除非该进程主动释放。
- 请求和保持:进程拥有着某个资源的同时请求其他资源。
- 循环等待:进程对资源的拥有与请求形成的有向图是一个环。
当且仅当四个条件都被满足的时候才会发生死锁。
死锁的处理策略
- 预防:设置限制使四个条件无法全部满足以预防死锁
- 避免:分配资源时防止系统进入不安全状态。
- 检测及解除:及时检测死锁的发生并解除。
银行家算法
银行家算法是最著名的死锁避免算法,核心思想是让系统时刻处于能够满足所有可能需求的安全状态。
数据结构:
- A v a i l a b l e [ m ] Available[m] Available[m]: