操作系统——第二章进程管理

@ 操作系统——第二章进程管理

2.1 前趋图和程序执行

  • 操作系统的特性之一是并发与共享,即在操作系统中(内存)同时存在几个相互独立的程序,这些程序在系统中即交叉的运行,又要共享系统中的资源,这就会引起一些列的问题,包括:对资源的竞争、运行程序之间的通信、程序之间的合作与协同等。
  • 要解决这些问题,要用程序的概念已经不能描述程序在内存中运行的状态,必须引入新的概念–进程

2.1.1 前驱图

  • 前驱图是一个有向无循环图(DAG),用于描述进程之间执行的前后关系
    • 结点:描述一个程序段或进程,或一条语句
    • 有向边:结点之间的偏序或前序关系“->”
      ->={(Pi,Pj)|Pi must complete before Pj may start}
      若(Pi,Pj) -> ,记为Pi->Pj,则
      Pi是Pj的前趋,Pj是Pi的直接后续
      在这里插入图片描述
      注意:前趋图中一定不存在循环
      • 前趋关系:S2->S3,S3->S2,不可能满足

2.1.2 程序的顺序执行

1、程序的顺序执行
  • 一个程序由若干个程序段组成,而这些程序段执行必须是顺序的,这种程序执行的方式就称为程序的顺序执行。
#include<stdio.h>
main()
{
	int x,y,z,t;
	scanf("%d %d %d",&x,&y,&z);
	if(x>y){
	// 交换x,y的值
	t=x;
	x=y;
	y=t;
	}
	if(x>z){
	t=z;
	z=x;
	x=t;
	}
	if(y>z){
	t=y;
	y=z;
	z=t;
	}
	printf("small to big:%d %d %d\n",x,y,z)
	return 0;
}
例:讨论单道程序的工作情况
  • 对用户作业的处理–
    • 首先输入用户的程序和数据 input
    • 然后进行计算 caculate
    • 最后打印计算结果 print
  • 即有三个顺序执行的操作–
    • I:输入操作
    • C:计算操作
    • P:输出操作
    • I1->C1->P1->I2->C2->P2
2、程序顺序执行时的特征
  • (1)顺序性
    • 处理机的操作严格按照程序所规定的顺序执行
  • (2)封闭性
    • 程序一旦开始执行,其计算结果不受外界因素的影响
  • (3)可在现性
    • 程序执行的结果与它执行的速度无关(即与时间无关),而只与初始条件有关。

2.1.3程序的并发执行

1、程序的并发执行

在这里插入图片描述又如:四个程序段
S1:a:=x+2
S2: b:=y+4
S3: c:=a+b
S4: d:=c+b
在这里插入图片描述

2、程序并发执行时的特征
(1)、间断性
  • 在多道程序设计的环境下,程序的并发的执行,以及为完成一项任务而相互合作,这些程序之间要共享系统的资源,形成相互制约的关系
  • 相互制约导致并发程序具有“执行-暂停-执行”,这种间断性的活动规律
(2)、失去封闭性
  • 程序在并发执行时,改变,程序运行失去封闭性。——程序的运行受到其他程序的影响
(3)、不可再现性
  • 程序在并发执行时,多次运行初始条件相同的同一程序得出不同的运行结果
    • 共享公共变量的两个程序,他们执行时可能产生不同结果

2.2进程的描述

1、进程的特征和定义

  • 在多道程序设计的环境下为了描述程序在计算机系统内的执行情况,必须引入新的概念–进程
1)进程的定义
  • 进程:程序关于某个数据集合的一次执行过程

进程的其他定义

  • 行为的一个规则叫做程序,程序在处理机上执行时所发生的活动称为进程(Dijkstra)
  • 进程是这样的计算部分,它可以和其他计算机并行的一个计算
  • 进程(有时称为任务)是一个程序与其数据一道通过处理机的执行所发生的活动(Alan.C.Shaw)
  • 进程是执行所中发生的活动
  • 进程是执行中的程序
2)进程的特征(与程序比较)
  • 1、结构特征
    • 进程控制块(PCB)+程序+数据=进程实体
  • 2、动态性——最基本的特征
    • 进程:进程实体的一次执行过程,有生命周期
    • 程序:程序是一组有序指令的集合,是静态的概念
  • 并发性
  • 独立性
  • 异步性
    • 进程按各自独立的、不可预知的速度向前推进

2、进程的三种基本状态

进程的三种基本状态

(1)、就绪状态(Ready)
  • 进程已获得除CPU之外的所有必须的资源,一旦得到CPU控制权,立即可以运行
(2)、运行状态(Running)
  • 进程已获得运行所必需的资源,它的程序正在处理机上执行
(3)、阻塞状态(Blocked)
  • 正在执行的进程由于发生某事件而短暂无法执行时,便放弃处理机而处于暂停状态,称该进程处于阻塞状态或等待状态。
  • 在这里插入图片描述

3、挂起状态

1)引起挂起状态的原因:
  • 终端用户的请求
  • 父进程请求
  • 负荷调节的需要
  • 操作系统的需要
2)进程状态的转换
  • 引起挂起状态后,增加挂起状态(静止状态)到非挂起状态(活动状态)的转换,或者相反
2.2进程的描述

在这里插入图片描述

2.2.4 进程管理中的数据结构
1、进程控制块(PCB)的作用
  • 进程控制块的作用
    • 存放进程管理和控制信息的数据结构成为进程控制块。它是进程管理和控制的最重要的数据结构,在创建时,建立PCB,并伴随进程运行的全过程,直到今后才能撤销而撤销。PCB就像我们的户口
  • PCB是进程存在的唯一标志
    • 系统的所有PCB组织成链表或队列,常驻内存的PCB区
2、进程控制块中的信息
1)进程标识符
  • 每个进程都必须有一个唯一的标识符
    • 内部标识符
    • 外部标识符
2)处理机的状态
  • 处理机状态信息主要由处理机的各种寄存器中的内容组成,处理机运行时的信息存放在寄存器中,当被中断时这些信息要存放在PCB中。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
3、进程控制块的组织信息

4、进程控制块

2.4进程同步

1、进程间两种形式的制约关系
  • 间接相互制约关系——源于资源共享
  • 直接相互制约关系——源于进程合作
临界资源——互斥访问
生产者——消费者问题

在这里插入图片描述

  • 生产者进程和消费者进程都以一部方式运行
  • 但他们之间必须保持同步
item buffer[n]; //用数组表示具有n个缓冲区的缓冲池
int in=0,out=0;
// 输入指针in指示下一个可能投放产品的缓冲区,输出指针out指示下一个可从中获取产品的缓冲区,初值//均为
counter=0;//初始值为0,,放入产品使其加0,取出产品使其减1
/*
缓冲池组织为循环缓冲,
*/

在这里插入图片描述#### 同步机制应遵循的规则

  • 忙则让进
  • 忙则等待
  • 有限等待
  • 让权等待

2.4.3信号量机制

1、整形信号量
  • 定义:整形量,除初始化外,仅能通过两个原子操作来访问
  • P操作
wait(S):
	while(S<=0) do no-op;
	S--;
  • V操作
signal(S):
	S++;
  • P,V操作是原子操作,不可中断
用信号量机制实现互斥的模式
semaphore mutex=1;
	begin
	parbegin
		process 1:begin
					repeat
					wait(mutex);
					critical section;
					signal(mutex);
					remainder section
				until false;
				end
		process 2:begin
					repeat
					wait(mutex);
					critical section;
					signal(mutex);
					remainder section
				until false;
				end
	parend
记录型信号量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值