老狗——进程通信、线程

一、进程通信

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

PCB

二、线程

1.线程的属性

多线程OS中,一个进程包括多个线程,每个线程都是利用CPU的基本单位。

2.同步和通信机制

互斥锁
条件变量
条件变量

3.线程的实现方式

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值