进程

来源:互联网 发布:php开源博客系统源码 编辑:程序博客网 时间:2024/06/05 02:25

进程 

一、进程的引入

一是刻画系统的动态性,发挥系统的并发性。而是解决共享性,正确描述程序的执行状态。多道程序系统中,程序具有:并行、制约以及动态的特征。程序概念难以反映系统中的情况:

 1. 程序是一个静态的概念

程序是完成某个功能的指令集和。系统实际上是出于不断变化的状态中,程序不能反映这种动态性。

 2. 程序概念不能反映系统中的并行特性

例如:两个C语言源程序由一个编译程序完成编译,若用程序概念理解,内存中只有一个编译程序运行(两个源程序看作编译程序的输入数据),但是这样无法说明白内存中运行着两个任务。程序的概念不能表示这种并行情况,反映不了他们活动的规律和状态变化。 

二、进程的定义

进程:一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位。

三、进程与程序的区别

(1)程序是静态的概念,可以作为一种软件资源长期保存,而进程是动态的,是一次执行过程。

(2)进程是一个独立运行的单位,能与其他进程并发执行。进程是作为资源申请和调度单位存在的;通常程序不能作为一个独立            运行的单位而并发执行。

(3)多个进程可以同时执行相同的程序,程序和进程不存在一一对应的关系。

(4)各个进程在并发执行时会产生相互制约的关系,造成各自前进速度的不可预测性,而程序本身是静止的,不具有异步性。

(5)进程可以创建子进程,而程序不能创建子程序。

四、进程的特征

 1. 并发性:任何进程都可以同其他进程一起向前推进

 2. 共享性:进程之间共享某些公用变量,通过引用这些变量来交换信号。

 3. 动态性:进程对应于程序的运行,动态产生、消亡,在其生命周期中进程也是动态的。

 4. 独立性:凡未创建进程的程序,都不能作为一个独立的单位参加运行。

 5. 异步性:每个进程都以相对独立、不可预知的速度向前推进

 6. 结构特征:程序段、数据段、进程控制段三大部分组成,也称为进程映像。 

  程序段:是进程中能被进程调度程序在CPU上执行的程序代码段。
  数据段:一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行后产生的中间或最终数据。 

  进程控制块用于描述进程情况及控制进程运行所需的全部信息。

 

五、进程的状态

 1. 进程的三种基本状态

a. 就绪态:具备了一切运行需要的条件,由于其他进程占用CPU而暂时无法运行

b. 运行态:进程占用处理器运行的状态

c. 阻塞态:又称等待态或睡眠态。进程因某种事件发生而暂时不能运行的状态(如等待其他进程释放资源,等待一个时钟中断,等                  待其他进程发来信号) 

 

2. 进程状态转换

 a. 运行状态 ===> 阻塞状态:例如正在运行的进程提出I/O请求,由运行状态转化为阻塞状态

b. 阻塞状态 ===> 就绪状态:例如I/O操作完成之后,由阻塞状态转化为就绪状态

3. 进程的类型

a. 系统进程:操作系统用来管理资源的进程,当系统进程处于运行态时,CPU处于管态,系统之间的关系由操作系统负责

b. 用户进程:操作系统可以独立执行的的用户程序段,当用户进程处于运行态时,CPU处于目态,用户进程之间的关系由用户负责

六、进程控制块PCB

  1. PCB作用

    是进程存在的唯一标识,是操作系统用来记录和刻画进程状态及有关信息的数据结构。是掌握进程的唯一资料结构和管理进程的主要依据。PCB包含一个进程的描述信息、控制信息、资源信息。

 2. PCB内容

 (1)进程标识符

内部标识符。为了方便系统调用,为每个进程赋予唯一一个数字标识符。

外部标识符。在用户访问线程时使用,有创建者提供,由字母数字组成。为了描述进程的家族关系,还应设置父进程标识和子进程标识。

 (2)处理机状态

处理机状态信息主要由处理机的各种寄存器的内容组成。处理机在云词功在运行时主要的信息都存放在寄存器中,当处理机被中断时,这些信息都必须保存在PCB上,以便进程重新执行时能从断点继续执行。处理机的寄存器包括通用寄存器、指令寄存器、程序状态字、用户栈指针,四大部分。(也就是现场信息)

 (3)进程控制信息

  控制信息用于管理和调度进程。包括

a.调度的相关信息:进程的状态,等待事件,等待资源,进程优先级,队列指针。

b.进程组成的信息:正文段指针,数据段指针,进程之间的族系关系。

c.进程间通信信息:消息队列指针,所使用的信号量和锁。

d.CPU的占用和使用信息:时间片剩余量,定时器,记账信息。

 

七、进程控制块的组织方式

   进程的特征主要由PCB来刻画,为了便于对进程调度和管理,常将进程控制块PCB用适当的方法组织起来。一般地,把处于同一状态的的所有进程的PCB

链接在一起的结构称为进程队列,简称队列。如运行队列,就绪队列,阻塞队列。

有三种通用的队列组织方式:线性方式、链接方式、索引方式:

1. 线性结构

把所有不同状态的进程的PCB组织在一个表格中。

最简单,适用于进程数目不多的操作系统,如UNIX系统,缺点是调用时,往往需要查询整个PCB表,效率低。

2. 索引结构

系统建立若干索引表,利用索引表记录不同状态进程的PCB地址,把状态相同的进程的PCB组织在同一张索引表中,如就绪索引表,阻塞索引表等。

3. 链式结构

常用的,Linux等。按照进程的不同状态分别将其放在不同的队列,用一个指针指向它的PCB,再按某种算法进行调度。

 

八、进程控制

(1)进程创建

1. 申请空白的PCB。为新进程申请获得唯一的进程标识符,并从PCB池中。

2. 为新进程分配资源。包括进程的程序,数据及用户栈所需的内存空间。

3. 初始化进程控制块。PCB的初始化包括标识信息,处理机状态信息以及将进程状态设置为就绪态(活动就绪或静止就绪)。

4. 将新建进程插入就绪态队列。

 

(2)进程终止

1. 根据被终止进程的标识符,从PCB队列中检索出该进程的PCB,从中读取该进程的状态。

2. 若处于执行态,立即终止该进程的执行。

3. 检查进程有无子孙进程,若有,终止子孙进程。

4. 释放终止的进程所占有的资源,将其归还它的父进程或系统。

5. 将被终止的进程从它的PCB队列中移除。

 

 

 

进程同步与互斥 

 

一、概念

临界资源

   两个或两个以上的进程不能同时使用的资源称为临界资源。简称CR,临界资源可能是一些独占设备,比如打印机等,也可以是一些共享变量、表格、链表等

 

临界区

   不论是硬件临界资源还是软件临界资源,多个进程必须互斥地对其进行访问。每个进程中访问临界资源的那段代码称为临界区。

   访问临界资源的进程描述成四段:

进入区

临界区

 退出区

    剩余区

 

同步与互斥

   A. 同步:是指有协作关系的进程之间不断地调整它们之间的相对速度和执行过程,以保证临界资源的合理利用和进程的顺利执行。

   B. 互斥:当一个进程进入临界区使用临界资源时,另一个进程必须等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。

 

同步机制规则

  a. 空闲让进

  b. 忙则等待

  c. 有限等待

  d. 让权等待

 

5 实现同步:信号量

  实现互斥:信号量 锁

 

二、进程同步问题

生产者--消费者

 

读者--写着

 

哲学家进餐

 

 

 

 

 

 

进程通信与调度

   待更新。。。。

0 0
原创粉丝点击