目录
- 一、程序
- (一)概念
- (二)程序的执行
- 二、进程
- (一)概念与特征
- (二)进程控制块
- (三)进程句柄
- (四)进程的状态
- 三、线程
- 四、作业
- (一)概念
- (二)作业控制块
一、程序
(一)概念
应用程序是由程序段组成的,即一段程序就是程序段。程序是静态的指令集合,也可以说是一个操作序列。
(二)程序的执行
程序的执行方式有两种,分别是顺序执行和并发执行。
1、顺序执行
前者可概括为“顺序独占”,即每个操作必须在下一个操作开始前结束,执行时独占全部系统资源,且执行时不受外界影响。另外,当程序重复执行时,只要其执行环境和初始条件协同,则无论执行时间和过程如何,最终结果始终相同。
例如,下面这个程序段包含了四条语句,语句的关系是S1→S2→S3→S4,按照关系依次顺序执行:
2、并发执行
后者可概括为“并发共享”,多个程序并发执行(在同一时间间隔内执行),共享系统资源且相互合作,这种方式提高了系统的吞吐量和对资源的利用率。由于并发执行中,系统资源状态会因程序间互相制约的关系而改变,从而导致失去了可再现性,即最终得到的结果每个都不同。
两者的对比如下表:
方式 | 优点 | 缺点 |
---|---|---|
顺序 | 封闭性、可再现性、资源占用少 | 效率低、无法充分利用资源 |
并发 | 效率高、充分利用资源 | 不可再现性、资源占用多、竞态条件 |
二、进程
操作系统中引入进程的概念的目的是使多个程序能并发执行,以提高系统资源利用率和吞吐量。
(一)概念与特征
进程是对程序加以描述和控制,使其“动态化”,即进程是程序的一次执行实例,其中包含了程序运行时所需要的所有信息,它是系统进行资源分配和调度的基本单位。每一个进程都有一个进程标识符(PID),且占用一定的系统资源(包括内存、CPU时间等),如下图,可看到计算机资源监视器里面的进程信息:
进程的特征分为动态性、并发性、独立性以及异步性,其中,并发性可概括为“同存同运行”,即多个进程实体共同在内存中,且一段时间内同时运行。另外,每个进程实体是可以独立运行的且独立获得资源和独立接受调度。
进程特征 | 备注 |
---|---|
动态性 | 进程执行有一定的生命周期 |
并发性 | 同存同运行 |
独立性 | 独立运行、独立获得资源、独立接受调度 |
异步性 | 以不可预知的速度向前推进 |
(二)进程控制块
1、进程和PCB的组成
进程实体由程序段、相关的数据段以及PCB(进程控制块)三部分组成。其中,PCB是进程存在于系统中的唯一标志。
通过打开Windows PowerShell 管理员模式,然后命令行中输入命令get-proces获取进程,显示的各列信息如下图所示:
2、PCB的组成
PCB通常包括PID(进程标识符)、进程句柄、进程状态、优先级、资源需求等。PCB的设置是为了确保并发执行的每个程序都能独立地运行,创建进程就是创建进程实体的PCB,而撤销进程就是撤销进程实体的PCB。
(三)进程句柄
进程句柄(Handle)用于引用操作系统的资源,从而进行访问和操作。前面讲到,PID是唯一标识一个进程,而多个进程可能有相同的句柄值。
(四)进程的状态
在一个进程被终止前,该进程处于三种基本状态中,分别是就绪状态、执行状态以及阻塞状态。可以依次连成一个环,如下,三种状态可转换:
这里的时间片用完后,执行状态的进程必须释放CPU,以便其他进程占用CPU,然后当前进程进入就绪队列,转变为就绪状态。另外,这三种状态中,只有执行状态→阻塞状态是进程自身的主动行为,是由进程本身决定的,是因为该转换通常是因为进程需要等待某个事件完成或满足某个条件时发生的,进程会主动调用相应的系统调用或原语,将自己置为阻塞状态,并释放CPU给其他进程使用。
三、线程
操作系统引入线程的概念的目的是为了提高系统的并发性,减少程序并发执行时所付出的时间和空间开销。
一个进程中含有一个或多个相对独立的线程,且同一个进程中的线程或不同线程中的多个线程均可并发执行。可以说,线程是调度和分派的基本单位。另外,由于线程较进程更小且不拥有系统资源,当需要调度时,其开销会更小。
进程和线程的比较如下表:
特点 | 进程 | 线程 |
---|---|---|
资源 | 拥有资源 | 一般不拥有资源 |
开销 | 大 | 小 |
独立性 | 独立空间 | 每个线程共享进程的空间 |
生命周期 | 完整周期 | 与进程紧密相关 |
四、作业
(一)概念
作业是用户向计算机提交的工作任务实体,通常包括程序、数据和作业说明书三部分。作业的执行过程是由进程完成,即一个作业是由一个或多个进程组成的。例如,在批处理系统中,作业是作为基本单位从外存调入内存的。
(二)作业控制块
作业步是作业的一部分,作业被分为若干个作业步,每个作业步完成特定的工作任务。另外,JCB(作业控制块)是作业在操作系统中存在的标志,它保存作业进行调度和管理所需的信息。