zoukankan      html  css  js  c++  java
  • 操作系统--文件管理1

    1.文件系统概念
    *文件系统:OS中管理持久数据的子系统;提供数据存储和访问的功能
    具体涉及的操作:组织、检索、读写访问数据
    大多数计算机系统都具备文件系统广义:google也是一个文件系统
    *文件:具有符号名,由字节序列构成的数据项的集合
    文件是文件系统的最小单位;文件名是文件的标识符号
    *文件系统的种类:
    磁盘文件系统:文件存储在存储设备上--存在不同的文件系统(数据的组织方式
    *文件属性:名字、类型、位置、大小、保护、创建者、创建时间、最近修改时 间等信息。
    *文件头:文件系统元数据中的文件信息(文件属性和文件存储顺序位置)
    注意:设置文件头是为了方便系统管理文件。
    *文件系统的功能:
    #为文件分配磁盘空间,涉及下面3个方面内容
    1.管理文件块(位置和顺序) 2.管理空闲空间(位置)3.空闲空间的分配(策略) #管理文件集合
    1.定位:文件及其内容 2.命名:通过名字找文件 3.文件组织方式-系统结构
    #数据的可靠和安全
    1.安全:多层次包含数据安全 2.可靠性:避免其他的错误对文件造成的影响 *文件描述符:描述打开的文件在内存中维护的相关信息
    *文件的访问模式:进程访问文件必须先打开文件;内核跟踪进程打开的所有文件
    OS为每个进程维护一个打开文件表;
    文件描述符就是打开文件的标识

    文件描述符组成:
    1.文件指针:最后一次读写的位置,每个进程分别维护自己的打开文件指针
    2.文件打开计数:记录当前文件被打开的次数;以方便最后一个进程关闭文件
    该文件可以从打开文件表中去掉
    3.文件的磁盘位置:缓存数据访问信息
    4.访问权限:只读之类
    *文件的用户视图:持久的数据结构
    *文件的系统视图:文件就是字节序列,系统不关心存储在磁盘数据的数据结构
    文件是数据块的集合;块大小与扇区大小不一致
    数据块是逻辑结构;扇区是磁盘上物理存储单元
    *磁盘最小的访问单位是块
    *进程读文件:获取字节所在数据块,返回数据块对应的内容
    *进程写文件:获取对应数据块,修改数据块对应的内容;写回数据块
    *文件系统中基本操作单位是数据块;即使只读一个字节也要缓存整个块在内存
    *访问模式
    顺序访问:按照文件中字节顺序访问--大多数文件的访问模式
    随机访问:从任意位置开始--不常用但是很重要;虚拟存储使用到
    索引访问:依据数据的特征索引访问--OS上的文件系统是个小型的数据库(字典
    *文件内部结构-OS并不关心
    无结构:简单记录结构;复杂结构;
    *文件的共享与访问控制
    访问控制:用户对那些文件可以访问;以及用户访问文件的访问模式
    *文件访问控制列表ACL:<文件实体;权限>
    *用户id,用户分组设置相同权限
    *语义的一致性:规定多进程如何同时访问共享文件-OS将这个控制交给应用程序
    *分层文件系统
    文件以目录的方式组织起来:目录是一种特殊的文件
    目录文件的内容:文件索引表<文件名,指向文件的指针>
    目录与文件呈现的树形结构;以路径的形式标识每个文件
    *目录的操作
    搜索文件;创建文件;删除文件;列目录中文件;重命名文件;遍历路径
    *关于目录的操作都被封装在OS内核,应用程序通过系统调用实现访问目录
    *目录的实现:
    线性表或哈希表--减少搜索时间,会有冲突
    *文件别名:两个或多个文件关联同一个文件
    硬链接:多个文件项指向同一个文件
    软链接:以“快捷方式”指向其他文件
    通过存储真实文件的逻辑名称实现--存储别的文件的完整路径
    *文件目录中的循环:OS通过一些限制防止这个现象的出现
    *名字解析:和存储管理的地址翻译类似;将逻辑名对应到物理资源
    做法:依据路径名,在文件系统中找到文件的实际位置
    遍历文件目录,知道找到目标文件
    *当前工作目录:解析的时候从当前目录开始,没必要从根目录开始
    文件的路径:存在相对路径和绝对路径
    *文件系统的挂载:文件系统必须先辈挂载才可以被访问
    *文件系统的分类:
    磁盘文件系统:文件存储在存储设备上;FAT等
    数据库文件系统:文件特征可以被检索
    日志文件系统:记录文件系统的修改/事件
    网络/分布式文件系统:文件可以通过网络来共享--存在文件共享协议
    文件位于远端服务器,客户端挂载服务器文件系统
    标准文件访问被转换为远程访问
    出现的问题:文件系统安全性;一致性问题;错误处理方式
    特殊/虚拟文件系统:管道

    2.虚拟文件系统:使得系统对上层操作提供通用的文件操作接口
    位置:文件/文件系统API--虚拟文件系统--操作系统(实际文件操作)
    目的:对所有不同的文件系统的抽象
    功能:对上提供相同的文件和文件系统接口
    管理所有文件和文件系统关联的数据结构
    高效的查询例程,遍历文件系统
    对下与特定的文件系统模块进行交互
    文件系统的基本数据结构
    1.文件卷控制块:每个文件系统一个|文件系统的详细信息|块大小分配空余块等
    2.文件控制块:每个文件1个|描述文件的详细信息|访问权限拥有着数据块位置
    3.目录项:每个目录项一个|形成目录项数据结构--树形结构
    执向文件的控制块,父目录,子目录等信息
    4.文件组织结构
    vol文件卷-->dir目录树型结构-->file文件控制块-->实际文件所在的数据块
    5.文件系统的存储结构
    卷控制块--每个文件系统一个
    文件控制块--每个文件一个
    目录节点---每个目录项一个
    6.这些数据需要存储在持久的外存中,当需要的时候加载进内存
    不同的数据结构加载的时间:
    卷控制块:当文件系统挂载进内存时候
    文件控制块:当文件被访问的时候
    目录节点:遍历的时候

  • 相关阅读:
    JavaScript中的方法和属性
    vue的计算属性与方法的不同
    vue 中使用 watch 出现了如下的报错
    vue中methods函数调用methods函数写法
    ES2015箭头函数与普通函数对比理解
    leetcode Single Number python
    leetcode first bad version python
    leetcode Search for a Range python
    leetcode Longest Valid Parentheses python
    python dict traversal
  • 原文地址:https://www.cnblogs.com/sun1993/p/7747376.html
Copyright © 2011-2022 走看看