操作系统原理读书笔记之进程间通信IPC

来源:互联网 发布:国家电影专项资金算法 编辑:程序博客网 时间:2024/06/06 05:10

基本通信方式

  • 消息传递
  • 共享内存
  • 管道PIPE
  • 套接字socket
  • 远程过程调用
套接字和远程过程调用属于分布式系统采用的方式,这里只介绍前三种方式

消息传递

  1. 发送进程调用send原语send(destination, message)
  2. 陷入内核,操作系统复制消息到消息缓冲区
  3. 操作系统唤醒接收进程,将消息缓冲区内容挂到接收进程的消息队列指针
  4. 接收进程读取消息队列内容,调用receive(source, message)
  5. 陷入内核,操作系统将消息复制到message变量中
send和receive操作可以用PV操作实现
send(destination, message){    P(buf-empty);//申请空缓冲区    //取缓冲区,要求互斥    //把缓冲区挂到接收进程的消息队列,要求互斥    V(buf-full);//唤醒接受进程}



共享内存

在物理内存中开辟一块共享内存区,将此映射到进程A和B中,AB进程对该区域的访问加读写锁解决互斥问题
这里有点类似于JAVA虚拟机线程间共享内存模型,每个线程有自己的虚拟内存空间,不断从主内存刷新、回写数据



管道通信方式PIPE

利用缓冲传输介质,例如一段内存空间、一个文件连接两个相互通信的进程,读写进程需要自行判断管道中是否数据满或是否数据空



linux内核同步机制

linux内核有以下同步机制:原子操作、自旋锁、读写自旋锁、信号量、读写信号量、互斥体、完成变量、顺序锁、屏障等

屏障也叫栅栏、关卡,对一组线程进行协调,例如需要一组线程协同完成一项任务,需要所有线程都到达一个汇合点后再往下运行
0 0
原创粉丝点击