目录
一、什么是处理器管理
在单用户多任务的操作系统中,或者多用户多任务的操作系统中,系统同时运行多个程序,这些程序的并行运行势必形成对系统资源的竞争使用。因此,操作系统必须能够处理和管理这种并行运行的程序,使之对资源的使用按照良性的顺序进行。
二、进程的状态
进程是一个程序关于某个数据集的一次运行。进程具有动态性和并发性。一个进程对应于一个程序,一个程序可以同时对应于多个进程。在操作系统中进程是进行系统资源分配、调度和管理的最小单位(PS:现在的操作系统中还引入了线程的概念,它是cpu分配和调度的最小单位)。从静态的观点看,进程由程序、数据和进程控制块组成;从动态的观点看,进程是计算机状态的一个有序集合。
PCB是进程存在的唯一标志,PCB描述了进程的基本情况,包括有调度信息和执行信息两大部分。调度信息供进程调度使用,包括进程当前的一些基本属性;执行信息主要是进程的执行情况。
为了方便管理进程,把进程划分为几种状态,分别有三态模型和五态模型。
2.1 三态模型
三态模型分为运行态、就绪态、等待态。
引起进程状态转换的具体原因如下:
1)运行态-》等待态:等待使用资源,如等待外设输入;等待人工干预。
2)等待态-》就绪态:资源得到满足,如外设传输结束;人工干预完成。
3)运行态-》就绪态:运行时间片到;出现有更高优先权进程。
4)就绪态-》运行态:CPU空闲时选择一个就绪进程。
2.2 五态模型
五态模型:运行态、活跃阻塞态、静止阻塞态、活跃就绪态、活跃阻塞态
引起进程转换的具体原因如下:
1)活跃阻塞态-》静止阻塞态:如果当前不存在活跃就绪进程,那么至少有一个等待态进程将被换出去成为静止阻塞态。
2)静止阻塞态-》静止就绪态:引起进程等待的事件发生后,相应的静止阻塞态进程会转换成静止就绪态。
3)静止就绪态-》活跃就绪态:当内存中没有活跃就绪态进程,或者静止就绪态进程具有比活跃就绪态进程更高的优先级,系统将把静止就绪态进程转换成活跃就绪态。
4)活跃就绪态-》静止就绪态:操作系统根据当前的资源状况和性能,可以决定把活跃就绪态转为静止就绪态。
5)静止阻塞态-》活跃阻塞态:当一个进程退出后,而某个静止阻塞态进程具有较高的优先级并且操作系统已经得知导致它阻塞的事件即将结束,此时会导致这一状态变化。
2.3 挂起进程的特征
一个挂起的进程具有如下特征:
1)该进程不能被立即执行。
2)挂起进程可能会等待一个事件,但所等待的事件是独立于挂起条件的,事件结束并不能导致进程具备执行条件。
3)进程进入挂起状态是由于操作系统、父进程或者进程本身阻止它的运行。
4)结束进程挂起状态的命令只能通过操作系统或者父进程发出。
5)进入阻塞态通常是因为在等待I/O完成或者等待分配到所需资源。
三、信号量和PV操作(需要配合具体实例来理解)
在操作系统中,进程之间通常会存在互斥和同步两种关系。为了有效地处理这两种情况,出现了信号量和PV操作的定义。
信号量:是一种特殊的变量,表现形式是一个整形S和一个队列。
P操作:S=S-1;若S<0,进程暂停执行,进入等待队列。
V操作:S=S+1;若S<=0,唤醒等待队列中的一个进程。
四、死锁问题
死锁是指多个进程之间互相等待对方的资源,而在得到对方资源之前又不释放自己的资源,从而导致了循环等待这一现象。
死锁发生的必要条件:互斥条件、不可枪战条件、保持与等待条件、循环等待条件。
4.1 银行家算法
银行家算法(ps:需要配合具体实例来理解)是指在分配资源之前先看清楚资源分配后是否会导致系统死锁。如果死锁,则不分配,否则就分配。它是按如下原则分配资源:
1)当一个进程对资源的最大需求量不好过系统中的资源数时可以接纳改进程。
2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间内得到资源。
4)当系统现有的资源能满足进程尚需资源数时,必须测试系统现存的资源是否能满足该进程尚需的最大资源数,若能满足则分配资源,不能则推迟分配。
4.2 解决死锁的策略
解决死锁的策略:
1)死锁预防:破坏导致死锁必要条件中的任意一个就可以预防死锁。预防通常会降低系统的效率。
2)死锁避免:避免是指进程在每次申请资源时判断这些操作是否安全。死锁避免算法的执行会增加系统的开销。
3)死锁检测:死锁预防和避免都是事前措施,而死锁的检测则是判断系统是否处于死锁状态。如果是,则执行死锁解除策略。
4)死锁解除:将某进程所拥有的资源强行收回,分配给其他的进程使用。与死锁检测结合使用。
五、管程和线程
管程是由管程名、局部子管程的变量说明、使用共享资源并在数据上进行操作的若干过程、以及对变量赋初值的语句组成。每一个管程管理一个临界资源。申请进程必须互斥的进入管程。
线程是进程的活动成分,是处理器分配资源的最小单位。每个进程创建时只有一个线程,该线程也称为主线程。采用线程机制的最大优点是节省开销。
多线程系统的实现有多种办法,一种是核心级线程,另一种是用户级线程,也可以把二者相结合。
多线程实现的并行避免了进程间并行的缺点:创建线程的开销比创建进程的小,统一进程的线程共享进程的地址空间,所以线程切换(处理器调度)比进程切换快。