zoukankan      html  css  js  c++  java
  • 文件数据流向

    应用程序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的指针(文件描述符表)。文件描述符指向一个确定的文件。

    欢迎加入作者的小圈子

    扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并,获取更多隐藏干货,QQ交流群:859800032 微信公众号:Crystal软件学堂

    作者:Liu_Jing
    bilibili视频教程地址:https://space.bilibili.com/5782182
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。
    如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。
    文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。
  • 相关阅读:
    layout布局
    窗口、easyui-window、easyui-panel、easyui-linkbutton
    FASTJSON
    Insert title here
    Insert title here
    Scala并发编程
    scala中java并发编程
    scala调用外部命令
    scala正则表达式
    scala占位符_的用法
  • 原文地址:https://www.cnblogs.com/Liu-Jing/p/7047773.html
Copyright © 2011-2022 走看看