进程管理
基本概念
进程是一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程
进程
与程序
是既有联系又有区别的:
-
程序是指令的有序集合,其本身没有任何运行的含义,它是一个静态概念。而进程是程序在处理机上的一次执行过程,它是动态概念。 程序可以作为一种软件资料长期保存,而进程则是有一定生命周期,它能够动态地产生和消亡。即进程可由“创建”而产生,由调度而执行,因得不到资源而暂停,以致最后由“撤销”而消亡。
-
进程是一个能够独立运行的单位,能与其他进程并行的活动。
-
进程是竞争计算机系统有限资源的基本单位。
-
在支持多任务运行的操作系统中,活动的最小单位是进程。进程一定包含一个程序,因为程序是进程应完成功能的逻辑描述。
-
一个程序可以对应多个进程。
进程的类型
系统进程
和用户进程
-
系统进程被分配一个初始的资源集合,这些资源可为它所独占,也可以最高优先级资格有限使用,用户进程通过系统服务请求的手段竞争系统资源。
-
用户进程不能直接I/O操作,而系统进程可以。
-
系统进程在管态下活动,而用户进程在用户态下活动。
进程的状态
在一个进程的活动期间至少具备三种基本状态,即运行状态
、就绪状态
、等待状态(阻塞状态)
-
就绪状态,当进程获得了除cpu外所有的资源,它已经准备就绪,一旦得到cpu控制权,就可以立即运行,该进程所处的状态为就绪状态
-
运行状态,当进程由调度/分派模块分派后,得到cpu控制权,它的程序正在运行,该进程所处的状态就是运行状态
-
等待状态,若一进程正在等待某一事件发生(如等待输入/输出操作的完成)而暂时停止执行,这时即使给它cpu控制权,它也无法执行,则称该进程处于等待状态,又称阻塞状态。
进程的描述-进程控制块
当某个程序和别的程序并发执行时,产生了动态特征,并由于并发程序之间的相互制约关系而造成了比较负责的一个外界环境。为了描述一个进程和其他进程以及系统资源的关系,为了刻画一个进
程在各个不同时期所处的状态,引入进程控制块 pcb
(进程描述器)。系统根据pcb而感知进程的存在,故pcb是标识进程存在的实体。当系统创建一个进程时,必须为它设置一个pcb,然后根据pcb
的信息对进程实施控制管理。进程任务完成后,系统撤销它的pcb,进程也随之消亡。
从结构上说,每个进程都由一个程序段(包括数据)和一个进程控制块pcb组成。程序和数据描述进程本身应完成的功能,而进程控制块pcb则描述进程的动态特征,进程与其他进程和系统资源的关系。
为了对进程做充分的描述,pcb应具有的信息应有:
-
进程标识符
name。每个进程都必须有唯一的标识符,可以用字符或编号表示,在创建一个进程时,由创建者给出进程的标识符,另外,为了便于系统管理,进程还应有一个内部标识符(id号) -
进程当前状态status
。该项说明本进程目前处于何种状态(运行、就绪、等待),作为进程调度时分配处理机的主要依据。为了便于对进程实施管理,通常把具有相同状态的进程链在一起,组成各种队列。比如将所有处于就绪状态的进程链在一起,称为就绪队列。进程当前状体啊可以用进程所属的当前队列头指针来表征。 -
当前队列指针next
。该项登记了处于同一状态的下一个pcb的地址,以此将处于同一状态的所有进程链接起来 -
总链接指针all_q_next
。系统中存在大量的进程,它们依各自的状态分别处于相应的队列中,这便于对进程实施调度控制。但是,当进行某些管理功能,如执行创建新进程的功能时,使用系统所有进程的总链接将是十分方便的。因为进程的标识符必须是唯一的,由创建者给出的被创建进程的名字是否会重名,必须先检查系统已有的进程名,但若分别在各个队列去查询将是十分麻烦的,所以应提供一个进程总链结构,进程pcb中的该项内容是指向总链中的下一个pcb地址。 -
程序开始地址start_addr
。该进程的程序将从此地址开始执行 -
进程的优先级priority
。进程的优先级反映了进程要求cpu的紧迫程度,它通常由用户预先提出或系统指定。进程将一句其优先级的高低去争夺使用cpu的权利 -
cpu现场保护区cpustatus
。当进程由于某种原因释放处理机时,cpu现场信息被保存在pcb中的该区域中,以便在该进程重新获得处理机后能继续执行。通常被保护的信息有:工作寄存器、指令计数器以及程序状态字等。 -
通信信息communication information
。通信信息是指每个进程在运行过程中与别的进程进行通信时所记录的有关信息。比如,可以包含正等待着本进程接受的消息个数,第一个消息的开始地址等。 -
家族联系 process family
。有的系统允许一个进程创建自己的子进程,这样会组成一个进程家族。在pcb中必须指明本进程与家族的里兰溪,如它的子进程和父进程的标识符 -
占有资源清单own_resource
。
不同的操作系统所有用的pcb结构是不同的,对于简单系统 ,pcb结构较小。而在一些较复杂的系统中,pcb所含的内容则比较多,比如,还可能有关于I/O,文件传输等控制信息。
线程
线程概念
- 线程是比进程更小的活动单位,是进程中的一条执行路径
- 它有自己私有的堆栈和处理机执行环境(尤其是处理器寄存器)
- 它共享分配给父进程的主存
- 它是单个进程所创建的许多个同时存在的线程中的一个
当系统支持多线程处理时,线程是任务调度的单位,但不是系统资源的分配单位,系统资源的分配单位始终是进程。线程完全继承父进程占有的资源,当它活动时,具有自己的运行现场。
线程的状态变迁
如果一个系统支持线程的创建与线程的活动,那么处理机调度的最小单位是线程而不是进程。一个进程可以创建一个线程,那么它具有单一的控制路径,一个进程也可创建多个线程,那么它就具有多个控制路径,这是,线程是争夺cpu的单位。线程也有一个从创建到死亡的生命过程,在这一过程中它具有如下状态
创建
,建立一个新线程,新生的线程将处于新建状态。此时它已经有了相应的主存空间和其他资源,并已被初始化就绪
,线程处于线程就绪队列中,等待被调度,此时,它已经具备了运行的条件,一旦分到cpu时间,就可以立即去运行运行
,一个线程正占用cpu时间,执行它的程序等待
,一个正在执行的线程如果发生某些时间,如被挂起或需要执行费时的输入/输出操作时,将让出cpu,暂时中止自己的执行,进入等待状态。等待另一个线程唤醒它终止
,一个线程已经退出,但该信息还没被其他线程所收集
线程的生命周期:
同步
临界资源
:通常把一次仅允许一个进程使用的资源成为临界资源
临界区
:访问临界资源的那段程序能够从概念上分离出来,称为临界区或临界段
互斥
:在操作系统中,当某一个进程正在访问某一存储区域时,就不允许其他进程来读出或者修改该存储区的内容,否则,就会出现无法估计的错误。通常将进程之间的这种相互制约关系称为互斥。
一般采用同步机制来实现进程互斥,操作系统提供的同步机制有锁(上锁,开锁)和信号灯(P、V操作)。
进程通信
信号量,socket通信,管道,共享内存,消息队列等