进程:资源分配的基本单位,也是独立运行的基本单位。
1、程序的顺序执行:一个程序通常由若干字段组成,他们必须按照某种先后次序执行,仅当前一个操作执行后才能进行下一个操作,这类计算过程就是程序的顺序执行过程。
特征:
顺序性:严格按照顺序执行
封闭性:程序一旦开始运行,便不受外界条件的改变而改变
可再现性:只要程序的初始条件和执行环境相同,当程序重复执行时,一定会得到相同的结果
2、程序的并发执行:指若干个程序同时在系统中运行,这些程序(或程序段)在执行时间上时重叠的,即一个程序尚未结束而另一个程序已经开始。
特征:
间断性:程序在并发执行时,由于他们共享资源或为完成同一任务而相互合作,致使并发程序之间形成了相互制约的关系
失去封闭性:程序在并发执行过程中,多个程序共享系统中的资源,因而这些资源的状态将由多个程序改变,致使程序失去了封闭性。例如:当处理器被某程序占用时,其他程序必须等待
不可再现性:由于并发执行导致失去了封闭性,因此也将导致程序的不可再现型
3、进程
3.1 定义
是程序在处理器上的一次执行过程
是可以和别的进程并行执行的计算
是程序在一个数据集合上面的执行过程,是系统进行资源分配和调度的独立单位
可定义为一个数据结构及能在其上进行操作的一个程序
是一个程序关于某个数据集合在处理器上顺序发生的活动
3.2 特征
动态性:进程是程序在处理器上的一次执行过程,因此不是一成不变的,是一个动态概念:他因创建而产生,因调度而执行,因得不到资源而暂停,因撤销而消亡。
并发性:多个进程可以在同一时间内同时存在在进程当中,能在一段时间内同时运行。
独立性:进程是一个能够独立运行的基本单位,也是系统进行资源分配和调度的独立单位。
异步性:进程以各自的不可预知的速度向前推进。
结构特征:每个进程由程序段、数据段和一个进程控制块(Process Control Block)组成。
3.3 进程与程序
- 进程是动态的,程序是静态的。进程是程序的执行过程,每个进程包含了程序段、数据段以及PCB,而程序是一组有序代码的集合,无执行意义。
- 进程是暂时的,会暂停也会消亡,程序是永久的。
- 通过多次执行,一个程序可能产生不同的进程;通过调用关系,一个进程可以执行多个程序,进程可以创建其他进程,程序不能创建其他程序。
3.4 进程与作业
- 作业是用户需要计算机完成某项任务而要求计算机所做的工作的集合,一个作业的完成需要经历作业提交、作业收容、作业执行和作业完成四个阶段。而进程是已提交的作业的执行过程,是资源分配的基本单位。
- 作业是用户向计算机提交的任务实体。在用户向计算机提交作业之后,系统将他放入外存中的作业等待队列中等待执行,而进程则是完成用户任务的执行实体,是向系统分配资源的基本单位。任一进程,只要被创建,就会有一部分存在在内存当中。
- 一个作业可由一个以上的进程构成,而一个进程却不能构成多个作业。
3.5 PCB是进程存在的唯一标志
- PCB是系统为每一个进程定义的一个数据结构,其作用是能够使程序能够独立运行,PCB使一个在多道程序环境下不能独立运行的程序成为一个能独立运行的基本单位,一个能与其他进程并发的进程,因此PCB是为了保证程序的并发执行。创建进程,实际上就是创建了PCB,撤销进程实际上就是撤销PCB。
- 在系统调用了某个进程之后,要根据其PCB中保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存地址,找到其程序和数据;进程在执行过程中,当需要和与之合作的进程实现同步、通信或者访问文件时,也需要访问PCB;当进程由某种原因暂停执行时,也会将其断点的处理机状态保存在PCB中。
- 可见,在整个生命周期当中,系统总是通过PCB对进程进行控制,即系统根据PCB感知进程的存在,所以PCB是进程存在的唯一标志。
3.6 进程和线程
线程的引入:为了使进程并发执行,操作系统还必须进行一系列的操作,如创建进程、撤销进程和进程切换等。在进行这些操作时,操作系统要为进程分配及回收资源,为运行进程保留现场信息,这些工作都需要一定的时空开销。线程的引入,是为了减少程序并发执行时所付出的时空开销,使操作系统具有更好的并发性。
线程的定义:线程是一个相对独立的、可调度的执行单元。线程上自己本身不占用资源,或者说只占用一点必不可少的资源(如程序计数器等),它可以与同属一个进程的其他线程共享该进程拥有的全部资源。
线程与进程的区别及联系:
- 调度:在传统的OS中,拥有资源和调度的基本单位都是进程。在引入线程的OS中,线程使独立调度的基本单位,进程使拥有资源的基本单位。在同一进程中,不同线程之间的切换不会引起线程的切换。
- 拥有资源:进程使拥有资源的基本单位,线程不拥有资源(或者说只用于一些支持线程存在的资源),线程可以访问其隶属进程的资源。
- 并发性:引入线程的OS,不仅进程之间可以并发执行,而且同一进程内的多个线程也可以并发执行,这使得操作系统具有更好的并发性,大大提升了系统的吞吐量。
- 系统开销:创建或者撤销进程时,系统需要为之分配或回收资源;在进程切换时,系统需要保存当前进程的CPU环境保存和新调度到CPU进程的和环境设置。而线程切换时,只需要少量地保存和设置寄存器内容,因此开销很小。另外,同一个进程内多个线程共享进程的地址空间,因此,多线程之间的同步与通信非常容易实现,甚至无需操作系统的干预。
#End