您的位置:首页 > 其它

操作系统 进程管理之进程与线程

2016-12-09 10:44 381 查看

一、进程

进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程

1、从不同的角度,进程可以有不同的定义,比较典型的定义有:

(1)进程是程序的一次执行。

(2)进程是一个程序及其数据在处理器上顺序执行时所发生的活动。

(3)进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

2、进程的特征:

(1)动态性:进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征

(2)并发性:指多个进程实体,同存于内存中,能在一段时间内同时运行,并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。

(3)独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡是未建立PCB的程序都不能作为一个独立的单位参与运行。

(4)异步性:由于进程的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此,早操作系统中必须配置相应的进程同步机制。

(5)结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制段三部分组成

3、进程的状态

(1)运行状态:进程正在处理机上运行,在单处理机环境下,每一时刻最多只有一个进程处于运行状态。

(2)就绪状态:进程已处于准备运行的状态,即进程获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。

(3)阻塞状态等待状态):进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或者等待输入/输出完成。即使处理机空闲,该进程也不能运行。

(4)创建状态:进程正在被创建,尚未转到就绪状态。

(5)结束状态:进程正从系统中消失,这可能是进程正常结束或其他原因中断退出运行。当进程需要结束运行时,系统首先必须置该进程为结束状态,然后再进一步处理资源释放和回收等工作。

4、进程的转换

(1)就绪状态→运行状态:处于就绪状态的进程被调度后,获得处理机资源(分派处理机时间片),于是进程由就绪状态转换为运行状态。

(2)运行状态→就绪状态:处于运行状态的进程在时间片用完后,不得不让出处理机,从而进程由运行状态转换为就绪状态。此外,在可剥夺的操作系统中,当有更高优先级的进程就绪时,调度程序将正在执行的进程转换为就绪状态,让更高优先级的进程执行。

(3)运行状态→阻塞状态:当进程请求某一资源的使用和分配或等待某一事件的发生时,它就从运行状态转换为阻塞状态。进程以系统调用的形式请求操作系统提供服务,这是一种特殊的、当运行用户状态程序调用操作系统内核过程的形式。

(4)阻塞状态→就绪状态:当进程等待的时间到来时,中断处理程序必须把相应进程的状态有阻塞状态转换为就绪状态。

5、引起状态转换的事件

(1) 创建新进程:创建一个新进程,以运行一个程序。可能的原因为:用户登录、OS创建新进程以提供某项服务、批处理系统中的作业调度、应用请求(用户在程序中创建),创建进程后,它处于就绪状态。由于性能、内存、进程总数等原因,系统会限制并发进程总数。

(2) 调度运行(Dispatch):从就绪进程表中选择一个进程,进入运行状态;

(3) 释放(Release):由于进程完成或失败而终止进程运行,进入结束状态;运行到结束:分为正常退出Exit和异常退出Abort(执行超时或内存不够,非法指令或非法地址,I/O失败,被其他进程所终止)

(4)超时(Timeout):由于用完时间片,或高优先级进程就绪等导致进程暂停运行;进程由运行态→就绪态

(5)事件等待(Event Wait):进程要求的事件未出现而进入阻塞;可能的原因包括:申请系统服务或资源、通信、I/O操作等;

(6)事件出现(Event Occurs):进程等待的事件出现;如:操作完成、申请成功等;阻塞态→就绪态

6、引入挂起状态的原因

(1)终端用户请求。终端用户发现自己运行的程序有问题,希望暂停自己程序的执行;

(2)父进程请求,父进程希望挂起自己的某个子进程,以便考察和修改该子进程。

(3)负荷调节的需要。高优先级的进程要执行,而内存不空,系统将低优先级进程对换至外存。

提高处理机效率:就绪进程表为空时,要提交新进程,而此时内存不空,需挂起阻塞态的进程;

为运行进程提供足够内存(对换及调整负荷):资源紧张时,暂停某些进程,如:实时任务执行,而内存紧张

(4)操作系统的需要。操作系统需要挂起某些进程以便检查运行中的资源使用情况或进行记账。

