文件描述符、文件表项、V节点表项的一些总结
转自 http://blog.csdn.net/gzzheyi/article/details/7739556
表格可以参见APUE 第三版 P61.
文件描述符(进程级别):
1)、在每个进程表中都有一个记录项,记录项中包含有一张打开文件描述符表,可将其视察为一个矢量(数组),每个描述符占用一项。与每个文件描述符相关联的是:
(a)、文件描述符标志。
(b)、指向一个文件表项的指针。(不同的文件描述符可以指向同一个文件表项,例如用dup函数复制文件描述符,得到一个新的文件描述符,但是它们指向同一个文件表项,因此它们也指向同一个V节点表。)
文件表项(全局级别,所有进程共享?自己YY的)
2)、内核为所有打开的文件维持一张文件表(同一个文件可以被打开多次,所以同一个文件可以在文件表中占有多项)。每个文件表项包含:
(a)、文件状态标志(读、写、添写、同步和非阻塞等)
(b)、当前文件偏移量(不同的文件表项的V节点指向可以指向同个V节点表,也就是指向同一个真实的物理文件。因为一个文件表项里包含当前文件偏移量,所以不同的文件表项看到同一文件的偏移量可以不同,这种安排可以使每个进程都有它自己的对该文件的当前偏移量。)
(c)、指向该文件的V节点表项的指针。
V节点表项(全局级别?所有进程共享?自己YY的)
(3)、每个打开文件(或设备)都有一个V节点结构。V节点包含了文件类型和对此文件进行各种操作的函数的指针。对于大多数文件,V节点还包含了该文件的I节点。
------------------------------------------------分割---------------------------------------------------------------------
再稍微总结一下它们各自的对应关系:
一个文件描述符对应一个文件表项,而一个文件表项又对应一个V节点表项。不同的文件描述符可以指向同一个文件表项(可以通过dup复制文件描述符等方式),从而指向同一个V节点表项。与此相似,不同的文件表项也可以指向同一个V节点表项。例如fd1 = open(pathname,...),fd2 = open(pathname....),因为它们各自打开了自己看到的文件,虽然是同一个文件,但是还是它们拥有不同的文件描述符,指向不同的文件表项(前面说过的,内核为所有打开的文件维持一张文件表(同一个文件可以被打开多次,所以同一个文件可以在文件表中占有多项))。不过,因为是同一个文件,所以它们的文件表项里的V节点指针指向的是同一个V节点表项。再简单些总结就是;文件描述符与文件表对应关系就是:一对一,或者多对一。而文件表项与V节点表项的关系就是:一对一,或者多对一。
文件描述符、文件表项、V节点表项的一些总结的更多相关文章
- [转帖]linux文件描述符文件/etc/security/limits.conf
linux文件描述符文件/etc/security/limits.conf https://blog.csdn.net/fanren224/article/details/79971359 需要多学习 ...
- 文件描述符 文件操作 <> open 文件句柄
#! /usr/bin/perl use strict;use warnings; =head1print "\n---------------------------------test_ ...
- linux系统编程之文件与IO(八):文件描述符相关操作-dup,dup2,fcntl
本节目标: 1,文件共享 打开文件内核数据结构 一个进程两次打开同一个文件 两个进程打开同一个文件 2,复制文件描述符(dup.dup2.fcntl) 一,文件共享 1,一个进程打开两个文件内核数据结 ...
- Linux 进程间传递文件描述符
文章目录 文件描述符 文件数据结构 共享文件 UNIX域socket实现传递文件描述符 进程间传递打开的文件描述符,并不是传递文件描述符的值.先说一下文件描述符. 文件描述符 对内核来说,所有打开的文 ...
- shell 重定向以及文件描述符
1.对重定向的理解 Linux Shell 重定向分为两种,一种输入重定向,一种是输出重定向:从字面上理解,输入输出重定向就是「改变输入与输出的方向」的意思. 输入方向就是数据从哪里流向程序.标准输入 ...
- 18 shell 重定向以及文件描述符
1.对重定向的理解 2.硬件设备和文件描述符 文件描述符到底是什么 3.Linux Shell 输出重定向 4.Linux Shell 输入重定向 5.结合Linux文件描述符谈重定向 6.Shell ...
- inode和文件描述符区别
inode 或i节点是指对文件的索引.如一个系统,所有文件是放在磁盘或flash上,就要编个目录来说明每个文件在什么地方,有什么属性,及大小等.就像书本的目录一样,便于查找和管理.这目录是操作系统需要 ...
- 文件描述符(File Descriptor)简介
本文转载自文件描述符(File Descriptor)简介 导语 维基百科:文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个 ...
- linux 文件描述符和inode 的理解和区别
inode 或i节点是指对文件的索引.如一个系统,所有文件是放在磁盘或flash上,就要编个目录来说明每个文件在什么地方,有什么属性,及大小等.就像书本的目录一样,便于查找和管理.这目录是操作系统需要 ...
- linux一切皆文件之文件描述符(一)
一.知识准备 1.在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件.如:普通文件.目录.字符设备.块设备.套接字等 2.当一个文件被进程打开,就会创建一个文件描述符.这时候,文件的路径就 ...
随机推荐
- Nginx学习笔记(二):Nginx 连接处理 / 负载均衡
Connection 在 Nginx 中,connection 就是对 TCP 连接的封装,其中包括连接的 socket,读写事件 Nginx 处理连接流程: 解析配置文件,得到需要监听的端口和I ...
- 数据校验-hibernate-validator
数据校验 在web开发时,对于请求参数,一般上都需要进行参数合法性校验的,原先的写法时一个个字段一个个去判断,这种方式太不通用了,所以java的JSR 303: Bean Validation规范就是 ...
- Abandoning Roads CodeForces - 1149D (最小生成树)
大意: 给定无向图, 边权只有两种, 对于每个点$x$, 输出所有最小生成树中, 点$1$到$x$的最短距离. 先将边权为$a$的边合并, 考虑添加边权为$b$的边. 每条路径只能经过每个连通块一次, ...
- maftools | 从头开始绘制发表级oncoplot(瀑布图)
本文首发于微信公众号 **“ 生信补给站 ”** ,期待您的关注!!! 原文链接:https://mp.weixin.qq.com/s/G-0PtaoO6bYuhx_D_Rlrlw 对于组学数据的分析 ...
- luogu题解P1967货车运输--树链剖分
题目链接 https://www.luogu.org/problemnew/show/P1967 分析 NOIp的一道裸题,直接在最大生成树上剖分取最小值一下就完事了,非常好写,常数也比较小,然而题解 ...
- jdk8的环境配置
下载jdk,选择安装路径进行安装.https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htm ...
- c#模拟鼠标左键单击
[System.Runtime.InteropServices.DllImport("user32.dll")] private static extern int mouse_e ...
- EditText编辑框
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- U盘装manjaro 18报Python error in job “initcpio”
更新: 还是不行,大家再找别的方法. 以下内容仅做参考,意义不大. U盘安装 用rufus做U盘,写入选DD模式,比ISO模式可靠点. 错误解决 报错信息: Error installing Manj ...
- C语言判断一个32位的数据,有多少位是1,然后用串口发送出来
今天遇到了一个问题,遇到一个32位的数据,写一个子函数来判断它的多少位是1.我的思路一开始是把这个数据变成一个32位容量的数组然后每个位去比较是不是1,如果是1,就用另一个变量加1.最后返回这个变量. ...