其他分享
首页 > 其他分享> > 东北大学操作系统实验一详解

东北大学操作系统实验一详解

作者:互联网

目录

实验一思考题:

一、如何控制进程间的相互通信?

1.1 直接通信

1.2 间接通信

1.3 IPC模型(进程间相互通信):

二、什么是进程同步?什么是进程互斥?分别有哪些实现方式?


实验一思考题:

一、如何控制进程间的相互通信?

        进程间相互通信,简称IPC,IPC有两种方式:内存共享,消息传递。消息传递系统(Message Passing System, MPS)进程之间不借助共享变量进行通信。MPS设施(facility)提供两种操作(operations):发送消息,接收消息。如果P和Q想要进行通信,他们需要在他们之间建立通信联系,并通过发送/接收交换信息。进程间通信需要考虑系统调用、速度、数据容量。

        进程间通信分为直接通信和间接通信两种:

1.1 直接通信

  1. 直接通信:进程必须明确地相互命名。send(P,message)–向进程P发送消息;receive(Q,消息)–从进程Q接收消息;receive (id, message)。
    1. 通信连接的特性:连接是自动建立的;链路只与一对通信进程相关联;每对之间正好存在一个连接;链路可能是单向的,但通常是但双向的。
    2. 有限模块化:在更改进程的标识符(id)时,必须找到对旧标识符的所有引用,以便将它们修改为新标识符
    3. 消息(messages)是从邮箱(也称为端口)定向和接收的。
      1. 每一个邮箱有一个唯一的id
      2. 进程只有在共享邮箱时才能通信
    4. 通信连接的特性:
      1. 仅当进程共享公共邮箱时才建立链接
      2. 一个邮箱可能被多个进程共享
      3. 每对进程可以共享多个邮箱
      4. 链路可以是单向的或双向的

1.2 间接通信

  1. 间接通信
    1. 间接通信操作
      1. 需要创建一个新邮箱,
      2. 发送和接收消息都要通过这个邮箱,
      3. 销毁这个邮箱
    2. 间接通信相关原语定义为:
      1. send(A,message)–将消息发送到邮箱A
      2. receive(A,message)–从邮箱A接收消息
    3. 间接通信邮箱共享
      1. P1P2P3共享邮箱A
      2. P1发送,P2P3接收
    4. 解决方案
      1. 允许连接最多与两个进程关联
      2. 每次只允许一个进程执行接收操作
      3. 允许系统任意选择接收器。发送者被通知接收者是谁

1.3 IPC模型(进程间相互通信):

  1. 进程间通信可以通过:
    1. 共享内存:进程共享一些数据结构或内存块;
    2. 管道(pipe):连接读进程和写进程,作为两个进程通信的共享文件;
    3. 消息传递:消息是数据传输的单位,对信息传递更为有用。

二、什么是进程同步?什么是进程互斥?分别有哪些实现方式?

        进程同步:在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。具有同步关系的一组并发进程称为协作进程,协作进程间互相发送的信号称为消息或事件。如果我们对一个消息或事件赋以唯一的消息名,则我们可用过程wait (消息名)表示进程等待协作进程发来的消息,而用过程signal (消息名) 表示向协作进程发送消息。

        实现进程同步:(1)为各并发进程设置私用信号量。(2)为私用信号量赋初值。(3)利用P、v原语和私用信号量规定各进程的执行顺序。

        进程互斥:两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否则可能发生与时间有关的错误,这种现象被称作进程互斥。也就是说,一个进程正在访问临界区资源,另一个要访问该资源的进程必须等待

实现进程互斥

  1. 互斥操作(mutual exclusion
    1. 如果Pi在其临界区部分执行,则其他进程不能在其临界区部分执行。
    2. 一次只能有一个进程处于临界区
  2. 前进(progress)
    1. 如果没有进程在其临界区执行,并且存在希望进入其临界区部分的某些进程,则不能无限期推迟选择下一个将进入临界区部分的进程。
    2. 当一个进程想进入自己的CS,而其他进程不想进CS时,则这个进程可以进入自己的CS
    3. 任何进程都不会被迫等待可用的资源,否则会非常浪费。如果另一个进程设置了标志,表示要进入其关键部分,则该进程不能立即重新进入关键部分。
  3. 有限等待(Bounded Waiting
    1. 在一个进程发出进入其临界区部分的请求之后,以及在该请求被批准之前,允许其他进程进入其临界区部分的次数必须存在一个界限。
      1. 假设每个进程以非零(nonzero)速度执行
      2. 关于n个过程的相对速度(relative speed)没有假设
      3. 没有一个进程可以永远等待资源——否则就是一个简单的解决方案:没有进程进入。

标签:操作系统,东北大学,通信,临界,详解,消息,进程,邮箱,共享
来源: https://blog.csdn.net/weixin_53803820/article/details/122791334