7、进程控制块(PCB)

进程创建时,操作系统就新建一个PCB结构,它之后就常驻内存,任意时刻可以存取,在进程结束时删除。

PCB是进程实体的一部分,是进程存在的唯一标志

PCB主要包括:进程描述信息、进程控制和管理信息、资源分配清单和处理机相关信息等。

(1)进程描述信息

进程标识符:标志各个进程,每个进程都有一个并且是唯一的标识号。

用户标识符:进程归属的用户,用户标识符主要为共享和保护服务。

(2)进程控制和管理信息

进程当前状态:描述进程的状态信息,作为处理机分配调度的依据。

进程优先级:描述进程抢占处理机的优先级,优先级高的进程可以优先获得处理机。

(3)资源分配清单

用于说明有关内存地址空间或虚拟地址空间的状况。

(4)处理机相关信息

主要指处理机中各寄存器值,当进程被切换时,处理机状态信息都必须保持在相应的PCB中,以便在该进程重新执行时,能再从断点继续执行。

二、线程

1、线程的基本概念

线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元。

线程是进程中的一个实体,是被系统独立调用和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。

2、线程与进程的比较

(1)调度

在引入线程的操作系统中,线程是独立调度的基本单位,进程是拥有资源的基本单位

在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,会引起进程切换。

(2)拥有资源

进程是拥有资源的基本单位,而线程不拥有资源(也有一点必不可少的资源),但线程可以访问其隶属于进程的系统资源。

(3)并发性

在引入线程的操作系统中,,不仅进程之间可以并发执行,而且多个线程之间也可以并发执行,从而使操作系统具有更好的并发性,提高了系统的吞吐量。

(4)系统开销

由于创建进程或撤销进程时,系统都要为之分配或回收资源,因此操作系统所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程CPU环境的保存及新调度到进程CPU环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。此外,由于同一进程内的多个线程共享进程的地址空间,因此,这些进程之间的同步与通信非常容易实现,甚至无需操作系统的干预。

(5)地址空间和其他资源

进程的地址空间之间互相独立,同一进程的各线程间共享进程的资源,某进程内的线程对于其他进程不可见。

(6)通信方面

进程间通信需要进程同步和互斥手段的辅助,以保证数据的一致性,而线程间可以直接读/写进程数据段来通信。

3、线程的属性

(1)线程是一个轻型实体,它不拥有系统资源,但每个线程都应有一个唯一的标识符和一个线程控制块,线程控制块记录了线程执行的寄存器和栈等现场状态。

(2)不同的线程可以执行相同的程序,即同一个服务程序被不同的用户调用时,操作系统为它们创建不同的线程。

(3)同一进程中的各个线程共享该进程所拥有的资源。

(4)线程是处理机的独立调度单位,多个线程是可以并发执行的,在单CPU的计算机系统中,各线程可交替地占用CPU;在多CPU的计算机系统中,个线程可同时占不同的CPU,若各个CPU同时为一个进程内的各线程服务则可缩短进程的处理时间。

(5)一个线程被创建后便开始了它的生命周期,直至终止,线程在生命周期内会经历阻塞态、就绪态和运行态等各种状态变化。

4、线程的实现方式

(1)用户级线程

在用户级线程中,有关线程管理的所有工作都由应用程序完成,内核意识不到线程的存在。应用程序可以通过使用线程库设计成多线程程序。通常,应用程序从单线程起始,在该线程中开始运行,在其运行的的任何时刻,可以通过调用线程库中的派生例程创建一个在相同进程中运行的新线程。

(2)内核级线程

在内核级线程中,线程管理的所有工作由内核完成,应用程序没有进行线程管理的代码,只有一个到内核级线程的编程接口。内核为进程及其内部的每个线程维护上下文信息,调度也是在内核基于线程框架的基础上完成的。

(3)用户级与内核级的组合

线程创建完成在用户空间中完成,线程的调度和同步也在应用程序总进行。一个应用程序中的多个用户级线程被映射到一些(小于或者等于用户级线程的数目)内核级线程上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: