操作系统学习-3. 进程的基本概念

来源:互联网 发布:淘宝双11营业额直播 编辑:程序博客网 时间:2024/06/03 05:46

写在前面:

这一篇博客将学习进程的基本概念。

程序的顺序执行与特征:

为了思维连贯,在介绍进程之前,需要了解程序的顺序执行与并发执行。在未配置OS的系统红,程序是顺序执行的。在多道程序的环境中,允许多个程序并发执行。

程序的顺序执行就是可以将一个程序分成若干程序段,若干程序段按照某种先后次序执行,仅当前一操作执行完后,才能执行后续操作。顺序操作有以下特征:
(1)顺序性:处理机的操作严格按照程序规定的顺序执行。
(2)封闭性:程序是在封闭的环境下执行的,程序运行独占全机资源。
(3)可再现性:只要程序执行时的环境和初始条件相同,程序重复执行时,结果都将一样。

在多道程序运行时,程序可进行并发执行。这里的并发与之前所说OS的并发性是一样的含义。程序的并发执行提高系统吞吐量(单位时间内,系统完成的作业量),但也产生与顺序执行时不同的特征:
(1)间断性:并发执行程序时,由于程序会共享某些系统资源,以及要完成某一任务而相互合作,导致程序之间产生相互制约的关系。导致程序具有“执行-暂停-执行”的间断性活动规律。
(2)失去封闭性:由于一些资源会被多个程序共同占有,导致可能会有多个程序对这些共享资源的状态产生影响。
(3)不可再现性:程序失去封闭性,自然导致失去可再现性。

进程的定义:

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

进程的特征与状态:

为了解决之前多道程序并发运行时的问题,人们引入了进程的概念。进程是资源分配和独立运行的基本单位。OS的四大特征(此处可参考:操作系统学习-2. 操作系统的基本特性与主要功能)也都基于进程形成的。进程有以下五个特征:
(1)结构特征:为使程序能独立运行,为之配置一进程控制块,PCB(Process Control Block);由程序段,数据段与PCB三部分构成了进程实体。
(2)动态性:进程的实质是进程实体的一次执行过程,因此动态性是最基本的特性。进程“由创建而生,由调度而行,由撤销而亡”。对比程序,知识一组有序指令的集合,存放在某种介质上。
(3)并发性:多个进程实体同存与内存中,且能在一段时间内同时运行。
(4)独立性:传统OS中,独立性值进程实体是一个独立运行、独立分配资源和独立接受调度的基本单位。
(5)异步性:进程按各自独立的、不可预知的速度向前推进。

进程的三种基本状态:
(1)就绪(Ready)状态:当进程已分配出CPU以外的所有必要资源后,只要再获得CPU,即可立即执行。在一个系统中通常将多个处于就绪状态的进程排成一个队列(FIFO),称之为就绪队列。
(2)执行状态:进程已获得CPU,其程序正在执行。单处理机中只有一个进程处于执行状态;多处理机中有多个。
(3)阻塞状态:正在执行的进程由于发生某事件而暂时无法继续执行时,便放弃处理机而处于暂停状态,即进程的执行受到阻塞。也叫等待状态或封锁状态。导致阻塞的事件由:请求I/O。系统通常也将阻塞状态的进程排成一个队列,也有系统根据阻塞原因的不同将阻塞状态进程排成多个队列。


图1.进程的三种基本状态及其转换
这里写图片描述


进程的挂起状态:

一些系统中新加入了挂起状态,引起挂起状态的原因有:
(1)终端用户的请求。
(2)父进程请求。
(3)负荷调节的需要。
(4)操作系统的需要。
添加挂起状态后,进程状态图转换有如下:


图2.具有挂起状态的进程状态图
这里写图片描述


进程控制块:

PCB(Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录型数据结构。PCB是进程存在的唯一标识。PCB中记录了OS所需的、用于描述进程的当前情况与控制进程运行的全部信息。但系统创建一个新进程时,就为它建立了一个PCB;进程结束时又回收其PCB,进程也随之消亡。PCB常驻内存,可以被OS中多个模块读或者修改。Linux系统中用task_struct数据结构来描述每个进程的进程控制块,Windows中使用一个执行体进程块(EPROCESS)来表示进程对象的基本属性。

进程控制块中的信息:

(1)进程标识符:进程标识符惟一标识一个进程,通常有两种标识符:

  • 内部标识符:所有的OS都为每一个进程赋予唯一的一个数字标识符,它通常是一个进程的序号,它方便系统调用。
  • 外部标识符:由创建者提供,由字母、数字组成。一般是用户(进程)在访问该进程时使用。

(2)处理机状态:主要由处理机的各种寄存器中的内容组成。处理机被中断时,所有寄存器中的信息都必须保存在PCB中,以便进程重新执行时,能从断电继续执行。这些寄存器包括:

  • 通用寄存器:又称用户可视寄存器,用于暂存信息,用户可访问。
  • 指令计数器:存放了要访问的下一条指令的地址。
  • 程序状态字PSW:其中含有状态信息、如条件码、执行方式、中断屏蔽标志等。
  • 用户栈指针:用于存放过程和系统调用参数及调用地址,栈指针指向该栈的栈顶。

(3)进程调度信息:与进程调度和进程对换有关的信息。

  • 进程状态:指明进程当前状态,作为进程调度和对换时的依据。
  • 进程优先级:用于描述进程使用处理机的优先级别的一个整数,优先级高的进程优先获得处理机。
  • 进程调度所需的其他信息,与采用的进程调度算法有关,如进程已等待CPU时间综合、进程已执行时间综合等。
  • 时间:阻塞原因,即进程由执行状态转变为阻塞状态所等待发生的事件。

(4)进程控制信息

  • 程序和数据的地址:指进程的程序和数据所在的内存或外存地址,以便再调度到该进程执行时,能从PCB中找到程序与数据.
  • 进程同步和通信机制:实现进程同步和进程通信时必须的机制,如消息队列指针,信号量等.
  • 资源清单,即一张列出除CPU以外的,进程所需的全部资源与已经分配到进程中的资源的清单.
  • 链接指针:给出了本进程(PCB)所在队列中的下一个进程的PCB的首地址.

进程控制块的组织方式:

OS常用的PCB组织方式有两种:

  • 链接方式:把具有同一状态的PCB,用其中的链接字链接成一个队列.其中的就绪队列常按进程的优先级的高低排序.
  • 索引方式:系统根据所有进程的状态建立几张索引表,比如,就绪索引表,阻塞索引表.