- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
学云签约讲师魏娟
学习c++开发基于Linux系统开发系列
—第6讲文件的内核数据结构
上节回顾
文件基本操作简介
文件操作基本原理
文件与文件描述符
文件打开操作
文件读写操作
读写设备文件
读写设备文件实践
读写文件与文件内核数据结构
本节目标
读写设备文件实践
向某一终端发消息
dev/pts/n
向所有终端广播消息
dev/pts/0,1,2…n
读写文件与文件的内核数据结构
读写文件
分别打开两次文件
分别两次向文件中写内容
文件内核数据结构分析
在每个程序的进程空间中,都有一个表项区的空间
表项区空间中,保存了许多进程要用到的表
文件描述符表时常用的一个,进程所打开的文件的文件描述符都会保存到文件描述符表中
文件描述符是私有的,存在进程空间中,只能在本进程中能用
每个文件描述符对应着一个文件表,文件描述符是文件表的编号
读写文件与文件的内核数据结构
系统内核会为所有打开的文件维护一张文件表,文件表不在进程空间中,由系统内核维护
只要在程序中被打开了两次,那么就会有两个文件描述符和两个文件表存在
文件表的数据信息包括
文件状态
文件类型、访问权限、同步……
当前文件的位移量
文件指针的位置,当前该文件的位移,用于确定读写文件的位置
指向V节点的指针
指向V节点表的指针
在Unix系统中,每个文件都对应一个唯一的V节点结构
V节点记录的是硬盘上文件信息
一个文件只唯一地对应一个V节点
读写文件与文件的内核数据结构
一个文件每被打开一次,内核都会创建一个文件表,但V节点只有唯一的一个
文件表与V节点的关系是*:1关系
文件内核数据结构图
fd标志
0
1
2
3
4
文件状态标志
当前位移量
V节点指针
文件状态标志
当前位移量
V节点指针
V节点信息
I节点信息
当前文件长度
V节点信息
I节点信息
当前文件长度
没有文件表则找不到V节点,就没法读写文件
文件描述符则文件表的编号
一个文件描述符就对应一个文件表
1个文件只有唯一的一个V节点
小结
读写设备文件实践
读写文件与文件内核数据结构
作业
完成课堂上讲解的案例程序
文档评论(0)