进程管理
1.进程概念
-
为了描述程序在并发执行时对系统资源的共享,我们需要一个描述程序执行时动态特征的概念,这就是进程
-
在执行中的程序
-
一个具有一定独立功能的程序在一数据集合上的一次动态执行过程
-
引入多进程,提高了对硬件资源的利用率,但又带来了额外的空间和时间开销,增加了OS复杂性
2.进程与程序
-
进程是动态的,程序是静态的
-
程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件,静态和可以复制
-
-
进程是暂时的,程序是永久的
-
进程是一个状态变化的过程,程序可长久保存
-
-
进程与程序的组成不同
-
进程的组成包括程序,数据和进程控制块(即进程状态信息)
-
-
进程与程序的对应关系
-
通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序
-
3.进程的特征
-
结构特征:进程实体=程序段+相关的数据段+PCB
-
动态性:进程实质是进程实体的以此执行过程,因此动态性是进程的最基本特征
-
并发性:多个进程实体同存于内存中,且能在一段时间内同时运行。是最重要的特征
-
独立性:指进程实体是一个能独立运行,独立分配资源和独立接受调度的基本单位
-
异步性:进程按各自独立的,不可预知的速度向前推进
4.进程描述
进程存在意味着:
-
处于某种状态(运行,就绪,等待)
-
进程控制块PCB(数据结构)
-
进程的执行程序(一个可执行文件)
-
进程位于某个队列(就绪,等待某事件队列)
-
占用某些系统资源(内存,打开某些文件,处理机,外设)
5.进程状态
进程执行时,改变状态
-
新建:在创建进程,OS已完成为创建一进程所必要的工作,还没有允许执行该进程
-
就绪:进程等待分配处理机,存在于处理机调度队列中的那些进程,它们已经准备就绪,一旦得到CPU,就立即可以运行(多个进程出于此状态)
-
运行:指令在运行,当进程有调度/分配程序分配后,得到CPU控制权,它的程序正在执行(在系统中,总只有一个进程处于此状态)
-
等待:进程等待某些事件发生(如等待I/O的完成),而暂停执行,即使给它CPU时间,它也无法执行
-
终止:进程执行完毕
6.进程控制块
-
一个专门的数据结构,系统用它来记录进程的外部特征,描述进程的运动变化过程
-
PCB是进程管理和控制的最重要的数据结构,在创建进程时,建立PCB,并伴随进程运行的全过程,直到进程撤销而撤销
-
PCB是系统感知进程存在的唯一标识,进程与PCB是一一对应的
-
PCB经常被系统访问,如,调度程序,资源分配程序,中断处理程序等,所以PCB应常驻内存
包含与进程有关信息:进程状态,程序计数器,CPU寄存器,CPU调度信息,内存管理信息,计账信息,I/O状态信息。
7.PCB的组织方式
PCB表:系统把PCB组织在一起,并放在内存的固定区域,就构成了PCB表
PCB表的个数决定了系统中最多可同时存在的进程个数,称为系统的并发度
PCB表的组织方式:链接方式 索引方式
8.进程调度队列
-
作业队列:在系统中的所有进程的集合
-
就绪队列:在主存中的,就绪等待执行的所有进程的集合
-
设备队列:等待某一I/O设备的进程队列
调度就是在各种队列之间进程的迁移。
- 长程调度(作业调度):从外存上选择作业进入内存中
- 短程队列(CPU调度):选择可被下一个执行并分配CPU的进程
- 中程调度:为了缓和内存紧张的情况,将内存中处于阻塞状态的进程换至外存上(挂起),降低多道程序的度。当这些进程重新具备运行条件时,再从外存上调入内存
- 上下文切换:当CPU切换至另一个进程时,系统必须保存旧进程状态并为新进程调入所保留的状态,上下文切换的时间开销较重,在切换时,系统没有做有用的工作
9.进程操作
-
进程是有生命周期的:产生,运行,暂停,终止。对进程的这些操作叫进程控制
-
进程控制的职责是对系统中进程实施有效的管理,它是CPU管理的的一部分(还有进程同步,通信和调度)
-
当系统允许多进程并发执行时,为了实现共享,协调并发进程的关系,处理机管理必须对进程实行有效的管理
进程何时创建?
-
作业调度:批处理系统中,作业调度程序调度到某个作业以后,就把这个作业装入内存,并分配必要的资源,创建进程,插入就绪队列
-
用户登录:在分时系统中,用户在终端键入登录命令后,若是合法用户,系统建立一个进程,并插入就绪队列
-
提供服务:用户向系统提出请求后,系统专门建立一个进程为用户服务(如打印请求)
-
应用请求:应用进程的需要,由它自己创建一个新进程,使新进程以并发运行方式完成特定任务(输入数据并将处理结果输出到表格上)
进程创建需要注意的问题
-
资源共享
-
父进程子进程共享所有资源
-
子进程共享父进程资源的子集
-
父进程和子进程无资源共享
-
-
执行
-
父进程和子进程并发执行
-
父进程等待,直到子进程终止
-
-
地址空间
-
子女复制双亲(子进程和父进程的地址空间一样)
-
子女有一个程序被调入(子进程和父进程的地址空间不一样)
-
10.线程
进程具有两个基本属性:
-
是一个拥有资源的独立单位:它可独立分配虚地址空间,主存和其它
-
又是一个可独立调度和分配的基本单位
这两个基本属性市进程成为并发执行的基本单位
由于进程是一个资源拥有者,因而在创建,撤销,调度切换时,系统需要付出较大的时空开销。进程的数目不宜过多,进程切换频率不宜过高,限制了并发程序,引入线程以小的开销来提高进程内的并发程度,线程引入后,线程作为CPU的调度单位,而进程只作为其他资源分配单位
线程:
-
只拥有必不可少的资源,如:线程状态,程序计数器,寄存器上下文和栈
-
同样具有就绪,阻塞和执行三种基本状态
-
与同属一个进程的其它线程共享进程拥有的全部资源
-
可并发执行
- 线程的优点
减少并发执行的时间和空间开销(线程的创建,退出和调度),因此容许在系统中建立更多的线程来提高并发程度
-
线程的创建时间比进程短
-
线程的终止时间比进程短
-
同进程内的线程切换时间比进程短
-
由于同进程内线程间共享内存和文件资源,可直接进行不通过内核的通信
进程和线程的比较
-
并发性:在引入线程的OS中,不仅进程之间可以并发,而且在一个进程中的多个线程之间亦可并发执行,因而使OS具有更好的并发性,从而更有效的利用系统资源和提高系统吞吐量
-
拥有资源:进程是拥有资源的独立单位
-
系统开销:在创建或撤销进程时,系统都要为之分配或收回资源,如内存空间,I/O设备等。因此,OS所付出的开销明显地大于创建或撤销线程时的开销
-
地址空间和其他资源(如打开文件):进程间相互独立,同一进程的各线程间共享,某进程内的线程在其他进程内不可见
-
通信:进程间统建IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信,需要进程同步和互斥手段的辅助,以保证数据的一致性
-
调度:线程上下文切换比进程上下文切换要快的多
引入线程的好处
-
响应度高:一个线程的应用在执行中,即使其中的某个线程阻塞,其他的线程还可继续执行,从而提高响应速度
-
资源共享:同一进程的多个线程共享该进程的内存资源
-
经济性:创建和切换线程的开销要低于进程
-
MP体系结构的运用:多线程更适用于多处理机结构
11.内核线程和用户线程
内核线程:依赖于OS核心,由内核进行创建,撤销和切换
-
内核维护进程和线程的上下文信息
-
线程切换由内核完成
-
一个线程发起系统调用而阻塞,不会影响其他线程的运行
-
时间片分配给线程,所以多线程的进程获得更多CPU时间
用户线程:不依赖于OS核心,应用进程利用线程库提供创建,同步,调度和管理线程的函数来控制用户线程。调度由应用软件内部进行,通常采用非抢先式和更简单的规则,也无需用户态/核心态切换,所以速度快
-
用户线程的维护由应用进程完成
-
内核不了解用户线程的存在
-
用户线程切换不需要内核特权
用户线程和内核线程区别:
-
调度方式:内核线程的调度和切换与进程的调度和切换十分相似,用户线程的调度不需OS的支持
-
调度单位:用户线程的调度以进程为单位进行,在采用时间片轮转调度算法时,每个进程分配相同的时间片。对内核级线程,以线程为单位,每个线程分配时间片
12.进程间交互关系
- 互斥:指多个进程不能同时使用同一个资源
- 同步:进程间协作
- 死锁:指多个进程互不相让,都得不到足够的资源