czxt 3-1 进程概念
进程概念
OS的基本特性是并发与共享,即在系统中同时存在几个相互独立的程序,他们交叉地运行,并共享资源。
01 resource competition 资源的竞争
02 Cooperate 程序之间的合作和协同
03 Communication 程序之间的通信
要解决这些问题,用程序的概念已经不能描述程序在内存中运行的状态,必须引入新的概念--进程
顺序环境计算机系统只有一个程序在运行,该程序独占系统中所有资源,其执行不受外界影响
顺序执行的特征
顺序性:按照程序结构所指定的次序(可能有分支或循环)
封闭性:独占系统的资源
可再现性:初始条件相同则结果相同。如:可通过空指令控制时间关系。
并发环境:
一定时间内,物理机器上有两个或两个以上的程序同处于开始运行但尚未结束的状态,并且次序不是事先确定的。
并发执行的特征
间断(异步)性 -> "走走停停",一个程序可能走到中途停下来,失去原有的时序关系;
失去封闭性 -> 共享资源,受其他程序的控制逻辑的影响。如:一个程序写到存储器中的数据可能被另一个程序修改,失去原有的不变特征。
失去可再现性 -> 失去封闭性 ->失去可再现性;外界环境在程序的两次执行期间发生变化,失去原有的可重复特征。
程序并发执行的特点
例如:观察者/报告者,有两个循环程序A和B,它们共享一个变量N。程序A每执行一次时都要做N:=N+1操作;程序B每执行一次时,都要做print(N)操作,然后再将N置成“0”,程序A和B以不同的速度运行。可能出现多报或漏报。(假定某时刻变量N的值为5)
B->A->B 即N=N+1 在Print和N=0之间 N=5,N=6,N=0
多道程序设计对OS的要求
如何描述并发程序的执行:引入进程,及其状态
如何实现并发程序运行:进程控制与调度
如何处理资源的竞争与程序间的合作:并发控制与通信
如何解决死锁: 死锁策略
进程概念
为了描述程序在并发执行时对系统资源的共享,我们需要一个描述程序执行时动态特征的概念,这就是进程。
Process – a program in execution; 进程 - 在执行中的程序;
一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程。
A program is a passive entity; a process is a active entity.
引入多进程,提高了对硬件资源的利用率,但又带来额外的空间和时间开销,增加了OS 的复杂性;
进程与程序
A process includes: 一个进程包括
Program code 程序代码
Current activity 当前活动
Related data相关数据:
stack 栈 Heap 堆data section数据段
Stack 通常是一些temporary data临时数据 如函数参数,返回地址,局部变量等Heap 通常是程序运行时申请的动态内存Data section 通常是Global variable全局变量
进程与程序的不同
进程是动态的,程序是静态的
程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制。
进程是暂时的,程序是永久的
进程是一个状态变化的过程,程序可长久保存。
进程与程序的组成不同
进程的组成包括程序、数据和进程控制块(即进程状态信息)。
进程与程序的对应关系
通过多次执行,一个程序可对应多个进程;通过调用关系,一个进程可包括多个程序。
进程的特征
结构特征:进程实体=程序段+相关的数据段+PCB。
动态性:进程的实质是进程实体的一次执行过程,因此动态性是 进程的最基本的特征。
并发性: 多个进程实体同存在于内存中,且能在一段时间内同时运行。是最重要的特征。
独立性:指进程实体是一个能独立运行、独立分配资源和独立接受调度的基本单位。
异步性: 进程按各自独立的、不可预知的速度向前推进。
进程描述
进程存在意味着:
处于某种状态(运行、就绪、等待)进程控制块PCB(数据结构)进程的执行程序(一个可执行文件)进程位于某个队列(就绪、等待某事件队列)占用某些系统资(内存,打开某些文件、处理机、外设)