码迷,mamicode.com
首页 > 其他好文 > 详细

APUE学习笔记——3.10文件共享

时间:2014-08-20 18:04:32      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:apue   unix环境高级编程   文件共享   进程表   文件表   

基本概念

内核使用3个数据结构描述一个打开的文件进程表、文件表、V节点表
首先了解3种数据结构的概念
    1 进程表
        每一个进程有一个进程表。进程表里是一组打开的文件描述符,如标准输入0,标准输出1,标准错误2...
    2 文件表
        进程打开一个文件时,内核就为该文件创建一个文件表。
        进程表对文件表是 一对多的关系    文件表对文件描述符也是一对多的关系(可能多个文件描述符指向同一文件表)
         文件表中包含了文件状态标志、当前偏移量、和V-node pointer表项
            文件状态标志如:read,  write,  append,  sync, nonblocking等等
            偏移量好理解,就不多解释了(它在write时会变化)
            V-node pointer就是指向V-node表的指针
        
    3 V节点表(Linux只有i节点表)
        每一个没打开的文件有一个V节点表。V-node table实际上跟进程关系不大,主要跟被打开的文件相关。一个打开的文件只有一个v-node表,所有打开它的进程共用此表
        文件表对V节点表示多对一的关系。
        V-node表主要是描述了文件信息、数据的访问入口

一个进程打开多个文件

bubuko.com,布布扣
bubuko.com,布布扣
    如《APUE E3rd》的Figure3.7所示,一个进程打开多个文件。
    文件描述符0和1各通过一个文件表打开一个文件
    注:可能文件描述符0和3指向同一个文件表

多个进程打开一个文件

    bubuko.com,布布扣bubuko.com,布布扣
    如《APUE E3rd》中figure 3.8所示,两个进程打开同一个文件。
    两个进程使用的文件表都是进程独有的。也就是说一个文件表虽然是内核维护的,但它至属于某一个特定进程。
        

APUE学习笔记——3.10文件共享,布布扣,bubuko.com

APUE学习笔记——3.10文件共享

标签:apue   unix环境高级编程   文件共享   进程表   文件表   

原文地址:http://blog.csdn.net/windeal3203/article/details/38708745

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!