【操作系统】2.6 通信、线程

一、进程通信

1.进程通信的类型:

  • 共享存储器系统(操作存储区方式)
  • 消息传递系统(发--收方式)send  receive
  • 管道通信(中间文件方式)字符流形式
  • Client-Server system :  套接字(Socket)、远程过程调用(远程方法调用)

2.消息传递通信的实现方法
1)直接通信方式
通常利用系统通信命令(原语):
Send(Receiver, message);
Receive(Sender, message);
2)间接通信方式
基于共享数据结构的实体用来暂存发送给目标进程的消息;接收进程则从该实体中,取出对方发送给自己的消息。通常把这种实体称为信箱。

3.消息缓冲队列通信机制:

本机通信消息结构,如下:

type message buffer = record       

       sender;   发送者进程标识符         

        size;   消息长度       

        text;   消息正文       

        next;   指向下一消息缓冲区的指针

end

4.PCB中需要记录有关通信的信息项

type ProcessControlBlock =record
	 …
	 mq;         消息队列队首指针
	 mutex;    消息队列互斥信号量
	 sm;          消息队列资源信号量
	 …
end

发送原语:

procedure send(receiver, a)
    begin
        getbuf(a.size, i);  根据a.size申请缓冲区
        i.sender :=a.sender;  将发送区a中的信息复制到 i
        i.size :=a.size; 
        i.text :=a.text; 
        i.next :=0;
获取接收进程内部标识符
	    getid(PCB set, receiver, j); 
	   insert(j.mq, i); 将消息缓冲区插入目标消息队列
	   signal(j.sm);
    end

接收原语:

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

二、线程

1.线程的属性
多线程OS中,一个进程包括多个线程,每个线程都是利用CPU的基本单位。
2.同步和通信机制

  • 互斥锁
  • 条件变量
  • 条件变量

3.线程的实现方式

  • 内核线程KST(kernel-level thread)
  • 用户线程ULT(user-level thread)
  • 组合方式
     

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值