2.进程控制

作者: 見贤思齊_ | 来源:发表于2020-06-20 12:14 被阅读0次

一、程序的并发:

并发

并发性:指两个或多个事件在同一时间间隔内发生。 程序的并发性是宏观上一段时间内多道程序同时运行。

单处理器的并发性:

每一时刻点只能执行一道程序,进程走走停停。

微观上多道程序交替执行。

(并发:是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。)

1.单道程序的顺序执行及特征

(1)程序执行有固定的时序:

输入进程1 -> 计算进程1 - 输出进程1 -输入进程2 -计算进程2 -输出进程2 ......

(2)特征

顺序性、封闭性、可再现性。

2.多道程序的并发执行

(1)
多个程序的并发执行1.png 多个程序的并发执行2.png
(2)特征:

间断性、失去封闭性:主要由共享资源引起、不可再现性。

(3)思考?

有2个循环程序A和B,它们共享一个变量N,程序A每执行一次时,都要做N:=N+1; B则每次要执行Print(N), 然后再做N:=0. 若程序A,B以不同的速度运行有以下三种不同的结果.

N:=N+1在print(N)和N:=0之前,则N值分别为 n+1,n+1,0.
N:=N+1在print(N)和N:=0之后,则N值分别为 n,0,1.
N:=N+1在print(N)和N:=0之间,则N值分别为 n,n+1,0.

但这不是我们要的。

(3)如何保证并发执行的顺序性特征?

答案:引入同步控制机制

进程的并发执行,协同工作就是进程同步

3.前驱图 : 必须不存在循环

前趋图是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序(Partial Order)或前趋关系。

→={(Pi, Pj)|Pi must complete before Pj may start}, 如果(Pi, Pj)∈→,可写成Pi→Pj,称Pi是Pj的直接前趋,而称Pj是Pi的直接后继。在前趋图中,把没有前趋的结点称为初始结点(Initial Node),把没有后继的结点称为终止结点(Final Node)。

每个结点还具有一个权重(Weight),用于表示该结点所含有的程序量或结点的执行时间。

前趋图.png
对于图 (a)所示的前趋图, 存在下述前趋关系:
 P1→P2, P1→P3, P1→P4, P2→P5, P3→P5, P4→P6, P4→P7, P5→P8, P6→P8, P7→P9, P8→P9
或表示为:
 P={P1, P2, P3, P4, P5, P6, P7, P8, P9}
→={ (P1, P2), (P1, P3), (P1, P4), (P2, P5), (P3, P5), (P4, P6), (P4, P7),
 (P5, P8), (P6, P8), (P7, P9), (P8, P9)} 
​
应当注意,前趋图中必须不存在循环,但在图b中却有着下述的前趋关系:S2→S3, S3→S2 

二、进程同步

1.基本概念

(1)同步:

并发进程在执行次序上的协调,以达到有效的资源共享和相互合作,使程序执行有可再现性。

(2)互斥:

两个并行的进程A、B,如果当A进行某个操作时,B不能做这一操作,进程间的这种限制条件称为进程互斥,这是引起资源不可共享的原因。

互斥是一种特殊的同步。

(3)进程两种形式的制约关系

进程间接制约关系:源于资源共享,需互斥地访问临界资源。

进程直接制约关系:源于相互合作

2.临界资源、临界区

(1)临界资源:

在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。

打印机等物理设备;软件使用的栈、变量。引起不可再现性是因为临界资源没有互斥访问。

(2)临界区:(critical section)

临界区:进程中访问临界资源的那段代码

临界区.png 临界区1.png

3.解决同步问题的工具:信号量机制

(1)整型信号量 : PV操作

整型信号量定义为一个整型量,除初始化外,仅能通过两个标准的原子操作wait(S)和signal(S)来访问。这两个操作一直被分别称为P、V操作。 wait和signal操作可描述为: wait(S): while S≤0 do no-op S∶=S-1; signal(S): S∶=S+1;

弊端分析:不符合让权等待原则

