两个进程在进行互斥操作中的P操作和V操作的物理意义是什么?

如题所述

第1个回答  2006-10-09
进程管理

l 程序顺序执行与并发执行比较

顺序执行
并发执行

程序顺序执行
间断执行,多个程序各自在“走走停停”种进行

程序具有封闭性
程序失去封闭性

独享资源
共享资源

具有可在现性
失去可再现性

有直接和简接的相互制约

l 多道程序设计概念及其优点

1. 多道程序设计:是在一台计算机上同时运行两个或更多个程序。

2. 多道程序设计的特点:多个程序共享系统资源、多个程序并发执行

3. 多道程序设计的优点:提高资源利用率、增加系统吞吐量

l 什么是进程,进程与程序的区别和关系

1. 进程的引入:

由于多道程序的特点,程序具有了并行、制约和动态的特征,就使得原来程序的概念已难以刻划和反映系统中的情况了。

2. 进程:程序在并发环境下的执行过程。

3. 进程与程序的主要区别:

1) 程序是永存的,进程是暂时的

2) 程序是静态的观念,进程是动态的观念

3) 进程由三部分组成

程序

数据

进程控制块(描述进程活动情况的数据结构)

4) 进程和程序不是一一对应的

Ø 一个程序可对应多个进程即多个进程可执行同一程序

Ø 一个进程可以执行一个或几个程序

4. 程序与进程的类比

程 序
进 程

唱歌的曲谱或音乐乐器的乐谱
演出或演奏

剧本
演出

菜谱
烹调

5. 进程特征:动态性、并发性、调度性、异步性、结构性

l 进程的基本状态及其转换

1. 进程基本状态:

1) 运行态(Running):进程正在占用CPU;

2) 就绪态(Ready):进程具备运行条件,但尚未占用CPU;

3) 阻塞态(Blocked):进程由于等待某一事件不能享用CPU。

2. 进程状态转换:

l 进程是由哪些部分组成, 进程控制块的作用

1. 进程的组成:由程序、数据集合和PCB三部分组成。

2. 进程控制块的作用:进程控制块是进程组成中最关键的部分。

1) 每个进程有唯一的PCB。

2) 操作系统根据PCB对进程实施控制和管理。

3) 进程的动态、并发等特征是利用PCB表现出来的。

4) PCB是进程存在的唯一标志。

l PCB组织方式

线性队列、链接表、索引表

l UNIX进程管理命令:

l UNIX进程管理命令:

1. ps--显示进程状态

功能:检查系统中当前存在的进程状态。

例如

$ ps 显示与控制中断相关进程的基本信息

2. sleep--使进程睡眠

功能:使进程暂停执行一段时间,其参数单位是秒。

例如

$ sleep 60 将等待60秒后,才重新回到$提示符

3. &--后台命令符

功能:命令行末尾加上&字符,此命令进程将在后台执行。

例如

$ ls –l/usr& 创建一个显示目录命令进程,它在后台执行,即没有前台进程运行时它才得以运行

4. wait--等待后台进程结束

功能:等待后台进程结束。

例如

$ wait 2080 等待PID为2080的后台进程终止

5. kill--终止进程

功能:终止一个进程执行。

例如 (在超级用户方式下)

# kill 678 停止PID为678的进程运行

6. nice--设置优先级

功能:是以不同的优先级执行一条命令

例如

普通用户只能降低优先级:

$ nice –n 10 cc f1.c 执行cc f1.c命令时的nice值为30(即20+10)

超级用户(root)可以提高进程的优先级(即:增量值可取不小于-20的负数)

# nice -n -10 vi abc 执行vi abc (编辑命令)的nice值为10(即20-10)

l 进程的同步与互斥

1. 同步:是进程间共同完成一项任务时直接发生相互作用的关系。

2. 互斥:排它性访问即竞争同一个物理资源而相互制约。

l 什么是临界资源、临界区?

1. 临界资源:一次仅允许一个进程使用的资源。

2. 临界区:在每个进程中访问临界资源的那段程序。

3. 互斥进入临界区的准则:

1) 如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。

2) 任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。

3) 进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。

4) 如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。

l 信号量

1. 信号量定义:

信号量(信号灯)=<信号量的值,指向PCB的指针>

2. 信号量的物理意义:

大于0:表示当前资源可用数量

1) 信号量的值

小于0:其绝对值表示等待使用该资源的进程个数

2) 信号量初值为非负的整数变量,代表资源数。

3) 信号量值可变,但仅能由P、V操作来改变。

l P,V操作原语

1. P操作原语P(S) :

