首页 > 其他分享 >操作系统(2.6.3)--直接消息传递系统实例

操作系统(2.6.3)--直接消息传递系统实例

时间:2023-03-26 20:01:18浏览次数:36  
标签:-- text 队列 mutex 消息 缓冲区 消息传递 2.6 size

1.消息缓冲队列通信机制中的数据结构

(1)消息缓冲区。在消息缓冲队列通信方式中,主要利用的数据结构是消息缓冲区。 它可描述如下:

type struct message_buffer {
int sender;
发送者进程标识符
int size;
消息长度
char *text;
消息正文
struct message_bufer*next;
指向下一个消息缓冲区的指针
}

(2) PCB中有关通信的数据项。在操作系统中采用了消息缓冲队列通信机制时,除了需 要为进程设置消息缓冲队列外,还应在进程的PCB中增加消息队列队首指针,用于对消息 队列进行操作,以及用于实现同步的互斥信号量mutex和资源信号量sm。在PCB中应增. 加的数据项可描述如下:

type struct processcontrol block {
...
struct message_buffer *mq ;
消息队列队首指针
semaphore mutex;
消息队列互斥信号量
semaphore sm;
消息队列资源信号量
}PCB;

2.发送原语

操作系统(2.6.3)--直接消息传递系统实例_标识符

发送原语可描述如下:

void send(receiver, a) {receiver为接收进程标识符,a为发送区首址;
getbuf(a.size, i);根据a.size申请缓冲区;
copy(i.sender, a.sender);将发送区a中的信息复制到消息缓冲区i中:
i.size= =a.size;
copy(i.text, a.text);
i.next=0;
getid(PCBset,receiver:j);获得接收进程内部的标识符;
wait(j.mutex);
insert(&j.mq, i);将消息缓冲区插入消息队列;
signal(j.mutex); .
signal(j.sm); 

操作系统(2.6.3)--直接消息传递系统实例_标识符_02

3.接收原语

procedure receive(b)
begin
j:= internal name;
j为接收进程内部的标识符;
wait(j.sm);
wait(j.mutex);
remove(j.mq,i);
将消息队列中第一个消息移出;
signal(j.mutex);
b.sender:=i.sender;将消息缓冲区i中的信息复制到接收区b;
b.size:=i.size;
b.text:=i.text;
end

操作系统(2.6.3)--直接消息传递系统实例_信号量_03

标签:--,text,队列,mutex,消息,缓冲区,消息传递,2.6,size
From: https://blog.51cto.com/hwuu/6150714

相关文章

  • qinbeiting
    博客作业passwd用户名:代表账号口令:存放着加密后的用户口令,虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全......
  • Vue进阶(二十八):浅析 Vue 中 computed 与 method 区别
    一、前言computed区别于method的两个点:computed是属性调用,而methods是函数调用;computed带有缓存功能,而methods不是;下面看一个具体例子:<!--HTML部分--><divid="ap......
  • 二分查找
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>//intmain()//{// inta;// intb;// printf("请输入两个整数:\n");// scanf("%d%d",&a,&b);// floatc=......
  • 实验5 哲学家进餐-进程版
    Unix实验报告实验:实验5哲学家进餐-进程版专业:计算机科学与技术班级:1班姓名:姚怀聿学号:229202022046322022年12月2日目录......
  • 实验3 简单shell的设计和实现
    Unix实验报告实验:实验3简单shell的设计和实现专业:计算机科学与技术班级:1班姓名:姚怀聿学号:229202022046322022年11月5日......
  • Linux的诞生过程
    目录 前言:一.Linux是什么 二.诞生过程三.启动流程 前言:本篇文章介绍了Linux的诞生过程和用处一.Linux是什么Linux操作系统是基于UNIX操作系统发展而来的一种克隆系统,它诞......
  • HTTP协议详解(二)
    目录1.HTTP响应详解1.1认识状态码(statuscode)1.2认识响应报头(header) 1.3认识响应正文(body)2.构造HTTP请求2.1通过form表单构造请求2.2通过ajax构造请求2.3使......
  • 初入了解——Vue.js
    目录 前言:一.Vue.js介绍二.主要功能三.语言特点易用灵活性能版本记录: Vue3.xVue2.x Vue1.0 Vue0.12 Vue0.11四.运行环境 前言:根据上篇文章来继续了解Vue一.V......
  • web前端框架——Vue的特性
    目录前言: 一.vue二.特性1.轻量级2.数据绑定3.指令4.插件三.比较Angular、React、Vue框架之间的比较1.AngularAngular的优点:2.ReactReact的优点:3.vue3.Vue的优点:前言: ......
  • Mysql--底层结构、Redolog/Undolog/Binlog详解与区别、通过Binlog恢复数据、主从复制
    一、MySQL底层执行原理详解MySQL的内部组件结构大体来说,MySQL可以分为Server层和存储引擎层两部分。1、Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵......