赞
踩
在看进程之前,先看看程序的定义:
程序:就是一个指令序列;
早期的计算机只支持单道程序,在计算机中同一时间段只能有一道程序在运行,正在运行的程序,CPU只为这个程序服务,内存当中只会存放这个程序的信息,各种各样的IO设备,所有的系统资源都为当前执行的程序进行服务。
在这一阶段,内存当中同一时间段内只会存在与一个程序相关的数据,与这个程序运行相关的程序包括程序段和数据段两个部分。其中程序段保存的就是程序的代码本身,也就是程序要执行的指令序列,这些指令是存放在程序段中的。而数据段存放的是程序运行过程当中所需要的一些数据,比如写程序时的一些变量。由于这个阶段计算机在一个时间段内只会有一道程序指令序列要执行,这道程序相关的信息、数据只需要存储到内存中的某一些固定的位置就可以了,比如说程序段可以存放到内存的低地址部分,就是图中的内存最上面部分,而数据段可以存放在内存的高地址部分。CPU在执行这些程序的指令的时候要到内存的低地址部分来取得程序相关的指令,然后按照指令一条一条往下执行就可以了。同样,如果要找到程序对应的数据,只需要到对应的数据段内存分区寻找就可以了。所以这就是单道程序的一些特性。
引入多道程序技术之后,计算机当中同一时刻可以有多道程序并发执行,内存当中也会有多道程序相关的数据和程序段。由于在这个阶段内存中要存放多个程序的数据,操作系统作为程序的管理者,要让程序实现并发的执行,操作系统需要找到各个程序的程序代码存放的位置,也就是各个程序在内存中的程序段分别在什么位置。系统中的各种I/O设备还有其它一些资源可能被分配给不同的程序,每一个正在运行的程序当前被分配了哪些系统资源,这些信息也需要记录下来,这样可以方便操作系统进行管理。
为了方便操作系统管理,完成各种程序并发执行,引入了进程、进程实体的概念。操作系统在每个程序开始执行之前,都会为即将执行的程序创建一个PCB(进程控制块)的数据结构,PCB会存放操作系统用于管理这些正在运行的程序所需要的各种信息,比如程序代码存放位置等。
由PCB、程序段、数据段就构成了进程实体,也可以成为进程映像。一般情况下,可以把进行实体简称为进程。例如,所谓创建进程,实质上是创建进程实体中的PCB,而撤销进程,实际上是撤销进程实体中的PCB。
需要注意的是,PCB是进程存在的唯一标志。
从不同的角度,进程可以有不同的定义,比较传统典型的定义有:
所有的这些定义都在强调一个事情,进程是一个动态的过程。引入进程实体的概念后,可以把进程定义为:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位;
严格来说,进程和进程实体并不一样,进程实体是静态的,进程则是动态的。
进程(进程实体)由程序段、数据段、PCB三部分组成。程序段存放的是程序的代码本身,一系列的指令序列。在这一系列的指令运行过程中,可能会有一些中间的运算结果还有运行的数据,比如变量或宏定义的常量,这些程序运行当中所需要的数据就是存放在数据段中。PCB是操作系统用于管理进程的,PCB是用于管理并发的数据结构,所以PCB当中包含操作系统对进程进行管理的各种信息。
具体看一下PCB中有哪些信息:
在一个系统中,通常有数十、数百乃至数千个PCB。为了能对他们加以有效的管理,应该用适当的方式将这些PCB组织起来。
进程的组成讨论的是一个进程内部由哪些部分组成的问题,而进程的组织讨论的是多个进程之间的组织方式问题
进程的组织方式主要分为连接方式和索引方式。
链接方式其实就是操作系统会持有一系列的指针,每一个指针会指向不同状态的进程队列,执行指针指向当前处于运行状态(运行态)的进程,也就是正在被CPU处理的进程,单CPU计算机中,同一时刻只会有一个进程处于运行态,所以执行指针指向一个进程的PCB。
除此之外,操作系统还会有就绪队列指针,指向当前处于就绪状态的进程,这些进程的PCB,操作系统会用链接的方式链接成一个队列,通常优先级较高的进程会放在队头。
操作系统还会有一个阻塞队列指针,用于指向当前处于阻塞状态的进程。
索引方式和链接方式很类似,不同之处在于指针指向的是一个索引表,而不是一个队列的队头,而索引表的表项又会指向处于就绪状态的PCB,操作系统会为不同状态的进程建立不同的阻塞索引表,各个索引表的表项又指向处于这个状态的进程的PCB
进程和程序是两个截然不同的概念,相比于程序,进程有以下特征:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。