关闭

进程管理

标签: 操作系统进程管理
218人阅读 评论(1) 收藏 举报
分类:

这一部分主要分为四个部分进行讲解:

1.进程与线程
2.处理器调度
3.进程同步
4.死锁


1. 进程与线程

1.1 进程的概念和特征

进程:是为了更好地描述和控制程序的并发执行,实现操作系统的并发性和共享性。
数据结构:进程控制块(PCB),是进程存在的唯一标识。
进程的特征:动态性、并发性、独立性、异步性、结构性。

1.2 进程的状态与转换

五种状态:运行状态、就绪状态、阻塞状态、创建状态、结束状态。
就绪状态–运行状态:被调度,获得处理机资源。
运行状态–就绪状态:时间片用完。此外可剥夺的进程可以将正在执行的进程转为就绪
运行状态–阻塞状态:等待某一事件的发生。
阻塞状态–就绪状态:进程等待的事情发生了,就可以转换了。

1.3 进程控制

在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位。
(1) 进程创建
1. 为新进程分配一个唯一的进程标识号,并申请空白的PCB(申请失败则创建失败)
2. 为进程分配资源,为新进程的程序和数据、以及用户栈分配必要的内存空间
3. 初始化PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等。
4. 如果进程就绪队列能够接纳新进程,就将新进程插入到就绪队列中,等待被调度运行。
(2) 进程的终止
正常结束、异常结束。
操作系统终止进程的过程如下:
1.根据被终止进程的标示符,检索PCB,从中读出该进程的状态
2.若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程。
3.若该进程还有子进程,则应将其所有子进程终止
4.将该进程所拥有的全部资源,或归还其父进程或归还给操作系统
5.将该PCB从所在队列(链表)删除。
(3) 进程的阻塞和唤醒
阻塞的执行过程:
1.找到将要被阻塞进程的标识号对应的PCB
2.若该进程为运行状态,则保护其现场,将其状态转为阻塞状态,停止运行。
3.把该PCB插入到相应时间的等待队列中去
唤醒原语的执行过程:
1.在该事件的等待队列中找到相应进程的PCB
2.将其从等待队列中移出,并置其状态为就绪状态
3.把该PCB插入就绪队列中,等待调度程序调度
(4) 进程切换
进程切换是指处理机从一个进程运行转到另一个进程上运行,这个过程中,进程的运行环境产生了实质性的变化。进程切换的过程如下:
1.保存处理机上下文,包括程序计数器和其他寄存器
2.更新PCB信息
3.把进程的PCB移入相应的队列,如就绪、在某时间阻塞等队列
4.选择另一个进程执行,并更新其PCB
5.更新内存管理的数据结构
6.恢复处理机上下文。

1.4 进程的组织

进程是操作系统的资源分配和独立运行的基本单位。它一般由以下三个部分组成:进程控制块、程序段、数据段。进程控制块PCB主要包括进程描述信心、进程控制和管理信息、资源分配清单和处理机相关信息等。

1.5 进程的通信

进程通信是指进程之间的信息交换。PV操作是低级通信方式,高级通信方式是指以较高的效率传输大量数据的通信方式。高级通信方式主要有以下三个类:
1.共享内存
2.消息传递
3.管道通信

1.6 线程概念和多线程模型

引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。
线程是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。

线程和进程的比较
1)调度
2)拥有资源
3)并发性
4)系统开销
5)地址空间和其他资源
6)通信方面

线程的实现可以分为两类:用户级线程和内核级线程。多线程模型分为:多对一模型。一对一模型。多对多模型

多对一模型:将多个用户级线程映射到一个内核级线程,线程管理在用户空间完成。优点:线程管理是在用户控件进行的,效率高。缺点:当一个线程在使用内核服务时被阻塞,那么整个进程都会被阻塞;多个线程不能并行地运行在多处理机上。
一对一模型:将每个用户级线程映射到一个内核级线程。优点:当一个线程被阻塞,允许另一个线程继续运行,并发能力强。缺点:每创建一个用户级线程都需要创建一个内核级线程与其对应,这样创建线程的开销比较大,影响性能。
多对多模型:将n个用户级线程映射到m个内核级线程上,要求m小于等于n。特点:对上述两种方式的折中,克服了多对一模型的并发度不高的缺点,又克服了一对一模型的一个用户进程占用太多内核级线程,开销太大的缺点。


2 处理机调度

2.1 调度的概念

处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发地执行。
一个作业从提交开始直到完成,往往要经历以下三级调度:1)作业调度:又称高级调度,其主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个或多个作业,给它们分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使他们呢获得竞争处理机的权利。2)中继调度:又称内存调度,是为了提高内存利用率和系统吞吐量。3)进程调度:低级调度,其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

2.2 调度的实际、切换与过程

