0
点赞
收藏
分享

微信扫一扫

操作系统-(进程管理)

alonwang 2022-04-13 阅读 39
javac++

目录.

一、进程

前言

进程定义

进程组成

进程状态

进程控制

二、线程

线程定义

线程类型

线程状态

线程控制

2、线程终止

3、线程的唤醒与阻塞

三、进程和线程的区别

进程和线程的区别

四、进程同步

同步概念

同步准则

信号量机制

整型信号量机制
演示
(使用整型信号量互斥访问临界资源)
int num; 		//定义一个整型信号量用于记录互斥资源的使用状态。
num = 1; 		//初始化整型信号量 num>0 表示有资源可用 num<=0表示没有资源可以用。

void P1(){  	//P1进程。
   	wait(num);	//申请一个资源。num-1
   	CS;			//申请到资源后进行作业
   	signal(num);//释放一个资源。num+1
}	
void P2(){  	//P2进程。
   	wait(num);	//申请一个资源。num-1
   	CS;			//申请到资源后进行作业
   	signal(num);//释放一个资源。num+1
}	
(我们把两个方法看做是两个进程,P1和P2进程,当P1进程wait(num)申请完一个资源后,num的数量就-1,num的数量此时等于0。
 此时其它进程再来访问资源就必须等待,等待当前占有资源的进程使用完资源并进行signal(num)操作的时候num+1才可以有机会访问到资源)
 
(使用整型信号量实现进程的协调)
num = 0; 		//要求p2必须在p1结束后才能运行,

void P1(){  	//P1进程。
  	CS;			//申请到资源后进行作业
  	signal(num);//释放一个资源。num+1
}	
void P2(){  	//P2进程。
  	wait(num);	//申请一个资源。num-1
  	CS;			//申请到资源后进行作业
  	signal(num);//释放一个资源。num+1
}	
(上述代码是要求进程协调执行进程p2必须在p1结束后才能申请资源。)
总结

(1).整型信号量的值只能由wait()和signal()操作改变。
(2).wait和signal操作都是原子操作,即在这两个操作中对信号量的访问是不能被中断的。

记录型信号量机制
演示
var num1: semaphore
num1.value=1;
void wait(){
	wait(num1)	//此时num1=num1.value-1;
	if s.value <= 0 then block(s.L);
}
void signal(){
	signal(num1)	//此时num1=num1.value+1;
	if s.value > 0 then wakeup(s.L);
}
总结

五、进程调度

功能
时机
准则
调度算法
先来先服务调度算法(FCFS)

FCFS算法性能:

进程名进入系统时间开始运行时间服务时间等待时间周转时间
P10024024
P212432326
P322732528

系统平均周转时间T=(24+26+28)÷ 3=26
平均带全权周转时间 W=(24/24+26/3+28/3)÷3 ≈ 6.33

短进程优先调度算法(SPF)
优先权调度算法(PSL)
时间片轮转调度算法(RR)
多级队列调度

六、死锁

安全状态举例:假定系统有3个进程,共有12个某类资源R,进程P1总共要求10个R类资源,P2和P3分别要求4个和9个R类资源。设在T0时刻,系统分配资源情况如表

进程最大需求已分配还需要可用
P110553
P2422
P3927

上表存在安全序列所以是安全状态表,
安全序列为:P2->P1->p3。
解读:p2还需要2个资源当前剩余资源还有3个满足分配,当分配给P2后,P2使用完成后释放4个资源,此时剩余资源还有5个正好满足P1所需的资源,分配给P1执行完毕后释放10个资源,接着就可以分配给P3使用。
总结:(通过资源的合理分配使系统处于安全状态

举报

相关推荐

0 条评论