第二章、进程管理
目录:
1.进程的基本概念
2.进程的控制
3.进程的互斥
4.进程的同步
5.经典进程的同步问题
6.管程机制
7.进程通信
8.线程
一、进程的基本概念
1.程序的顺序执行特性:顺序性 、封闭性、可再现性
2.前趋图:是描述进程之间执的前后关系
3.程序的并发执行:间断性、失去封闭性、不可再现性
带来的问题:
1.协调各程序的执行顺序
2.多个执行程序共享系统资源。程序之间可能会相互影响,甚至影响输出结果。
3.选择哪些、多少个程序进入内存运行:根据资源等情况决定。
4.内存中的执行程序哪个先执行:根据系统采用的调度算法决定。
5.内存如何有效分配:内存资源非常宝贵如何保证各并发程序高效、安全的使用,由内存管理模块实现。
4.进程的特征:
1).结构特征:程序段+相关数据+PCB
2).动态性:进程是运行的程序。
3).独立性
4).异步性
进程最基本的两个特征是动态性和并发性。
引入进程产生的问题:
1).增加空间的开销:为进程建立数据结构
2).增加时间的开销:管理、协调、跟踪进程;填写和更新数据结构、切换进程、保护现场。
3).更难控制:协调多个进程竞争和共享资源,如何预防并解决多个进程因为竞争资源而出现故障(死锁、饥饿)
4).处理机的竞争尤为突出
5.进程状态
基本状态:就绪Ready(万事俱备,只欠CPU),运行Run,阻塞(等待)Block
挂起:静止就绪、禁止阻塞
6.进程控制块
概念:PCB是进程存在的唯一标识符
PCB信息:PID(进程标识符)、UID(进程的用户标识符)、进程调度信息、进程控制信息
PCB的组织结构:链式方式、索引方式
Linux进程控制块的基本成员:1)处理机硬件资源:用户编程可访问的寄存器、控制和状态寄存器、内存指针
2).进程控制软件信息:进程标识、调度和状态信息、数据结构、进程间通信、进程访问权限、资源的使用和所有已打开的文件
二、进程控制
进程控制是进程和处理机管理的一个重要任务。进程控制是指系统使用一些具有特定功能的程序段来创建、撤销进程以及完成进程各状态间的转换,从而达到多进程高效率并发执行和协调、实现资源共享的目的。
一般来说,把系统态下执行的某些特定功能的程序段称为原语。
用于进程控制的原语包括:创建原语、撤销原语、阻塞原语、唤醒原语、挂起原语和激活原语。
1.进程创建
起因:用户登录、作业调度、提供服务、应用请求。
过程:引起创建进程的事件发生、调用原语、申请空白PCB、为进程分配资源、初始化进程控制块、将新进程插入就绪队列
2.进程的终止
起因:正常结束、异常结束、外界干扰
过程:引起进程终止的事件发生、调用终止原语、获取进程PID、终止子进程、终止本进程、释放资源、释放PCB
3.进程的阻塞和唤醒
阻塞事件:请求系统服务、启动某种操作、新数据尚未到达、无新工作可做
唤醒事件:进程所等待的事件发生
4.进程的挂起和激活
挂起:将处于内存的进程对换到外存(对换区),该进程所需资源就会被继续分配、在激活(调回内存)之前不会被调度
激活:给被挂起的进程重新分配内存
三、进程的互斥
1.与时间有关的错误(如:订票系统)
2.互斥的概念:多个进程访问公共变量时,当一个进程正在进行访问时,就不允许其他进程对该临界资源访问,它们必须互斥的使用这个临界资源,这种约束关系就叫做互斥。
互斥访问应遵循的准则:
1).不能假设各并发进程的相对执行速度。各并发进程享有平等的、独立的竞争共有资源的权利,且在不采取任何措施的条件下,在临界区内任一指令结束时,其他并发进程可以进入临界区。
2).某一时间只能有一个进程在临界区执行。
3)并发进程中的某个进程不在临界区内时,它不阻止其他进程的进入。
4)并发进程中的若干个进程申请进入临界区时,只能允许一个进程进入。
5)并发进程中的某一个进程申请进入临界区时开始,应在有限时间内得以进入临界区。
3.互斥加锁实现
要实现互斥,一种可能的办法时对临界区加锁已实现互斥。并发进程再申请进入临界区时,首先测试该临界区是否是上锁的。
尽管上锁的方式可以实现进程之间的互斥,但这种方法仍然存在着一些影响系统可靠性和执行效率。
四、进程同步
1.同步的概念
异步环境:相互合作的一组并发进程,其中每一个进程都以各自独立的、不可预知的速度向前推进;但它们又需要密切合作,已完成共同的任务。
直接制约:一组在异步环境下的并发进程,若各自的执行结果互为对方的执行条件,而限制各进程的执行速度的过程称为并发进程间的直接制约。
同步:把因直接制约而互相发送消息、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。
2.同步机制应遵循的规则:空闲让进、忙则等待、有限等待、让权等待
3.信号量机制
1)整型信号量:wait()和signal()
优点:是解决与时间相关的好方法
缺点:单CPU系统中会出现“忙等”状态
**2)记录信号量:P、V操作
优点:让权等待,解决了忙等问题
缺点:当申请多类资源时,存在“请求与保持”现象
3)and型信号量
优点:解决了记录型信号量机制存在的申请多类资源存在的“ 请求与保持”现象的问题,要么不要,要么全得。
缺点:申请多类多个资源时功能退化
4)信号量集
优点:解决and信号量机制存在得问题
缺点:每个要访问临界资源的进程须自备wait()和signal()操作、系统管理麻烦、会因同步操作使用不当而导致死锁、产生与时间有关的错误、为此引入了管程
**五、经典同步问题
1.生产者-消费者问题
2.读者-写者问题
3.哲学家进餐问题
注: 将另写一篇关于该问题的博文,增强记忆!
六、管程机制
1.管程的引入:信号量机制是一种方便而有效的进程同步机制,但每个要访问临界资源的进程须自备wait和signal操作。这样不仅给系统管理造成麻烦,而且会因同步操作使用不当而导致死锁,甚至产生与时间有关的错误。
2.管程的基本概念
管程的三部分组成:局部用于管程的共享变量说明、对该数据进行操作的一组过程、对局部于管程的数据设置初始值的语句。
3.管程的定义,组成和条件变量
七、进程间通信
1.通信类型:共享存储器系统、消息传递系统、管道通信
2.通信方法:直接通信方式、间接通信方式:信箱、信箱操作原语、信箱的种类(私用信箱,公用信箱,共享信箱)
3.通信机制
八、线程
1.线程的概念:是一个进程中的一个运行实体,是一个CPU调度单位,而资源的拥有者还是进程或者任务。
事实上,引入线程的主要目的是为了提高系统的执行效率,减少处理机的空转时间和调度切换的时间,以便于管理。
2.线程的属性:1)轻型实体 2)独立调度和分派的基本单位 3)可并发执行 4)共享进程资源
3.进程、线程的关系
4.执行特征:1)基本状态:执行、就绪、堵塞
2)基本操作:派生、堵塞、激活、调度、结束
线程的另一个特征就是同步。线程中所使用的同步控制机制与进程中所使用的同步控制机制相同。
5.分类:用户级线程、系统级线程(核心级线程)
操作系统内核给应用程序提供对应的系统调用和应用程序接口API,以使用户程序可以创建、执行及撤销进程。
6.不同平台的线程:UNIX International线程、POSIX线程、Win32线程、c++11线程、c11线程