PV操作1.png
//semaphore:只是用来记录有多少个线程正在使用他(他并没有互斥的性质,他可以被多个线程拥有)。
//Parbegin 和 Parend中间会来夹着几个进程:process1、process2...,意思是这里面的进程  是可以并发执行的,里面的进程就需自要利用到信号量机制了。
// Begin 、 End :
例1:

设系统中有两个进程P1、P2,P1进程负责计算数据,将结果放入缓冲区Buf,P2进程从缓冲区Buf中取数据输出。试写出两个进程的同步算法。

semaphore be=1,bf=0;
 //semaphore只是用来记录有多少个线程正在使用他(他并没有互斥的性质,他可以被多个线程拥有)
Parbegin
 //parbegin和parend中间会来夹着几个进程:process1、process2...,意思是这里面的进程  是可以并发执行的,里面的进程就需自要利用到信号量机制了。
 P1: Begin
 *************************************
 Repeate
 计算数据Data;
 Wait(be);
 Data=>Buf;
 Signal(bf);
 Until false;
 ***********************************      //临界区 
 End 

 P2: Begin
 ************************************* 
 Repeate
 Wait(bf);
 取Data;
 Signal(be);
 Until false;
 ************************************* 
 End
Parend.
PV操作.png
同步机制应遵循的规则 :

进程执行结果可再现性的保证:

(1) 空闲让进。进入临界区

(2) 忙则等待。 临界资源

(3) 有限等待。不死等 公平性

(4) 让权等待。不能进入临界区放权 效率

4.改进的信号量机制

(1)记录型信号量

(2)AND型信号量

(3)集合型信号量

6.锁机制

在多线程编程中,操作系统引入了锁机制。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。

大部分同步方案均采用某个物理实体(如锁、信号灯等)实现通信,进程通信原语中关锁(lock)和开锁(unlock)是最简单的原语。在这两个原语中设置一个公共变量x代表某个临界资源的状态。如: x=0,表示资源可用(开锁) x=1,表示资源正在使用。(上锁)

相关文章

  • 2.进程控制

    一、程序的并发: 并发 并发性:指两个或多个事件在同一时间间隔内发生。 程序的并发性是宏观上一段时间内多道程序同时...

  • 第二章 (二)进程控制与同步

    1.进程控制的基本过程: 进程的创建 进程的终止 进程的阻塞与唤醒 进程的挂起和激活 2.关于进程的亲属关系 系统...

  • Linux 内存笔记基础

    系统 1. 内存管理 2. 文件目录 3. IO 4. 进程管理进程创建进程控制进程通信进程同步 5. 线程管理线...

  • 第二章 进程的描述与控制2

    2.2进程控制与同步 一、进程控制 1、进程控制的基本过程: 1)进程的创建 2)进程的终止 3)进程的阻塞与唤醒...

  • 前端宏任务、微任务、Dom 渲染的顺序

    1.浏览器包含多个进程 1.主进程协调控制其他子进程(创建、销毁) 2.第三方插件进程每种类型的插件对应一个进程,...

  • 操作系统第二章第二部分

    2.2进程控制 进程控制的基本过程: ¡进程的创建 ¡进程的终止 ¡进程的阻塞与唤醒 ¡进程的挂起和激活 1.进程...

  • 操作系统笔记:第二章—进程的描述与控制

    2.1进程的基本概念 要点 1.分析程序执行顺序、以及并发的特征 2.进程的概念、特征与状态 3.进程控制块及其组...

  • 二.进程(2)进程控制

    2.2 进程控制 进程控制的基本过程: 进程的创建 进程的终止 进程的阻塞与唤醒 进程的挂起和激活 关于进程的亲属...

  • 二.进程(3)进程同步

    2.3 进程同步 1. 理解同步的含义 2. 信号量机制控制进程同步 3. 管程 进程间有什么相互影响? 两种制约...

  • 进程控制块PCB

    进程控制块 每一个进程内核中都有一个进程控制块(PCB)来维护进程相关的信息,linux内核的进程控制块时 tas...

网友评论

    本文标题:2.进程控制

    本文链接:https://www.haomeiwen.com/subject/hcvwxktx.html