zoukankan      html  css  js  c++  java
  • 如何把一个数据存到文件系统中?是怎么存的?--【原创】

    块设备文件:
    表示文件系统高速缓存的设备,例如硬盘驱动器
     
    设备文件:
    表示非高速缓存的设备,例如磁带驱动器、鼠标和系统终端
     
     
    那么如何把一个数据存到文件系统中?是怎么存的?
     
    一般地,我们认为文件就是文件的数据信息,它存放在磁盘上,如果单纯的这样理解就错了
     
    和每一个文件相关的信息都会放在索引节点上,比方说它是字符设备的话,就是字符设备文件,还有它的权限,属组,以及大小、更新时间等信息都属于文件的相关信息,如果一个文件的大小是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

  • 相关阅读:
    线程 定时任务 实现思路
    Days Floating In ShenZhen(1)
    由于未能找到具有自动生成的控件来引发回发事件,导致发生错误
    在ASP.NET中使用AJAX.NET (转译自MSDN)(二)
    Every Time I Wake up I want sleep more
    漂泊在深圳的日子2
    512今日历程
    流金岁月
    对自己的思考
    关于绑定自动生成的下拉式菜单的错误
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/4145392.html
Copyright © 2011-2022 走看看