转自:http://baike.baidu.com/view/19746.htm
进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。多道程序在执行时,需要共享系统资源,从而导致各程序在执行过程中出现相互制约的关系,程序的执行表现出间断性的特征。这些特征都是在程序的执行过程中发生的,是动态的过程,而传统的程序本身是一组指令的集合,是一个静态的概念,无法描述程序在内存中的执行情况,即我们无法从程序的字面上看出它何时执行,何时停顿,也无法看出它与其它执行程序的关系,因此,程序这个静态概念已不能如实反映程序并发执行过程的特征。为了深刻描述程序动态执行过程的性质,人们引入“进程(Process)”概念。
概念提出
进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
定义
狭义定义:进程是正在运行的程序的实例(aninstanceof acomputer programthat is being executed)。
-
主要两点
进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。
进程是操作系统中最基本、重要的概念。是多道程序系统出现后,为了刻画系统内部出现的动态情况,描述系统内部各道程序的活动规律引进的一个概念,所有多道程序设计操作系统都建立在进程的基础上。
原因
操作系统引入进程的概念的原因:
从理论角度看,是对正在运行的程序过程的抽象;
特征
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位;
异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进
结构特征:进程由程序、数据和进程控制块三部分组成。
多个不同的进程可以包含相同的程序:一个程序在不同的数据集里就构成不同的进程,能得到不同的结果;但是执行过程中,程序不能发生改变。
内容
一个计算机系统进程包括(或者说“拥有”)下列数据:
那个程序的可运行机器码的一个在存储器的映像。 分配到的存储器(通常包括虚拟内存的一个区域)。存储器的内容包括可运行代码、特定于进程的数据(输入、输出)、调用堆栈、堆栈(用于保存运行时运数中途产生的数据)。 分配给该进程的资源的操作系统描述符,诸如文件描述符(Unix术语)或文件句柄(Windows)、数据源和数据终端。 安全特性,诸如进程拥有者和进程的权限集(可以容许的操作)。 处理器状态(内文),诸如寄存器内容、物理存储器寻址等。当进程正在运行时,状态通常储存在寄存器,其他情况在存储器。
切换
这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来(保护现场),从而把处理器的寄存器腾出来让其他进程使用。那么被中止运行进程的中间数据存在何处好呢?当然这个地方应该是进程的私有堆栈。
让进程来占用处理器,实质上是把某个进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。
这就像多个同学要分时使用同一张课桌一样,所谓要收回正在使用课桌同学的课桌使用权,实质上就是让他把属于他的东西拿走;而赋予某个同学课桌使用权,只不过就是让他把他的东西放到课桌上罢了。
状态
进程执行时的间断性,决定了进程可能具有多种状态。事实上,运行中的进程可能具有以下三种基本状态。
1)就绪状态(Ready):
进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行。就绪进程可以按多个优先级来划分队列。例如,当一个进程由于时间片用完而进入就绪状态时,排入低优先级队列;当进程由I/O操作完成而进入就绪状态时,排入高优先级队列。
2)运行状态(Running):
进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目。在没有其他进程可以执行时(如所有进程都在阻塞状态),通常会自动执行系统的空闲进程。
3)阻塞状态(Blocked):
区别
程序
程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。
进程更能真实地描述并发,而程序不能;
进程具有创建其他进程的功能,而程序没有。
同一程序同时运行于若干个数据集合上,它将属于若干个不同的进程,也就是说同一程序可以对应多个进程。
线程
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源,在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位,由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。
控制
进程控制是进程管理中最基本的功能。它用于创建一个新进程,终止一个已完成的进程,或者去终止一个因出现某事件而使其无法运行下去的进程,还可负责进程运行中的状态转换。
创建进程
1.引起创建进程的事件
在多道程序环境中,只有(作为)进程(时)才能在系统中运行。因此,为使程序能运行,就必须为它创建进程。导致一个进程去创建另一个进程的典型事件,可以有以下四类:
1) 用户登录
2)作业调度
3) 提供服务
当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务,例如,用户程序要求进行文件打印,操作系统将为它创建一个打印进程,这样,不仅可以使打印进程与该用户进程并发执行,而且还便于计算出为完成打印任务所花费的时间。
4) 应用请求
2.进程的创建过程
1) 申请空白PCB。为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。
3) 初始化进程控制块。PCB的初始化包括:
①初始化标识信息,将系统分配的标识符和父进程标识符,填入新的PCB中。
4) 将新进程插入就绪队列,如果进程就绪队列能够接纳新进程,便将新进程插入到就绪队列中。
进程终止
1.引起进程终止的事件
1)正常结束
在任何计算机系统中,都应该有一个表示进程已经运行完成的指示。例如,在批处理系统中,通常在程序的最后安排一条Hold指令或终止的系统调用。当程序运行到Hold指令时,将产生一个中断,去通知OS本进程已经完成。
2)异常结束
在进程运行期间,由于出现某些错误和故障而迫使进程终止。这类异常事件很多,常见的有:越界错误,保护错,非法指令,特权指令错,运行超时,等待超时,算术运算错,I/O故障。
3)外界干预
2. 进程的终止过程
如果系统发生了上述要求终止进程的某事件后,OS便调用进程终止原语,按下述过程去终止指定的进程。
1)根据被终止进程的标识符,从PCB集合中检索出该进程的PCB,从中读出该进程状态。
2)若被终止进程正处于执行状态,应立即终止该进程的执行,并置调度标志为真。用于指示该进程被终止后应重新进行调度。
3)若该进程还有子孙进程,还应将其所有子孙进程予以终止,以防他们成为不可控的进程。
4)将被终止的进程所拥有的全部资源,或者归还给其父进程,或者归还给系统。
5)将被终止进程(它的PCB)从所在队列(或链表)中移出,等待其它程序来搜集信息。
阻塞唤醒
1.引起进程阻塞和唤醒的事件
1)请求系统服务
2)启动某种操作
当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成,该操作完成后,将该进程唤醒。
3)新数据尚未到达
对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据才能运行以对数据进行处理,则是要其所需数据尚未到达,该进程只有(等待)阻塞,等到数据到达后,该进程被唤醒。
4)无新工作可做
系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来,新任务到达后,该进程被唤醒。
2.进程阻塞过程
正在执行的进程,当发现上述某事件后,由于无法继续执行,于是进程便通过调用阻塞原语block把自己阻塞。可见,进程的阻塞是进程自身的一种主动行为。进入block过程后,由于此时该进程还处于执行状态,所以应先立即停止执行,把进程控制块中的现行状态由执行改为阻塞,并将PCB插入阻塞队列。如果系统中设置了因不同事件而阻塞的多个阻塞队列,则应将本进程插入到具有相同事件的阻塞(等待)队列。最后,转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换,亦即,保留被阻塞进程的处理机状态(在PCB中),再按新进程的PCB中的处理机状态设置CPU环境。
3. 进程唤醒过程
当被阻塞的进程所期待的事件出现时,如I/O完成或者其所期待的数据已经到达,则由有关进程(比如,用完并释放了该I/O设备的进程)调用唤醒原语wakeup(),将等待该事件的进程唤醒。唤醒原语执行的过程是:首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,然后再将该PCB插入到就绪队列中。
调度算法
进程的调度算法包括:
交互式系统中:RR(round robin时间片轮转算法),HPF(最高优先级算法),CTSS(Compatible Timesharing System)多级队列,最短进程优先,保证调度,彩票调度,公平分享调度
相关推荐
2020年我国企业数字化转型进程报告.pdf
2020年我国企业数字化转型进程报告-.pdf
工信安全:2020年我国企业数字化转型进程报告.pdf
在操作系统领域,进程是执行中的程序实例,它们有自己的内存空间和资源。进程的状态转换是操作系统管理进程生命周期的关键部分。这份“进程状态转换源代码+报告”涵盖了这一核心概念的实践和理论分析。以下是对这个...
数字化转型进程中的安全能力构建.pdf
中国数字化转型进程调研报告(66页).zip
通信行业周报:中国电信踏浪归来,助力产业数字化转型进程.pdf
### 进程状态转换知识点详解 #### 一、引言 在现代计算机系统中,操作系统是管理和控制硬件与软件资源的核心程序。为了更好地利用计算资源并实现多任务处理,操作系统引入了“进程”这一概念。进程是正在运行的...
从给定的C语言代码和描述来看,这是一个用于模拟操作系统中进程管理的程序。下面将对这个模拟系统的关键知识点进行详细解析。 ### 进程管理基础 在操作系统中,进程是资源分配的基本单位,也是处理器调度的基本...
《计算机操作系统》第三章主要探讨的是进程与进程管理,尤其是进程的概念、特征和状态转换。在操作系统中,进程是程序的动态执行实体,是系统分配资源和调度的基本单位。 3.1 进程的引入 引入进程的概念主要是为了...
### 进程运行/就绪/堵塞三个状态的转化以及通信调度算法 #### 一、进程的基本概念 在操作系统(OS)中,进程是程序的一次动态执行过程,它是系统进行资源分配和调度的一个基本单位。一个进程由程序段、数据段及...
Linux 进程运行状态图 Linux 操作系统中,进程的运行状态是指进程当前的执行状态,包括运行状态、可中断睡眠状态、不可中断睡眠状态、暂停状态和僵死状态等。这些状态之间的转换是通过内核中的调度程序实现的。 ...
进程切换必然引起中断和模式切换,即从用户态转到内核态,然后再回到用户态。但处理器模式的切换不必然引起进程切换,如系统调用等操作虽然从用户态进入内核态,但逻辑上仍保持同一进程的连续执行。 ### 总结 进程...
在计算机科学领域,系统进程管理是操作系统的核心组成部分,它负责创建、销毁、调度以及资源分配等与进程相关的操作。本文将深入探讨系统进程管理的概念、重要性及其源代码实现。 一、系统进程管理概述 系统进程是...
进程管理是操作系统的核心功能之一,它负责创建、调度和终止进程,确保系统资源被合理利用。在多道程序环境下,操作系统通过进程管理实现对多个程序的并发执行。 #### 2. C语言中的进程管理 C语言虽然是一种通用...
### 进程状态转换及其PCB的变化 #### 实验背景 在现代计算机系统中,操作系统是管理和控制硬件资源的核心软件,它提供了用户与硬件设备之间的交互接口。在操作系统内部,进程是基本的调度单位,每个进程都有自己的...
计算机进程是操作系统中一个至关重要的概念,它是程序在执行过程中的一个实例,包含了程序执行时所需的数据和指令。深入理解计算机进程,对于更好地管理和优化计算机性能至关重要。本文将详细阐述进程的基本概念、...
在IT领域,管理和控制计算机系统中的文件以及进程是至关重要的任务。"文件强力删除,进程管理"这个主题涉及了两个主要方面:一是如何在文件被其他进程占用时强制删除,二是如何有效地管理和控制系统的进程。 首先,...