• 进程的起源

程序就是一个指令序列

在程序执行的过程中,需要将其放入内存中之后才会被CPU所处理。早期的计算机中只支持单道程序,所以计算机中的所有资源都只被这一个程序所享有,包括内存。所以内存只供当前运行的程序所使用。内存被划分为程序段和数据段,程序段用于存放程序代码,数据段则用于存放程序中的数据。因为只有一个程序,所以很容易就能在内存中找到相应的程序段和内存段

然而随着计算机的发展,开始运行多道程序,即同一时间内多个程序并发。这样内存中就需要存放各个运行的程序的相关信息,即程序段和数据段。这样就会产生一个问题,操作系统如何才能找到各程序的存放位置

所以为了方便操作系统管理和完成各个程序并发执行,引入了进程和进程实体的概念。操作系统为每个运行的程序配置了一个数据结构,进程控制块PCB,用来描述进程的各种信息,例如程序代码存放的位置,数据所存放的位置。所以PCB存放的是进程的相关信息,相当于程序段、数据段的地址,并不是直接存放程序段、数据段的内容。程序段、数据段的具体内容存放在内存中的其他地方,由于有PCB的存在,这些部分很容易被获取


PCB、程序段、数据段三个部分构成了进程实体,也称进程印象。一般情况下,我们把进程实体简称为进程,例如所谓的创建进程,实质上是创建进程实体的PCB;而撤销进程,实质上是撤销进程实体中的PCB。

注意

PCB是进程存在的唯一标志

  • 定义

从不同的角度,进程可以有不同的定义,比较传统典型的定义有:

  1. 进程是程序的一次执行过程
  2. 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  3. 进程是具有独立功能的程序在数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位

注意

以上三种定义都是在强调进程的“动态性”,即强调进程它是一个运动的过程

引入进程实体的概念后,可以把进程定义为:

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

注意

严格来说,进程实体和进程并不一样,进程实体是静态的,进程则是动态的。

所以应该如何去理解进程和进程实体:

进程实体包括PCB、程序段、数据段。而一个程序在内存中是分为程序段和数据段进行存储的,加入的PCB是为了解决之前提到的多道程序中操作系统该如何获取各个程序在内存中的程序段、数据段而不会和其他的程序混在一起的问题。所以可以这么理解,在具有多道程序技术的计算机中,进程实体和程序本身相比,就是在内存中多了一个用于管理不同进程的数据结构PCB。所以可以这么理解,程序本身和进程实体只相差了一个PCB,二者均是静态的,即是存储起来的状态,而进程所描述的,是进程实体运行的过程,或者说是程序运行的过程,即强调的是程序的运行,动态的过程,

  • 进程的组成

进程实体是由PCB、程序段、数据段组成的

  • PCB:操作系统通过PCB来管理进程,因此PCB中应该包含操作系统对其进行管理所需的各种信息
  • 程序段:存放的是程序的代码本身,即一系列的指令
  • 数据段:存放的是程序运行中使用、产生的运算数据。例如全局变量、局部变量、宏定义的常量等都是存放在数据段内

PCB

  • 进程描述信息
  • 进程标识符PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的ID,用于区分不同的进程,就像是身份证号
  • 用户标识符UID
  • 进程控制和管理信息
  • 进程当前状态
  • 进程优先级
  • 资源分配清单
  • 处理机相关信息
  • 各种寄存器值:当进程切换时需要把进程当前的运行情况记录下来保存到PCB中,因为寄存器中可能会有一些计算的中间结果
  • 进程的组织

一个系统中,通常有很多个PCB。为了能对他们加以有效的管理,应当用适当的方式把PCB组织起来。

注意

进程的组织讨论的是多个进程之间的组织方式,而进程的组成讨论的是进程内部的结构

进程的组织方式

链接方式

  • 按照进程状态将PCB分为多个队列(根据不同的状态分配指针)
  • 操作系统持有指向各个队列的指针

索引方式

  • 根据进程状态的不同,建立几张索引表
  • 操作系统持有指向各个索引表的指针

-

  • 进程的特征

动态性

进程是程序的一次执行过程,是动态地产生、变化和消亡的。动态性是进程的最基本的特征

并发性

内存中有多个进程实体,各进程可并发执行

独立性

进程是能独立运行、独立获取资源、独立接受调度的基本单位

异步性

各进程按各自独立的、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题。因为异步性会导致并发程序执行结果的不确定性。

结构性

每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成

标签: 内存, 进程, 定义, 操作系统, 实体, 程序, PCB, 程序段

相关文章推荐

添加新评论,含*的栏目为必填