如何把一个数据存到文件系统中?是怎么存的?--【原创】

简介:
块设备文件:
表示文件系统高速缓存的设备,例如硬盘驱动器
 
设备文件:
表示非高速缓存的设备,例如磁带驱动器、鼠标和系统终端
 
 
那么如何把一个数据存到文件系统中?是怎么存的?
 
一般地,我们认为文件就是文件的数据信息,它存放在磁盘上,如果单纯的这样理解就错了
 
和每一个文件相关的信息都会放在索引节点上,比方说它是字符设备的话,就是字符设备文件,还有它的权限,属组,以及大小、更新时间等信息都属于文件的相关信息,如果一个文件的大小是1kb的话,那么实际拷贝文件的话,所需要的空间要大于1kb,因为它还要拷贝索引节点
 
当我们拷贝文件的时候也会拷贝文件的索引节点
 
不是说文件就只是文件而已,它还有索引节点
 
还有一个v节点,是在linux内核上的内存区中,和索引节点不同
 
 
文件的话都会有一个偏移指针,读取、写等操作都会操作这个指针,那么我们对于文件操作的话都会使得偏移指针发生变化,那么我们就会在Linux内核上起一个V节点,把文件的偏移指针放在了V节点上面,
 
V节点 -->  索引节点 --> 文件 
 
索引节点和文件都是存放在磁盘上面的,v节点是存放在linux内核的内存区的
 
V节点只和文件打开相关,文件关闭了的话,V节点就关闭了,但是索引节点不会关闭,如果文件被删除了的话,索引节点就被删除了
 
至于怎么访问文件就需要系统调用API,我们老说API,但是很多人把API认为是和调用c库函数一样的,这样的理解是错误的,下面我先说说API是什么?
 
API(Application Programming Interface,应用程序编程接口)通过英文可以看出是应用程序编程的接口。
 
API是由内核实现的函数接口
MMI -- 人机交互接口
Gui是图形化的一个接口,图形用户界面
 
应用层一般通过一个界面去调用API,就可以和内核进行交互,内核再通过驱动程序和硬件进行交互
 
应用和内核要进行交互,我们需要调用硬件设备,那么我们就需要调用API,虽然API也是一个函数,它其实是运行在内核上的,是内核的一段程序,如果应用层要操作硬件,那么必须经过内核,也就要必须调用API
 
然后内核通过驱动程序操作硬件
 
我们通过opendir()及相关函数,可以获取目录结构信息
 
通过系统调用stat()可以从索引节点获取文件信息
 
通过常用的文件操作函数open()  、 read()等函数可以访问文件的数据
 
欢迎交流
如有转载请注明出处

新浪博客:http://blog.sina.com.cn/u/2049150530
博客园:http://www.cnblogs.com/sky-heaven/
知乎:http://www.zhihu.com/people/zhang-bing-hua










本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/4145392.html,如需转载请自行联系原作者


相关文章
|
6月前
|
存储 前端开发 Java
若依修改----数据字典,可以用于维护系统中常见的静态数据,为什么不写死,用字典维护?数据字典的好处是一个地方编写数据,在多个地方,复用他,静态选项这里填完,换其他,用户性别这里的男女,就转成而来字典
若依修改----数据字典,可以用于维护系统中常见的静态数据,为什么不写死,用字典维护?数据字典的好处是一个地方编写数据,在多个地方,复用他,静态选项这里填完,换其他,用户性别这里的男女,就转成而来字典
|
6月前
|
监控 存储
日志存储问题之志格式的乱象如何解决
日志存储问题之志格式的乱象如何解决
|
7月前
|
存储 数据安全/隐私保护 Python
档案存储与云:长期保存数据的有效方法
【6月更文挑战第6天】该教学内容旨在让学生理解档案存储的重要性,重点讲述云存储的优势(大容量、高可扩展性、便捷访问、成本效益)及其实现方式。教学难点在于确保云存储的安全性和可靠性。通过讲授、案例分析和讨论,介绍云服务提供商,并展示上传档案至云端的Python代码示例。课堂还将探讨云存储安全问题,如数据加密和用户认证。最后,布置作业让学生对比分析不同云服务的档案存储方案,以深化理解和应用。
85 3
《C++避坑神器·七》二进制读写自定义类型导致崩溃或数据读写不全问题
《C++避坑神器·七》二进制读写自定义类型导致崩溃或数据读写不全问题
119 0
|
存储 编译器 C语言
RAM明明断电会丢失数据,为什么初始化的全局变量存储在RAM?详细分析程序的存储
RAM明明断电会丢失数据,为什么初始化的全局变量存储在RAM?详细分析程序的存储
596 0
|
存储 算法 固态存储
能解决你80%关于存储的疑惑
在计算机系统中,常用的存储介质包括寄存器、内存、SSD、磁盘等,寄存器的速写速度与CPU相同,一个时钟周期是0.3纳秒,而内存访问需要120纳秒,寄存器的读写速度比内存要快几百倍,固态硬盘访问需要50~150μs,磁盘访问需要一到十几毫秒,磁盘的读写速度比内存慢了几万倍,网络访问则更慢,需要几十到上百毫秒。
348 0
数据的存储知识点总结
数据的存储知识点总结
超过6G的大文件是如何读取的,附源代码。含有网上很少有论述的信息
读取大文件有如下两种方法,一是用fopen打开文件,fgetline循环读取,fclose关闭文件;二是用open打开函数,用lseek获取文件大小,用mmap大文件内存映射,用munmap关闭内存映射,用close关闭文件句柄。方式一教慢,就不再详细描述。主要描述方式二。
|
存储 关系型数据库 MySQL
innodb是如何存数据的?yyds
innodb是如何存数据的?yyds
innodb是如何存数据的?yyds
|
移动开发
记录解决二次编码问题
记录解决二次编码问题