进程调度和切换程序是操作系统内核程序,当请求调度的事件发生后,才可能会运行进程调度程序,当调度了新的就绪进程后,才会去进行进程间的切换。

2.3 进程调度方式

分为非剥夺调度方式和剥夺调度方式。剥夺必须遵循一定的原则,主要有:优先权、短进程优先和时间片原则等。

2.4 调度的基本准则

1)CPU利用率
2)系统吞吐量。表示单位时间内CPU完成作业的数量。
3)周转时间 = 作业完成时间-作业提交时间。带权周转时间=作业周转时间/作业实际运行时间
4)等待时间。
5)响应时间。

2.5 典型的调度算法

1)先来先服务FCFS调度算法 (不可剥夺)
特点:算法简单,效率低;对长作业比较有利,对短作业不利(相对短作业优先和高响应);有利于CPU繁忙型作业,不利于I/O繁忙型作业
2)短作业优先SJF调度算法
对长作业不利,会产生饥饿现象,不考虑作业的紧迫程度。注意:短作业优先的平均等待时间、平均周转时间最少。
3)优先级调度算法
又分为非剥夺式优先级调度算法和剥夺式优先级调度算法。
4)高响应比优先调度算法
是对FCFS和SJF的平衡,响应比=(等待时间+要求服务时间)/要求服务时间
5)时间片轮转调度算法
时间片的长短通常由以下因素决定:系统的响应时间、就绪队列中的进程数目和系统的处理能力
6)多级反馈队列调度算法(集合了前几种算法的优点)
多级反馈队列调度算法是时间片轮转调度算法和优先级调度算法的综合和发展。
多级反馈队列优势:
1. 终端型作业用户:短作业优先
2. 短批处理作业用户:周转时间较短
3. 长批处理作业用户:经过前面几个队列得到部分执行,不会长期得不到处理。


3 进程同步

3.1 进程同步的基本概念

临界资源:我们把一次仅允许一个进程使用的资源称为临界资源。为了对临界资源的访问,必须互斥地进行,访问临界资源的那段代码成为临界区。
同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。
互斥也称间接制约关系。当一个进程进入临界区使用临界资源,另一个进程必须等待,当占用临界资源的进程退出临界区后,另一进程才允许去访问此临界资源。

3.2 实现临界区互斥的基本方法

1)软件实现方法:在进入区设置和检查一些标志来标明是否有进程在临界区,如果已有进程在临界区则再进入区通过循环检查进行等待,进程离开临界区后则在退出区修改标志。
2)硬件实现方法:计算机提供了特殊的硬件指令,允许对一个字中的内容进行检测和修正,或者是对两个字的内容进行交换等。通过硬件支持实现临界段问题的低级方法或称为元方法。包括屏蔽中断、硬件指令方法。这种方法简单、方便,但是进程等待进入临界区要耗费处理机时间,不能实现让权等待。

3.3 信号量:由PV操作原语。

整型信号量、记录型信号量、利用信号量实现同步和互斥、实现前驱关系

3.4 管程

管程是一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块,这组操作能初始化并改变管程中的数据和同步进程。


4 死锁

4.1 死锁的概念

死锁是指对个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程豆浆无法向前推进。
死锁产生的原因

1.系统资源的竞争
2.进程推进顺序非法
3.死锁产生的必要条件:产生死锁必须同时满足以下四个条件,只要其中任一条件不成立,死锁就不会发生。互斥条件、不剥夺条件、请求和保持条件、循环等待条件。

4.2 死锁的处理策略

为使系统不发生死锁,必须设法破坏产生死锁的四个必要条件之一,或者允许死锁产生,但当死锁发生时能检测出死锁,并有能力实现恢复。预防死锁、避免死锁、死锁的检测及解除。

4.3 死锁预防

防止死锁的发生只需破坏死锁产生的四个必要条件之一即可。
1.破坏互斥条件
2.破坏不剥夺条件
3.破坏请求和保持条件
4.破坏循环等待条件。

4.4 死锁避免

避免死锁同样是属于实现预防策略,是在资源动态分配过程中,防止系统进入不安全状态,以避免发生死锁。银行家算法主要思想是避免系统进入不安全状态,在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先进行分配,并对分配后的新状态进行安全性检查。如果新状态安全,则正式分配上述资源,否则就拒绝分配上述资源。这样,它保证系统始终处于安全状态,从而避免死锁现象的发生。

4.5 死锁检测和解除

死锁定理是可以将资源分配图简化的方法来检测系统状态是否是死锁状态。S为死锁的条件时当且仅当S状态的资源分配图是不可完全简化的,即为死锁定理。
死锁的解除:资源剥夺法、撤销进程法、进程回退法。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3373次
    • 积分:182
    • 等级:
    • 排名:千里之外
    • 原创:15篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    文章存档
    最新评论