
Linux
文章平均质量分 88
Dxiaoru
这个作者很懒,什么都没留下…
展开
-
i/o复用:select、poll和epoll
为了解决进程或线程阻塞到某个I/O系统调用,则就需要用到I/O复用技术,使进程不阻塞与某个特定的系统调用。select、poll和epoll是三种实现I/O复用的系统调用,用来监听用户感兴趣的文件描述符上是否有事件发生,一旦某个文件描述符就绪(一般是可读或者可写),能够通知应用程序进行相应的读写操作。但select、poll、epoll本质上还是同步I/O,因为他们都需要在读写事件就绪后自...原创 2018-07-18 13:42:46 · 305 阅读 · 0 评论 -
进程间通讯(1)---信号
多任务并发环境中,每个进程之间相互独立,不同的进程运行在各自不同的内存空间中,因此,进程之间的信息传递不能通过变量或者其他数据直接进行沟通。所以有了可在进程间通讯的方法:信号、管道、共享内存、信号量、消息队列、还有socket。信号:信号其实只是一种通知机制,如:子进程给父进程发送SIGCHLD信号,告知父进程,自己结束了。都是系统预先定义好的某些特定事件,收到该信号的进程会采取相...原创 2018-07-29 16:49:41 · 234 阅读 · 0 评论 -
进程间通讯(2)---管道
管道:半双工通讯数据流向是单向的、先进先出的。只能一个进程读、一个进程写。数据从管道中读出后,就会被删除。如果管道中没有数据,读操作就会被阻塞,直到管道中有数据可读;而如果管道的满的,写操作就会被阻塞,直到管道中有足够大的空间可用。 ①有名管道(fifo):在任意两个进程间通信。有属性信息、inode结点存在磁盘上。在文件目录树中存在管道文件标识。但是管道文件不占据磁盘空间,需要传...原创 2018-07-29 17:00:38 · 267 阅读 · 0 评论 -
同步和异步、阻塞和非阻塞,以及五种I/O模型
同步异步分为两种:并发的同步异步 和 I/O的同步异步。一、并发的同步和异步:同步:完全按照代码顺序执行,前面执行完了,才能去执行后面的代码。所以当进程执行到某调用时,调用发出后,如果进程不能立刻得到结果,则等待,直到这个调用返回。例如:普通模式的B/S模式:提交请求->等待服务器处理->处理完毕返回。这个期间客户端不能做任何事。异步:彼此独立,在等待某事件的过程中继续...原创 2018-07-21 16:30:10 · 1473 阅读 · 0 评论 -
进程间通讯(4)--消息队列
消息队列:两个不相关的进程中进行通讯 “消息队列”是一个存放在内核的队列,是在消息的传输过程中保存消息的容器。因为它消息队列保存在内核中,所以我们必须显示地删除一个消息队列。否则这个消息队列会一直存在于内核找到操作系统重启(内核重启)。消息队列中传递的消息是一个包含消息类型的结构体(数据块),进程可以根据消息类型独立的接收含有不同类型值的数据块。消息队列保存消息,它独立于发...原创 2018-08-09 17:00:34 · 281 阅读 · 0 评论 -
进程间通讯(3)信号量 & 共享内存
信号量:用于进程间同步控制 信号量就是具有原子性的计数器,相当于一把锁,进程要访问临资源时,必须向信号量获取锁,才能访问这个临界资源,同时其他进程因为无法“获得锁”而不能访问该临界资源,只有以获得锁的进程访问完了临界资源,将锁还给信号量后,其他进程才能“获得锁”去执行临界区代码。从而实现了进程间的同步控制。 对信号量只有两种操作:等待(P)、发送信号(V)...原创 2018-08-07 16:18:25 · 351 阅读 · 0 评论