想要理解进程就必须先知道程序的基本概念和执行过程。
程序:程序是计算机程序设计的基本单位,可以由编程语言编写而成,是一系列按照特定顺序执行的指令或代码的集合,用于完成特定的任务或实现特定的功能。
程序的执行方式有两种:顺序执行、并发执行。
程序的顺序执行:
一个较大的程序通常都有若干个程序段组成,程序在执行时,必须按照先后次序逐个执行,仅当前一个操作执行完后,才能执行后面的操作。
如果再考虑时间上的关系,会有下面的示例:
程序顺序执行的特点:
顺序性:严格按程序规定的顺序执行,即每一个操作必须在下一个操作开始之前结束。
封闭性:程序执行得到的最终结果由给定的初始条件决定,不受外界因素的影响。
可再现性:只要输入的初始条件相同,则无论何时重复执行该程序都会得到形同的结果。
程序的并发执行:
并发性是增强计算机系统的处理能力和提高资源利用率所采用的一种技术。在处理一批作业时,有的程序之间可实现并发执行。如:
考虑时间上的关系有:
程序并发执行时的特征:
间断性:并发程序之间相互制约。例如:执行 ——暂停执行 —— 执行。
失去封闭性:多个程序共享全机的资源。执行状态受到外界因素的影响。
不可再现性:程序在并发执行时,由于失去了封闭性,受到外界因素影响,虽然执行时的环境和初始条件相同,但得到的结果却各不相同。
---------------------------------------------------------------------------------------------------------------------------------
进程的定义:
进程的定义并不是唯一的,从不同的角度理解会有不同的定义。下面是较典型的定义:
1,进程是程序的一次执行过程。
2,进程是一个程序及其数据在处理机上顺序执行时所发生的活动。
3,进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位.
进程的结构:
进程 = 程序 + 数据 + PCB
PCB是进程的控制中心。
PCB: 这里面存储着进程标识(进程id),父进程id,处理器的状态信息,堆栈信息(调用信息).
PCB是管理控制进程的一个数据结构,一定存在内存中。
对于PCB控制进程,我们可能会产生一个疑问:操作系统作为资源管理者是如何管理进程的?
操作系统是通过各种各样的表管理资源,使用表来记载信息从而管理各种资源。如:
进程表:指向具体的进程。
内存表:管理内存分配情况,外存分配情况。
存储表:管理存储信息。
设备表:管理I/O设备。
文件表:记载文件信息。
进程的特征:
动态性:进程是进程实体的一次实现过程(动态性),有生命周期:由创建而产生,由调度而执行,由撤销而消亡。
并发性:指多个进程实体同时存在于内存中,能在一段时间内同时运行。引入进程的目的就是为了是进程能并发执行,以提高资源利用率,所以并发性是进程的重要特征,也是操作系统的重要特征。
独立性:进程是一个能独立运行,独立分配资源和独立接受调度的进步单位。
异步性:进程按各自独立的、不可预知的速度向前推荐。
进程和程序的区别:
进程和程序的本质区别是:动态和静态特征。
进程的基本状态和转换:
进程的五状态模型:
就绪状态:进程已分配到除CPU以外的所有必要资源,只要在获得CPU,便可立即执行的状态。
执行状态:已获得CPU,正在执行的状态。
阻塞状态:正在执行的进程由于发生某事件而暂时无法继续执行的状态。典型事件:请求I/O、申请缓存空间。
进程的七状态模型:
首先理解对换技术(交换技术),我们才能更好的理解七状态。
对换技术:将内存中暂时不能运行的进程,或暂时不用的数据和程序交换到外存中,以腾出足够的内存空间,把已具备运行条件的进程,或进程所需要的数据和程序交换到内存。
被挂起进程的特征:
1,不能立即执行
2,可能等待某事件发生。若是,则阻塞条件独立于挂起条件,即是阻塞事件发生,该进程也不能执行。
3,只有挂起它的进程才能使之由挂起状态转换为其他状态
进程控制:
进程控制是进程管理中最基本的功能,对系统中所有的进程实施有效的管理,其功能包括进程的创建、撤销、阻塞与唤醒等,这些功能一般是由操作系统的内核完成。
操作系统(OS)内核是计算机硬件的第一次扩充,由一些与硬件紧密相关的模块和运行频率较高的模块构成。内核常驻内存,受特殊保护。
进程是由层次结构的如:
进程创建:
引起进程创建的事件:
进程创建过程:操作系统一旦发现了要求创建进程的事件后,便调用进程创建原语create( ) 按以下过程创建一新进程:1,申请空白PCB;2,分配所需资源;3,初始化PCB;4,插入就绪队列
原语:若干条指令完成一定功能的“原子操作”的在核心态执行并常驻内存的过程。执行过程不可中断。
进程的终止:
引起进程终止的事件
1,正常结束。
2,异常结束:① 越界错误 ② 保护错 ③ 非法指令 ④ 特权指令错⑤ 运行超时 ⑥ 等待超时 ⑦ 算术运算错 ⑧ I/O故障等
3,外界干预:① 操作员或系统干预 ② 父进程请求 ③ 父进程终止
进程终止的过程:
进程的阻塞与唤醒:
引起进程阻塞和唤醒的事件:向系统请求共享资源失败; 等待某种操作的完成; 新数据尚未到达; 等待新任务的到达。
进程阻塞过程:调用阻塞原语Block()。具体过程: 1,停止执行;,2,状态由执行改为阻塞,3, 将PCB插入阻塞队列。
进程唤醒过程:调用唤醒原语Wakeup()。具体过程: 1,从阻塞队列中移出;,2,状态由阻塞改为就绪,3, 将PCB插入就绪队列。
注意:必须成对使用Block和Wakeup原语。
进程的挂起与激活:
当引起进程挂起的事件发生时,系统就将利用挂起原语suspend()将指定进程或处于阻塞状态的进程挂起。 当发生激活进程的事件时,系统就将利用激活原语active()将指定进程激活。
进程挂起过程:
进程激活过程:
进程阻塞与挂起的区别?
1.挂起是一个行为,而阻塞是进程的一种状态。
2. 进程存放的位置不同:挂起是将进程移到外存中,而处于阻塞状态的进程还是在内存中。
3. 原因不同:导致进程被挂起的原因一般是内存不足或者是系统、用户的请求,协调、修改进程等,进程阻塞是进程正在等待某一事件发生,可能是等待资源或者响应等而暂时停止运行。
4. 挂起对应的行为是激活,将外存中的进程调入内存中。而处于阻塞状态的进程需要其他进程或系统唤醒。
5. 挂起是被动的行为,进程被迫从内存中移至外存中。而进入阻塞可以看成是一个主动的行为。