进程通信

weblog 816 0 0

《操作系统》

什么是进程通信

顾名思义,进程通信就是指进程之间的信息交换。

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。

为了保证安全,一个进程不能直接访问另一个进程的地址空间。

但是进程之间的信息交换又是必须实现的。为了保证进程间的安全通信,操作系统提供了一些方法。共享存储、消息传递、管道通信。

共享存储

操作系统为两个进程分配一个共享空间

两个进程对共享空间的访问必须是互斥的(互斥访问通过操作系统提供的工具实现)。

操作系统只负责提供共享空间和同步互斥工具(如P、v操作)

基于数据结构的共享:比如共享空间里只能放一个长度为10的数组。这种共享方式速度慢、限制多,是一种低级通信方式

基于存储区的共享:在内存中画出一块共享存储区,数据的形式、存放位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。

管道通信

“管道”是指用于连接读写进程的一个共享文件,又名pipe文件。其实就是在内存中开辟一个大小固定的缓冲区。

1.管道只能采用半双工通信,某一时间段内只能实现单向的传输。如果要实现双向同时通信,则需要设置两个管道。

2.各进程要互斥地访问管道。

3.数据以字符流的形式写入管道,当管道写满时,写进程的write()系统调用将被阻塞,等待读进程将数据取走。当读进程将数据全部取走后,管道变空,此时读进程的read()系统调用将被阻塞。

4.如果没写满,就不允许读。如果没读空,就不允许写。

5.数据一旦被读出,就从管道中被抛弃,这就意味着读进程最多只能有一个,否则可能会有读错数据的情况。

消息传递

进程间的数据交换以格式化的消息(Message)为单位。进程通过操作系统提供的“发送消息/接收消息”两个原语进行数据交换。

直接通讯方式

消息直接挂到接收进程的消息缓冲队列上

间接通讯方式

消息要先发送到中间实体(信箱)中,因此也称“信箱通信方式”。Eg:计网中的电子邮件系统。


猜你喜欢
official 840 参数:-q:只显示VM标示,不显示jar,class,main参数等息。-m:输出主函数传入的参数。-l:输出应用序主类完整package名称或jar完整名称。-v:列出jvm启动参数。-V:输
official 809 《操作系统》什么是同步具有异步性的特征。异步性是指,各并发执行的以各自独立的、不可预知的速度向前推。再看另一个例子:――管道和写并发地运行,由于并发必然导致异步性
linux系统 3177 linux下查看的命令1、ps命令用于查看当前正在运行的。grep是搜索例如:ps-ef|grepjava表示查看所有里CMD是java的息2、ps-aux|grepjava
java基础 3007 1.什么是线线之间的两个基本问题是互斥和同步。线同步是指线之间所具有的一种制约关系,一个线的执行依赖另一个线的消息,当它没有得到另一个线的消息时应等待,直到消息到达时才被唤醒
official 937 《操作系统》什么是控制控制的主要功能是对系统中的所有实施有效的管理,它具有创建新、撤销已有、实现状态转换等功能。如何实现控制创建:需要初始化PCB,分配系统资源。创建
official 872 地访问临界资源。临界区:访问临界资源的那段代码。内核序临界区:一般是用来访问某种内核数据结构的,比如的就绪队列(由各就绪的PCB组成)内核序临界区普临界区调度的方式非剥夺调度方式,又称
weblog 1032 根本区别:是操作系统资源分配的基本单位,而线是处理器任务调度和执行的基本单位。包含关系:一个内可以有多个线(默认有一个主线),线的一部分,必须依赖于而存在,不能独立存在。资源共享:之间是不共享资源的,多个线之间是共享资源的,所以存在资源竞争的问题。
webrtc,srs,音视频 1073 -centostrunk]#make编译令服务器,令服务在srs/trunk/3rdparty/signaling文件夹下[root@VM-0-13-centostrunk]#cd./3rdparty
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。