• Linux系统如何管理文件


    1、硬盘中的静态文件和inode(节点)

    (1)、 文件平时都存放在硬盘中的,硬盘中存储的文件以一种固定的形式存放的,我们叫做静态文件。

    (2)、一块硬盘中可以分为两大区域:一个是硬盘内容管理表项,另一个是真正存储内容的区域。操作系统访问硬盘时先去读取硬盘内容管理表,从中找到我们要访问的那个文件的扇区级别的信息,然后再用这个信息去查询真正存储内容的区域,最后得到我们想要的文件。

    (3)、操作系统最终拿到的信息是文件名,最终得到的是文件内容。第一步就是去查询硬盘内容管理表,这个管理表中以文件为单位记录了各个文件的各种信息,每一个文件有一个信息列表(我们叫做inode,i节点,其实质是一个结构体,这个结构体有很多元素,每个元素记录了这个文件的一些信息,其中包括文件名、文件在硬盘上对应的扇区号、块号这些东西........)

    强调:硬盘管理的时候是以文件为单位的,每个文件一个inode,每个inode有一个数字编号,对应一个结构体,结构体中记录了各种信息。

    (4)、联系平时实践,大家格式化硬盘(U盘)时发现有:快速格式化和(底层)格式化。快速格式化非常快,普通格式化速度慢。快速格式化就是只删除了U盘中的硬盘内容管理表(其实就是inode),真正存储的内容没有动,这种格式化的内容是有可能被找回的。

    2、内存中被打开的文件和vnode(v节点)

    (1)、一个程序的运行就是一个进程,我们在程序中打开的文件就属于某个进程。每个进程中都有一个数据结构用来记录这个进程的所有信息(叫做进程信息表),表中有一个指针会指向一个文件管理表,文件管理表中记录了当前进程打开的所有文件及其相关信息。文件管理表中用来索引各个打开的文件的index就是文件描述符fd,我们最终找到的就是一个已经被打开的文件的管理结构体vnode。

    (2)、一个vnode中就记录了一个被打开的文件的各种信息,而且我们只要知道这个文件的fd,就可以很容易的找到文件的vnode进而对这个文件进行各种操作。

    3、文件和流的概念

    (1)、流(stream)对应自然界的水流。文件操作中,文件类似一个大包裹,里面装了一堆字符,但是文件被读出/写入时都只能一个字符一个字符的进行,而不能一股脑儿的读写,那么一个文件中N多的字符被挨个一次读出/写入时,这些字符就构成一个字符流。

    (2)流这个概念是动态的,不是静态的。

    (3)编程中提到流这个概念,一般都是IO相关的。所以经常叫IO流。文件操作时就构成了一个IO流。

  • 相关阅读:
    多线程爬取斗图啦图片
    fiddler配置https
    Linux相关命令实例及解析
    htm、html、shtml网页区别
    什么是中间件?常见中间件有哪些?
    列举常见的关系型数据库和非关系型都有那些?
    什么是dao模式,dao模式的实现方法
    如何理解fine-grained和coarse-grained?
    .Net 理解持久层(Persistence Layer)
    web server与app server有什么不同
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11101504.html
Copyright © 2020-2023  润新知