首页 > 编程知识 正文

进程和线程的区别面试,socket面试

时间:2023-05-06 20:10:21 阅读:38943 作者:2727

liunx的六种进程间通信方式

管道、消息队列、共享内存、信号、套接字、信号、文件锁1、管道1、匿名管道:

概念:向内核申请固定大小的缓冲区,程序具有写入和读取的权利,一般采用fork函数实现父子进程的通信。

2、命名管道:

概念:在内核中申请固定大小的缓冲区,程序具有写入和读取的权利,无血缘关系的过程也可以进行进程间通信。

3、特点:

1、面向字节流,

2、生命周期与内核一起

3 )具有同步互斥机制。

4、半双工、单向通信,两条管道实现双向通信。

2,消息队列1,概念:在内核中创建队列。 队列中的每个元素都是一个数据报,不同的进程可以通过句柄访问该队列。

消息队列提供了一种将块数据从一个进程发送到另一个进程的方法。

每个数据块都被视为具有类型,并且接收进程接收的数据块可以具有不同类型的值

消息队列中也有管道一样的东西。 也就是说,每个消息的最大程度都有上限。 (MSGMAX )、

每个消息队列的总字节数有上限(MSGMNB ),系统上的消息队列总数也有上限(MSGMNI )

2、特点:

1 )消息队列可以视为全局链表。 链表的节点时钟存储数据报的类型和内容,并使用消息队列的标识符进行标记。

2 )消息队列允许一个或多个进程写入或读取消息。

3 )消息队列的生命周期与内核一起提供。

4、消息队列可以实现双向通信。

3,信号量1,概念

在内核中创建信号集合(本质上是数组),数组的元素(信号)全部为1,p操作为-1,v操作为1,

(1) p ) sv ) :如果sv的值大于零,则减去1; 如果值为零,则中止进程的执行。

) v ) sv ) :等待sv且其他进程挂起时,恢复运输;等待sv且没有挂起的进程时,加1。

PV操作在同一进程中使用,实现互斥。

PV操作用于不同的进程,以实现同步。

2、功能:

保护临界资源。

4,共享内存1,概念:

将同一物理内存块映射到不同进程的虚拟地址空间,在不同进程之间共享相同的资源。

共享内存是最有用的进程间通信方式,可以说是最快的IPC形式。

2、特点:

1 )无需从用户状态频繁切换或复制数据到内核状态,直接从存储器读取即可。

2 )共享内存是临界资源,需要操作时必须保证原子性。 也可以使用信号或排他锁定。

3 )生命周期与内核一起存在。

5 )生命周期与内核一起,必须手动发布,以上所有内容的总结方法才会消失。

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