1) P操作一次,S值减1,即S=S-1(请求分配一资源);

2) 如果S≥0,则该进程继续执行;

如果S<0表示无资源,则该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直至另一个进程执行V(S)操作)。

2. V操作原语(荷兰语的等待)V(S) :

1) V操作一次,S值加1,即S=S+1(释放一单位量资源);

2) 如果S>0,表示有资源,则该进程继续执行;

如果S≤0,则释放信号量队列上的第一个PCB所对应的进程(阻塞态改为就绪态),执行V操作的进程继续执行。

l 进程间简单同步与互斥的实现

1. 用P,V原语实现互斥的一般模型:

设互斥信号量mutex初值为1

2. 用P、V原语操作实现简单同步的例子

供者和用者对缓冲区的使用关系如下图:

S1缓冲区是否空(0表示不空,1表示空),初值S1=0;

S2缓冲区是否满(0表示不满,1表示满),初值S2=0;

3. 生产者---消费者问题(OS典型例子)

mutex互斥信号量,初值为1;full满缓冲区数,初值为0;empty空缓冲区数,初值为N;

4. 应用举例

[例1] 设系统中只有一台打印机,有三个用户的程序在执行过程中都要使用打印机输出计算结果。设每个用户程序对应一个进程。问:这三个进程间有什么样的制约关系?使用P、V操作写出这些进程使用打印机的算法。

[解]

由于打印机是一种临界资源,故三个进程只能互斥使用这台打印机。设三个进程分别为PA、PB和PC,互斥信号量mutex初值为1,执行过程如下:

[例2] 判断下面的同步问题的算法是否正确?若有错,请指出错误原因并予以改正。

1) 设A、B两进程共用一个缓冲区Q,A向Q写入信息,B则从Q读出信息,算法框图如图所示。

注:信号量S的初值为0

[解] 该算法不正确。因为A、B两个进程共用一个缓冲区Q,如果A先运行,且信息数量足够多,则缓冲区Q中的信息就会发生后面的冲掉前面的,造成信息丢失,B就不能从Q中读出完整的信息。改正如下:

A、B两进程同步使用缓冲区Q,应设定两个信号量:

empty 表示缓冲区Q为空,初值为1;full表示缓冲区Q已满,初值为0

算法框图如下:

2) 设A、B为两个并发进程,它们共享一临界资源。其运行临界区的算法框图如图所示。

[解] 该算法不正确。因为A、B两个进程并发执行,且共享一临界资源,故A、B应互斥地使用该临界资源,即在某一时刻只允许一个进程进入该临界资源,无时序关系。

改正算法:A、B二进程应互斥进入临界区,设定一信号量mutex,初值为1。

[例2] 设有一台计算机,有两个I/O通道,分别接一台卡片输入机和一台打印机。卡片机把一叠卡片逐一输入到缓冲区B1中,加工处理后再搬到缓冲区B2中,并在打印机上印出,问:

1) 系统要设几个进程来完成这个任务?各自的工作是什么?

2) 这些进程间有什么样的相互制约关系?

3) 用P、V操作写出这些进程的同步算法。

[解]

1) 系统可设三个进程来完成该任务:Read进程负责从卡片输入机上读入卡片信息,输入到缓冲区B1中;Get进程负责从缓冲区B1中取出信息,进行加工处理,之后将结果送到缓冲区B2中;Print进程负责从缓冲区B2中取出信息,并在打印机上打印输出。

2) 操作过程:

? Read进程受Get进程的影响,B1缓冲区中放满信息后Read进程要等待get进程将其中信息全部取走后才能读入信息;

? Get进程受Read进程和Print进程的约束:B1缓冲区中信息放满后,Get进程才可从中取走信息,且B2缓冲区信息被取空后Get进程才能将加工结果送入其中;

? Print进程受Get进程的约束,B2缓冲区中信息放满后Print进程方可取出信息进行打印输出。

3) 信号量的含义及初值:

? B1full——缓冲区B1满,初值为0

? B1empty——缓冲区B1空,初值为0

? B2full——缓冲区B2满,初值为0

? B2empty——缓冲区B2空,初值为0

4) 操作框图如下:

l 进程简单通信

分类
低级通信机构
高级通信机构

特点
传递信息量非常有限
通信的效率低
方便高效地交换大量信息

应用
互斥和同步机构
共享存储器
消息传递
管道文件

参考资料:http://www.ahtvu.ah.cn/jxc1/zhykch/5103/kc2.htm

第2个回答  2012-06-14
P:申请资源,即系统资源减1;
V:释放资源,即系统资源加1;
相似回答