为了实现程序的并发执行,才引入进程
程序的顺序执行: (顺序性,封闭性,可再现性)
程序的并行执行,提高CPU的效率和系统吞吐率:(间断性,失去封闭性,不可再现性)
- 引入进程解决程序并发的问题,进程的特征:
① 结构特性,为使程序能够独立运行,应为之配置一进程控制块,即PCB(Process Control Block)。而程序段、相关的数据段和PCB三部分构成进程实体。所谓创建进程,实质上是创建进程实体中的PCB,撤销进程也是撤销进程中的PCB。
② 动态性,进行的实质是进程实体的一次执行过程,因此,动态性是进程最基本的特性,进程实体是有一个的生命周期,而程序则只是一组有序指令的集合,并存放在某种介质上(如硬盘),其本身不具有运动的含义,因而是静态的。
③ 并发性,多个进程实体同存于内存中,并且能够在一段时间内同时运行。并发性是进程的重要特征, 同时也成为OS的重要特征。
④ 独立性,进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。凡未建立PCB的程序都不能作为一个独立的单位参与运行。
⑤ 异步性,进程按各自独立的、不可预知的速度向前推进,或者说进程实体按照异步方式运行。
进程是进程实体的运行过程,是系统进行资源分配和调度(在线程未出现之前)的一个独立单位。
进程的状态:
① 就绪状态,当进程已分配到除CPU以外的所有必要资源后,只要再获得CPU,就可以立即运行,进程这时的状态称为就绪状态。在一个系统中可能多个进程处于就绪状态,通常将它们排成一个队列,称为就绪队列。
② 执行状态,进程已获得CPU,其程序正在执行。在单处理机系统中,只有一个进程处于执行状态,在多处理机系统中,则有多个进程处于执行状态。
③ 阻塞状态,处于执行状态的线程由于发生某事件而暂停无法继续执行时,便放弃处理机而处于暂停状态,此时进程的状态称为阻塞状态,或等待状态或封锁状态。如IO请求,申请缓存空间等,处于阻塞状态的进程也会排成一个队列,可能还会根据不同的阻塞原因排成多个队列。
除了上述三种基本状态外,在一些系统中,新增了挂起状态,引入挂起状态的原因如下
① 终端用户的请求,当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来,即使正在执行的进程暂停执行;若此时用户进程正处于就绪状态而未执行,则该进程暂不接受调度,以便用户研究其执行情况或对程序进行修改,这种状态就称为挂起状态。
② 父进程请求,有时父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。
③ 负荷调节的需要,当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能够正常运行。
④ 操作系统的需要,操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。
引入了挂起状态后,又增加了如下几种状态的转化
① 活动就绪->静止就绪,当进程处于未被挂起的就绪状态时,称为活动就绪状态;当挂起时,变为静止就绪状态,处于静止就绪状态的进程不接受调度。
② 活动阻塞->静止阻塞,当进程处于未被挂起的阻塞状态时,称为活动阻塞状态;当挂起时,变为静止阻塞状态,处于该状态的进程在其所期待的事件发生后,将从静止阻塞变为静止就绪。
③ 静止就绪->活动就绪,使用激活原语激活。
④ 静止阻塞->活动阻塞,使用激活原语激活。
为了进程的管理,还存在着两种常见的状态,即创建状态和终止状态。
进程控制块:
为了描述和控制进程的运行,系统为每个进程定义了一个数据结构,进程控制块PCB,它是进程实体的一部分,是操作系统中最重要的记录型数据结构,PCB中记录了操作系统所需的,用于描述进程当前情况以及控制进程运行的全部信息。进程控制块的作用是使一个在多道程序环境下能独立运行的程序,成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。或者说,OS是根据PCB来对并发执行的进程进行控制和管理的。PCB是进程存在的唯一标识。
进程控制块PCB主要包含如下信息。
① 进程标识符,用于唯一地标识一个进程,有内部标识符(由系统赋予的唯一一个数字,通常为进程的序号,为方便系统使用)和外部标识符(由创建者提供,可描述进程的家族关系)。
② 处理机的状态,当处理机被中断时,其寄存器的信息都必须保存在进程的PCB中,以便该进程重新执行时,能从断点继续执行。
③ 进程调度信息,包括进程状态(指明进程的当前状态,作为进程调度和对换时的依据),进程优先级(用于描述进程使用处理机的优先级别,优先级高的进程应该优先获取处理机),进程调度所需的其他信息(与进程调度算法有关,如进程已等待CPU的时间总和,进程已执行的时间总和等),事件(进程由执行状态转变为阻塞状态所等待发生的事件,即阻塞原因)。
④ 进程控制信息,包括程序和数据的地址(进程的程序和数据所在的内存或外存首址,以便在调度该进程时,能从PCB中找到其程序和数据),进程同步和通信机制(实现进程同步和进程通信时必需的机制,如消息队列指针,信号量等),资源清单(除CPU以外的进程所需的全部资源以及已经分配到该进程的资源的清单),链接地址(本进程PCB所在队列中的下一个进程的PCB的首地址)。
线程:
六、线程
6.1 线程与进程的比较
线程称为轻型进程或进程元,在引入线程的操作系统,一个进程往往都拥有多个线程,至少有一个线程,下面从不同的方面将线程与进程进行比较(前提是操作系统引入了线程)。
① 调度
线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位。同一进程中,线程的切换不会引起进程的切换,但从一个进程中的线程切换到另外一个进程中的线程时,将会引起进程切换。
② 并发性
不仅进程间可以并发执行,同一个进程中的多个线程之间亦可并发执行,是的操作系统具有更好的并发性,从而能更加有效地提高系统资源利用率和系统吞吐率。
③ 拥有资源
线程一般不拥有系统资源(除少量必不可少的资源),但它可以访问其隶属的进程的资源,即一个进程的代码段,数据段以及拥有的系统资源,如已打开的文件、I/O设备等。
④ 系统开销
在创建和撤销进程时,系统都要为之创建和回收进程控制块,分配或回收资源,操作系统付出的开销明显大于线程创建或撤销时的开销,在进程切换时,涉及到当前进程CPU环境的保存和新被调度运行进程的CPU环境的设置,而线程的切换则仅需保存和设置少量寄存器内容,不涉及存储器管理方面的操作,所以线程的切换开销远小于进程切换开销,以外,由于一个进程中的多个线程具有相同的地址空间,在同步和通信的实现上也比较容易,在一些操作系统中,线程的切换,同步和通信都无需操作系统内核的干预。