东北大学操作系统实验一详解
作者:互联网
目录
实验一思考题:
一、如何控制进程间的相互通信?
进程间相互通信,简称IPC,IPC有两种方式:内存共享,消息传递。消息传递系统(Message Passing System, MPS)进程之间不借助共享变量进行通信。MPS设施(facility)提供两种操作(operations):发送消息,接收消息。如果P和Q想要进行通信,他们需要在他们之间建立通信联系,并通过发送/接收交换信息。进程间通信需要考虑系统调用、速度、数据容量。
进程间通信分为直接通信和间接通信两种:
1.1 直接通信
- 直接通信:进程必须明确地相互命名。send(P,message)–向进程P发送消息;receive(Q,消息)–从进程Q接收消息;receive (id, message)。
- 通信连接的特性:连接是自动建立的;链路只与一对通信进程相关联;每对之间正好存在一个连接;链路可能是单向的,但通常是但双向的。
- 有限模块化:在更改进程的标识符(id)时,必须找到对旧标识符的所有引用,以便将它们修改为新标识符
- 消息(messages)是从邮箱(也称为端口)定向和接收的。
- 每一个邮箱有一个唯一的id
- 进程只有在共享邮箱时才能通信
- 通信连接的特性:
- 仅当进程共享公共邮箱时才建立链接
- 一个邮箱可能被多个进程共享
- 每对进程可以共享多个邮箱
-
链路可以是单向的或双向的
1.2 间接通信
- 间接通信
- 间接通信操作
- 需要创建一个新邮箱,
- 发送和接收消息都要通过这个邮箱,
- 销毁这个邮箱
- 间接通信相关原语定义为:
- send(A,message)–将消息发送到邮箱A
- receive(A,message)–从邮箱A接收消息
- 间接通信邮箱共享
- P1P2P3共享邮箱A
- P1发送,P2P3接收
- 解决方案
- 允许连接最多与两个进程关联
- 每次只允许一个进程执行接收操作
- 允许系统任意选择接收器。发送者被通知接收者是谁
- 间接通信操作
1.3 IPC模型(进程间相互通信):
- 进程间通信可以通过:
- 共享内存:进程共享一些数据结构或内存块;
- 管道(pipe):连接读进程和写进程,作为两个进程通信的共享文件;
- 消息传递:消息是数据传输的单位,对信息传递更为有用。
二、什么是进程同步?什么是进程互斥?分别有哪些实现方式?
进程同步:在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。具有同步关系的一组并发进程称为协作进程,协作进程间互相发送的信号称为消息或事件。如果我们对一个消息或事件赋以唯一的消息名,则我们可用过程wait (消息名)表示进程等待协作进程发来的消息,而用过程signal (消息名) 表示向协作进程发送消息。
实现进程同步:(1)为各并发进程设置私用信号量。(2)为私用信号量赋初值。(3)利用P、v原语和私用信号量规定各进程的执行顺序。
进程互斥:两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥。也就是说,一个进程正在访问临界区资源,另一个要访问该资源的进程必须等待
实现进程互斥
- 互斥操作(mutual exclusion)
- 如果Pi在其临界区部分执行,则其他进程不能在其临界区部分执行。
- 一次只能有一个进程处于临界区
- 前进(progress)
- 如果没有进程在其临界区执行,并且存在希望进入其临界区部分的某些进程,则不能无限期推迟选择下一个将进入临界区部分的进程。
- 当一个进程想进入自己的CS,而其他进程不想进CS时,则这个进程可以进入自己的CS
- 任何进程都不会被迫等待可用的资源,否则会非常浪费。如果另一个进程设置了标志,表示要进入其关键部分,则该进程不能立即重新进入关键部分。
- 有限等待(Bounded Waiting)
- 在一个进程发出进入其临界区部分的请求之后,以及在该请求被批准之前,允许其他进程进入其临界区部分的次数必须存在一个界限。
- 假设每个进程以非零(nonzero)速度执行
- 关于n个过程的相对速度(relative speed)没有假设
- 没有一个进程可以永远等待资源——否则就是一个简单的解决方案:没有进程进入。
- 在一个进程发出进入其临界区部分的请求之后,以及在该请求被批准之前,允许其他进程进入其临界区部分的次数必须存在一个界限。
标签:操作系统,东北大学,通信,临界,详解,消息,进程,邮箱,共享 来源: https://blog.csdn.net/weixin_53803820/article/details/122791334