摘要: 在处理IO的时候阻塞与非阻塞都是同步IO,只有使用了特殊的API才是异步IO。 select、poll、epoll都是同步。IO多路复用又叫事件驱动。 信号驱动方式的IO也是同步的,信号只是异步通知机制,真正执行IO操作还是同步的(UNP的说法)。 在IO操作时,事件驱动和信号驱动差不多一个概念。 阅读全文
posted @ 2018-07-15 20:57 周伯通789 阅读(132) 评论(0) 推荐(0)
摘要: 先看下面一段代码: 编译并执行上述程序,结果如下: pid=2500的输出是子进程,其它三条输出都是父进程的输出,第13行的write函数是不带缓冲区的,这里的缓冲区说的是用户空间的缓冲区,但是在内核中还是有page cache缓冲区的,这两个缓冲区是不一样的,也就是不管写多少数据,write是不会 阅读全文
posted @ 2018-07-14 08:25 周伯通789 阅读(262) 评论(0) 推荐(0)
摘要: 并发的执行单元对共享资源(硬件资源,软件上的全局变量、静态变量)的访问很容易导致竞态,避免竞态的方法: 1、中断屏蔽 在进入临界区之前屏蔽系统的中断,但是在驱动编程中不值得推荐,驱动通常需要考虑跨平台特点而不假定自己在单核上运行。中断对于内核的运行非常重要,在屏蔽中断期间所有的中断都无法处理,长时间 阅读全文
posted @ 2018-07-13 22:07 周伯通789 阅读(210) 评论(0) 推荐(0)
摘要: poll函数的原型如下所示: int poll(struct pollfd *fds, nfds_t nfds, int timeout); poll可以监视多个描述符的属性变化,其参数的意义如下: 参数fds: 指向一个结构体数组的第0个元素的指针,每个数组元素都是一个struct pollfd结 阅读全文
posted @ 2018-07-12 00:08 周伯通789 阅读(491) 评论(0) 推荐(0)
摘要: 本文参考https://mp.weixin.qq.com/s/Imt4BW-zoHPpcOpcKZs_AQ, 公众号“Linux阅码场” 请求合并就是将进程内或者进程间产生的在物理地址上连续的多个IO请求合并成单个IO请求一并处理,从而提升IO请求的处理效率。首先给出IO请求的整体框图,如下: 缓存 阅读全文
posted @ 2018-07-09 22:32 周伯通789 阅读(1488) 评论(0) 推荐(0)
摘要: 在一个应用中,如果需要读取多个设备文件,这其中有多种实现方式: 1、使用一个进程,并采用同步查询机制,不停的去轮询每一个设备描述符,当设备描述符不可用时,进程睡眠。 2:使用多个进程或者线程分别读取一个描述符,描述符不可用则进程或者线程睡眠。 3、使用select或者poll机制,这是一种多路IO复 阅读全文
posted @ 2018-07-09 22:30 周伯通789 阅读(486) 评论(0) 推荐(0)
摘要: 转载:原文地址http://www.linuxeye.com/linuxrumen/1121.html 本质上,Ext3 mount的过程实际上是inode被替代的过程。例如,/dev/sdb块设备被mount到/mnt/alan目录。那么mount这个过程所需要解决的问题就是将/mnt/alan的 阅读全文
posted @ 2018-07-09 22:12 周伯通789 阅读(4874) 评论(0) 推荐(0)
摘要: 转载:原文地址https://www.ibm.com/developerworks/cn/linux/l-vfs/ 1. 摘要 本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用, 阅读全文
posted @ 2018-07-09 22:01 周伯通789 阅读(2843) 评论(0) 推荐(0)
摘要: 本文的分析存在问题,之后会把个人新的理解重新发上来。 先上转换图: 重点研究TIME_WAIT状态,根据UNIX网络编程中的思路,TIME_WAIT状态有两个存在的理由: 理由1、 客户端执行主动关闭,假设最终的ACK丢失,服务器将重新发送它的最后那个FIN,因此客户端必须维护状态信息,以允许它重新 阅读全文
posted @ 2018-07-08 20:41 周伯通789 阅读(268) 评论(0) 推荐(0)
摘要: 这一节,我们来真正的读取文件中的内容到内存中,首先来看一下内存布局是什么样的,如下所示: Boot占用了512字节,Fat Table占用了4KB,而真正的文件中的内容,我们把它存在0x9000开始的内存地址处。 加载文件内容的过程如下: 实验步骤如下: 1、在虚拟软盘中创建体积较大的文本文件,使之 阅读全文
posted @ 2018-06-30 08:55 周伯通789 阅读(446) 评论(0) 推荐(0)