上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 57 下一页
摘要: 管道基本概念: 管道是Unix中最古老的进程间通信形式 我们把从一个进程连接到另一个进程的一个数据流称为一个“管道” 管道的本质:固定大小的内核缓冲区 管道限制: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道 只能用于具有共同祖先的进程(具有亲缘关系的进程)之间进行通信 阅读全文
posted @ 2018-08-05 19:36 周伯通789 阅读(173) 评论(0) 推荐(0)
摘要: 模型如下: 服务器: 客户端: 这个模型下所有进程统一通过队列通信,队列的大小有限制,而且这些进程既从这个队列读又往这个队列写,操作时无序的,很容易造成队列满或者队列空,所以当进程数很多时容易发生阻塞。 可以改进为如下的模型: 每来一个客户端,就fork一个进程,让这个进程和客户端通信。 监控模型: 阅读全文
posted @ 2018-08-05 19:15 周伯通789 阅读(261) 评论(0) 推荐(0)
摘要: 进程间通信的分类: 文件 文件锁 管道和匿名管道pipe 信号 消息队列 共享内存 信号量 互斥量 条件变量 读写锁 套接字 两个进程同时向管道中写数据,内核要保证它们是原子的,内核按照页做限制。 进程间共享信息的三种方式:一个通过文件系统,一个通过内核,一个在应用空间 IPC对象的持续性: 随进程 阅读全文
posted @ 2018-08-05 11:52 周伯通789 阅读(229) 评论(0) 推荐(0)
摘要: ISO的开放互联模型(OSI) TCP IP四层模型 TCP IP各层报文 以太网的MTU和路径MTU IP数据报 ICMP协议 TCP 报文段 综合案例: 其他补充,主要协议及其关系 阅读全文
posted @ 2018-08-05 10:40 周伯通789 阅读(270) 评论(0) 推荐(0)
摘要: TCP 协议是面向连接的基于流的,可靠的传输服务。UDP是无连接的,基于数据报的,不可靠的传输服务,UDP没有粘包,但是会产生丢包。 UDP模型如下: 可以看到,服务器端不用listen,也不用accept。而客户端,也不用connect。 总结UDP的特点如下: 1、无连接 2、基于消息的数据传输 阅读全文
posted @ 2018-08-05 08:05 周伯通789 阅读(344) 评论(0) 推荐(0)
摘要: select优化服务器: select优化客户端: 阅读全文
posted @ 2018-08-04 20:40 周伯通789 阅读(402) 评论(0) 推荐(0)
摘要: 5种IO模型分别如下: 1、阻塞IO模型 当上层应用app1调用recv系统调用时,如果对等方没有发送数据(缓冲区没有数据),上层app1将阻塞(默认行为,被linux内核阻塞)。 当对等方发送了数据,linux内核recv端缓冲区有数据后,内核会把数据copy给用户空间。然后上层应用app1解除阻 阅读全文
posted @ 2018-08-02 22:38 周伯通789 阅读(421) 评论(0) 推荐(0)
摘要: 先看TCP IP的10种状态,如下所示: 三次握手: 客户端A端发送SYN,然后进入SYN_SENT状态,服务器B端接收到SYN后,返回一个响应ACK,同时也发送一个SYN,然后B端进入SYN_RCVD状态,A端收到ACK后进入ESTABLISHED状态,然后发送一个ACK,服务器B端收到ACK后进 阅读全文
posted @ 2018-08-01 21:03 周伯通789 阅读(499) 评论(0) 推荐(0)
摘要: 我们先看一下服务器中存在僵尸进程的情况。 服务器是多进程模型,客户端是单进程。 服务器程序如下: 客户端程序如下: 执行结果如下: 可以看到,当客户端使用ctrl+c关闭时,服务器中的子进程成了僵尸进程。这是因为,子进程死了,但是没有进程给它收尸,我们可以调用signal(SIGCHLD, SIG_ 阅读全文
posted @ 2018-08-01 19:00 周伯通789 阅读(542) 评论(0) 推荐(0)
摘要: TCP IP协议是流协议,对上层协议来讲是没有边界的,主机A发送两个消息M1和M2,如下图所示: 主机A发送了M1和M2,主机B在接收时有4种情况: 1、先收了M1,又收了M2 2、M1、M2一起收到了 3、M1和M2的一部分一起收到的,又收到了M2的一部分 4、先收到了M1的一部分,然后M1的下一 阅读全文
posted @ 2018-07-30 23:28 周伯通789 阅读(287) 评论(0) 推荐(0)
上一页 1 ··· 47 48 49 50 51 52 53 54 55 ··· 57 下一页