文件数据流向

Posted Liu_Jing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件数据流向相关的知识,希望对你有一定的参考价值。

应用程序A写“hello”,首先到C标准缓冲区,再通过fprintf,fputs等把“hello”写到内核缓冲区,最终写到磁盘文件中。

eg:应用程序A把“hello”写到C标准缓冲区时,应用程序B读磁盘能否读到“hello”?

答:不能读到。

每一个应用程序都有一个自己的地址空间(0-4G),故C标准缓冲区是和应用程序A绑定的,只有应用程序A能看到,B是看不到的。当应用了fflash时,hello通过底层调用,被写入内核缓冲区,写入后,write函数返回,表示写成功,此时hello并不会马上到磁盘文件中,而是有一个守护进程,缓输出。(对操作系统看来,本次读写磁盘文件只写了一个hello,有点浪费性能,故先让hello在内核缓冲区先保存,守护进程会定时刷新内核缓冲区的内容到磁盘文件。)应用程序B可以看到内核缓冲区的内容。

 

 

0地址到3G地址是应用程序的地址空间,3G-4G是公用的内核(Kernel)空间(内核缓冲区),为了方便,操作系统会在内核中为每一个进程创建一个PCB模型(进程控制块),每个PCB里有一个file struct的指针(文件描述符表)。文件描述符指向一个确定的文件。

以上是关于文件数据流向的主要内容,如果未能解决你的问题,请参考以下文章

shell 重定向以及文件描述符

数据流向分析

qemu网络虚拟化之数据流向分析三

什么是数据流向分析

帮你更快认识Vuex,数据流向

从数据挖掘和分析的角度浅析个贷资金流向监测