摘要: 并发的执行单元对共享资源(硬件资源,软件上的全局变量、静态变量)的访问很容易导致竞态,避免竞态的方法: 1、中断屏蔽 在进入临界区之前屏蔽系统的中断,但是在驱动编程中不值得推荐,驱动通常需要考虑跨平台特点而不假定自己在单核上运行。中断对于内核的运行非常重要,在屏蔽中断期间所有的中断都无法处理,长时间 阅读全文
posted @ 2018-07-13 22:07 周伯通789 阅读(208) 评论(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 阅读(485) 评论(0) 推荐(0)
摘要: 本文参考https://mp.weixin.qq.com/s/Imt4BW-zoHPpcOpcKZs_AQ, 公众号“Linux阅码场” 请求合并就是将进程内或者进程间产生的在物理地址上连续的多个IO请求合并成单个IO请求一并处理,从而提升IO请求的处理效率。首先给出IO请求的整体框图,如下: 缓存 阅读全文
posted @ 2018-07-09 22:32 周伯通789 阅读(1482) 评论(0) 推荐(0)
摘要: 在一个应用中,如果需要读取多个设备文件,这其中有多种实现方式: 1、使用一个进程,并采用同步查询机制,不停的去轮询每一个设备描述符,当设备描述符不可用时,进程睡眠。 2:使用多个进程或者线程分别读取一个描述符,描述符不可用则进程或者线程睡眠。 3、使用select或者poll机制,这是一种多路IO复 阅读全文
posted @ 2018-07-09 22:30 周伯通789 阅读(483) 评论(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 阅读(4864) 评论(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 阅读(2842) 评论(0) 推荐(0)
摘要: 本文的分析存在问题,之后会把个人新的理解重新发上来。 先上转换图: 重点研究TIME_WAIT状态,根据UNIX网络编程中的思路,TIME_WAIT状态有两个存在的理由: 理由1、 客户端执行主动关闭,假设最终的ACK丢失,服务器将重新发送它的最后那个FIN,因此客户端必须维护状态信息,以允许它重新 阅读全文
posted @ 2018-07-08 20:41 周伯通789 阅读(264) 评论(0) 推荐(0)
摘要: 这一节,我们来真正的读取文件中的内容到内存中,首先来看一下内存布局是什么样的,如下所示: Boot占用了512字节,Fat Table占用了4KB,而真正的文件中的内容,我们把它存在0x9000开始的内存地址处。 加载文件内容的过程如下: 实验步骤如下: 1、在虚拟软盘中创建体积较大的文本文件,使之 阅读全文
posted @ 2018-06-30 08:55 周伯通789 阅读(439) 评论(0) 推荐(0)
摘要: 上一节我们进行了文件的查找实验,文件查找成功了,这一节,我们将文件的内容加载进内存,再一次将整体的流程给出如下: 读取文件的内容时,我们需要根据FAT表找到存储文件内容的每一个扇区,然后进行内容的读取,在上一节中,我们将整个目录区的内容加载到了内存并根据文件名找到了所在的目录项,为了节省内存,我们将 阅读全文
posted @ 2018-06-29 19:32 周伯通789 阅读(838) 评论(0) 推荐(0)
摘要: 上一节我们写了字符串打印的函数和软盘读取函数,在软盘读取函数中,我们是直接给定了要读的逻辑扇区号,这一节我们来实现一个查找文件的功能,也就是根据给定的文件名,在根目录区中查找指定的文件是否存在,涉及到文件名的查找,就会涉及到内存的比较,因此,我们需要实现两个函数,分别为内存比较函数和根目录区查找函数 阅读全文
posted @ 2018-06-27 19:42 周伯通789 阅读(326) 评论(0) 推荐(0)