一、 操作系统主要讲述计算机四大类资源的管理,其中以处理机资源管理和
存储器资源管理所占比例最大,各章均围绕不断提高资源利用率展开,以下
内容需要熟练掌握:
- 并发和并行的概念15
- 并行指两个或多个时间在同一时刻发生
- 并发指两个或多个事件在同一时间间隔内发生
- 在多道程序环境中,并发是指在一段时间间内宏观上有多个程序在同时运行
- 在单道处理机系统中,每一时刻仅能有一道程序执行,所以在微观上这些程序只能分时交替执行
- 进程三种基本状态及相互转换条件,进程三种基本状态转换图44
- 就绪(ready)状态
-
当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,便可立即执行,进程这时的状态就称为就绪状态。在一个系统中处于就绪状态的进程可能有多个,通常将他们排成一个队列,称为就绪队列。
-
执行(running)状态
- 进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态;在多处理机系统中,则有多个进程处于执行状态。
-
阻塞(block)状态
- 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种
- 正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种
-
就绪转化为执行:处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
-
执行转化为就绪:处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
-
执行转化为阻塞:正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
-
阻塞转化为就绪:处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
-
死锁的四个必要条件,如何预防死锁9597
- 必要条件:
- 互斥条件
- 请求和保持条件
- 不可抢占条件
- 循环等待条件
- 预防死锁:通过设置某些限制条件,去破坏产生死锁的4个必要条件中的一个或几个来预防死锁
-
破坏“请求和保持”条件
让进程不要那么贪心,自己已经有了资源就不要去竞争那些不可抢占的资源。- 第一种协议:让进程在申请资源时,一次性申请所有需要用到的资源,不要一次一次来申请,当申请的资源有一些没空,那就让线程等待。
- 不过这个方法比较浪费资源,进程可能经常处于饥饿状态。
- 并且严重的降低了资源的利用率
- 第二种协议:要求进程在申请资源前,要释放自己拥有的资源。
- 第一种协议:让进程在申请资源时,一次性申请所有需要用到的资源,不要一次一次来申请,当申请的资源有一些没空,那就让线程等待。
-
破坏“不可抢占”条件
允许进程进行抢占- 如果去抢资源,被拒绝,就释放自己的资源。
- 操作系统允许抢,只要你优先级大,可以抢到。
-
破坏“循环等待”条件
将系统中的所有资源统一编号,进程可在任何时刻提出资源申请,但所有申请必须按照资源的编号顺序(升序)提出- 缺点:
- 为系统中各类资源规定的序号必须相对稳定,限制了新类型设备的增加
- 景观在为资源的类型分配序号时已经考虑到大多数作业在实际使用这些资源时的顺序,但也经常会发生作业使用各类资源的顺序与系统规定的顺序不同,造成对资源的浪费
- 为了方便用户,系统对用户在编程时所施加的限制条件应尽量少,然而这种按规定次序申请资源的方法必然会限制用户进行简单、自主的编程
- 缺点:
-
- 必要条件:
-
死锁定理103
可以通过将资源分配图简化的方法来检测系统所处的某状态(命名为S状态)是否为死锁状态。简化方法如下:
-
在资源分配图中,找出既不阻塞又不是孤点的进程P1(即找出一条有向边与它相连,且该有向边对应资源的申请数量小于等于系统中已有空闲资源数量。若所有的连接该进程的边均满足上述条件,则这个进程能继续运行直至完成,然后释放它所占有的所有资源)。消去它所有的请求边和分配边,使之成为孤立的结点。在图中(a)中,P1是满足这一条件的进程结点,将P1的所有边消去,便得到图中(b)所示的情况。
-
进程P1所释放的资源后,便可使得P获得资源而继续运行,直至P2完成后释放它所占有的全部资源,形成图中©
-
进行一系列简化后,若能消去图中所有的边,则称该图是可完全简化的,如图中©所示。
因此S为死锁的充分必要条件是:当且仅当S状态的资源分配图是不可完全简化的,该条件为死锁定理。
-
-
以生产者-消费者问题为例,理解信号量的物理含义116、初始值与取值变化情况117
-
P操作V操作 原语的组成与语句含义117
-
整形信号量S:
- 除初始化外,仅能通过两个标准的原子操作(atomic operation)
- wait(S)和signal(S),被称为P操作以及V操作,是不可中断的
- S 的各个物理意义
- S>0表示有S个资源可用
- S=0表示无资源可用
- S<0则|S|表示S等待队列中的进程个数
- wait(S):表示申请一个资源
- signal(S):表示释放一个资源,信号量的出值应该大于等于0
- PV操作必须成对出现(谁先上锁不能乱,谁先开锁无所谓)
- 当为互斥操作时,他们同处于同一进程(先P后V)
- 当为同步操作是,则不在同一进程中出现(先V后P)
- 如果wait(S1)和wait(S2)两个操作在一起
- 那么wait操作P的的顺序:一个同步wait操作在一个互斥操作之前
- 两个signal操作V顺序无紧要关系
wait(S){ while(S<=0); S--; } signal(S
- 除初始化外,仅能通过两个标准的原子操作(atomic operation)