首页 > 编程知识 正文

哪种泵效率最高(哪种发动机效率最高)

时间:2023-05-04 00:20:32 阅读:77070 作者:2050

进程间通信是指在不同进程之间传播和交换信息,那么不同进程之间有哪些介质可以同时访问呢? 的用户区域相互独立,一般不能相互访问。 唯一的例外是共享内存空间。 但是,很明显,内核可以提供这样的条件,因为系统空间是“公共场所”。 除此之外,是双方都可以访问的外围设备。 在这种意义上,两个进程当然也可以通过磁盘上的常规文件交换信息,或者通过注册表和其他数据库中的几个表条目和记录交换信息。 广义上也是进程间通信的手段,但一般不将其称为“进程间通信”。 因为那些通信手段的效率太低,人们对进程间通信的要求需要一定的实时性。

一. Linux下进程间通信的几种主要手段介绍:

1 .管道(Pipe )与知名管道(named pipe ) :管道可以用于有血缘关系的流程之间的通信,为了克服知名管道对管道没有名字的限制,除了管道的功能外,还允许无血缘关系的流程之间的通信

管道包括三种:1 )普通管道PIPE,通常有限制,一种是半双工,只能单向传输; 二是只能在亲子进程之间使用。 2 )流管s_pipe:可以消除第一种限制,并双向传输。 3 )命名管:name_pipe消除了第二类限制,可以在许多不相关的进程之间通信。

2 .信号(Signal )信号是一种相对复杂的通信方式,用于通知进程发生了某些事件。 除了进程间通信外,进程还可以向进程自身发送信号。 Linux除了Unix的初始信号语义函数sigal之外,还支持语义符合Posix.1标准的信号函数sigaction。 (实际上,该函数基于BSD,BSD为了实现可靠的信号机制和统一对外接口,用sigaction函数重新实现了signal函数。 ) );

3 .消息队列(消息队列)消息队列) :消息队列是消息的链表,包含Posix消息队列systemV消息队列。 有足够权限将消息添加到队列中的进程,具有读取权限的进程可以读取队列中的消息。 消息队列克服了流量低、管道只能包含未格式化的字节流、缓冲区大小受限等缺点。

4 .共享内存:允许多个进程访问同一内存空间。 是最快的IPC形式。 是为了其他通信机构的运行效率低而设计的。 经常与其他通信机制(如信号)结合使用以实现过程之间的同步和互斥。

5 .信号(semaphore ) :主要作为进程之间以及同一进程的不同线程之间的同步手段。

6 .套接字(一种更常见的进程间通信机制,可用于不同机器之间的进程间通信。 最初由Unix系统的BSD分支开发,但现在一般可以移植到其他Unix系统。 Linux和System V变种支持套接字。

二.相关问题

常见问题解答1:管道与文件描述符、文件指针之间的关系?

:实际上管道的使用方法和文件类似,可以使用read、write、open等普通的IO函数。 管道描述符类似于文件描述符。 实际上,管道使用的描述符、文件指针和文件描述符最终被转换为系统中的套接字描述符。 它们都受到系统内核中套接字描述符的限制。 本质上,LINUX内核源代码中的管道通过空文件

常见问题解答2:管路的使用方法?

:主要有以下方法: 1) pipe,创建一个管道并返回两个管道描述符。 通常用于父子进程之间的通信。 2 ) popen、pclose:的方式只返回一个管道描述符,通信对象经常为stdin or stdout; 3 ) mkpipe:命名管道,在多个过程之间进行交互。

常见问题解答3:管路与系统IPC的优劣比较?

a:管道3360的优点是支持所有UNIX实现,并在上次访问管道的过程结束后永久删除管道。 缺陷是管道只允许单向传输或在父子进程之间使用。

系统IPC:的优点是功能强大,可以在无关进程之间通信。 关键字KEY_T使用内核id,消耗内核资源,缺点是只能显式删除,不能使用select、epoll等套接字机制。

常见问题解答4: windos进程间通信与LINUX进程间通信有什么关系?

:实际上,WINDOS进程通信的大部分被移植到UNIX、WINDOS剪贴板、文件映射等上,可以从UNIX进程通信的共享存储中找到阴影。

常见问题解答5:进程间通信和线程间通信之间有什么关系?

a:windows运行的实体是线程,因此狭义的进程间通信实际上是属于不同进程的线程之间的通信。 相反,每个进程之间的线程同步问题可以使用内核支持的系统调用来维持线程之间的同步。 常用的线程同步方法包括:事件、Mutex、信号Semaphore、关键纤维素等

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。