如果一个用户空间中的应用程序(假设是用c语言编写的)要读取存放在remote scsi磁盘上面的某个文件,那么这个应用程序就需要使用c库的程序,然后调用内核提供的系统调用read(),系统调用会访问VFS,也就是虚拟文件系统,那么虚拟文件系统是什么呢?虚拟文件系统其实是文件系统的抽象层(复用代码的设计思想?),然后由VFS 选择那个正确的文件系统,因为甚至有的文件系统就是网络文件系统呢。然后到了真正的文件系统,文件系统是一个组织文件在磁盘上面存放的管理系统,由文件系统找到文件对应的块。再然后到了块设备层。文...
分类:
其他好文 时间:
2014-11-07 11:15:53
阅读次数:
166
频繁的I/O操作会引起频繁的系统调用,这会很慢,于是引入缓冲区。对于一个流(文件、socket或pipe),以缓冲区为单位进行操作,举个例子:
一个管道,A写入,B读出,一开始内核缓冲区为空,B阻塞,A开始写入,内核缓冲区状态由空变为非空,这时内核产生一个事件告诉B该醒了。但这个事件并没有让B去读数据,似乎只是起到一个警示,不过内核许诺不会把写入管道中的数据丢掉,A写入的数据会全部保存在缓冲...
分类:
其他好文 时间:
2014-11-05 00:29:09
阅读次数:
202
本文只讨论执行"mount none /mnt/huge -t hugetlbfs"命令后,mount系统调用的执行过程(基于Linux-3.4.51),不涉及进程相关的细节。mount系统调用的内核实现: 1 SYSCALL_DEFINE5(mount, char __user *, dev_na...
分类:
系统相关 时间:
2014-11-04 12:47:47
阅读次数:
271
我们用慢系统调用来描述那些可能永远堵塞的系统调用(函数调用),如:accept,read等。永远堵塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类。例如,如果没有客户连接到服务器上,则服务器对accept的调用就没有返回保证。类似的,如果客户从未发送过一行要求服务器回射的文本,则服务器对read的调用将永不返回。其他慢系统调用的例子是对管道和终端设备的读写。有一个例外,就是磁盘...
分类:
系统相关 时间:
2014-11-03 00:07:11
阅读次数:
192
1 引言 不带缓冲区的I/O(unbuffered I/o)是指每个read 和 write 都调用内核中的一个系统调用,这些不带缓冲区的I/O 不是ISO C 的组成部分。2 文件描述符 每个打开的文件都通过文件描述符引用,文件描述符是一个非负整数。open 和 create 函数返回的文件描.....
分类:
其他好文 时间:
2014-11-02 22:13:44
阅读次数:
238
一个例子明白发送缓冲区、接受缓冲区、滑动窗口协议之间的关系。在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于对于每一个TCP的SOCKET来说,都有一个发送缓冲区和接受缓冲区与之对应,所以这里只做单方向jiāo...
分类:
其他好文 时间:
2014-11-02 18:08:34
阅读次数:
133
一,mount系统调用--相关代码源码位置:kernel/fs/Namespace.c文件的do_mount()函数,[cpp]view plaincopylongdo_mount(char*dev_name,char*dir_name,char*type_page,unsignedlongflag...
分类:
其他好文 时间:
2014-11-01 23:12:44
阅读次数:
257
1,mount exampleMount (/dev/hdb1 to /home/xpl)a.要mount一个新的设备必须先创造一个superblock。利用要mount的文件系统的file_system_type,调用其get_sb()來创造新的super blockb.创建vfsmountfor...
分类:
其他好文 时间:
2014-11-01 23:09:43
阅读次数:
310
1,mount命令各个参数的含义mount命令各个参数含义2,mount系统调用中flag参数的含义#define MS_RDONLY 1 /* Mount read-only */#define MS_NOSUID 2 /* Ignore suid and sgid bits */#define ...
分类:
其他好文 时间:
2014-11-01 23:07:15
阅读次数:
299
相比前些天的内容,今天的内容算是比较简单的。主要说了VT控制 码,三种排序算法:选择排序,冒泡排序,快速排序。二分查找。遍历二叉树还有posix的简单介绍。系统调用函数:open close read write lseek fstat的使用。 关于vt控制码的学习,据老刘说是为了以后的小项...
分类:
其他好文 时间:
2014-10-31 20:36:14
阅读次数:
232