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.这些数据需要存储在持久的外存中,当需要的时候加载进内存
    不同的数据结构加载的时间:
    卷控制块:当文件系统挂载进内存时候
    文件控制块:当文件被访问的时候
    目录节点:遍历的时候

  • 相关阅读:
    Treap 树堆 容易实现的平衡树
    (转)Maven实战(二)构建简单Maven项目
    (转)Maven实战(一)安装与配置
    根据请求头跳转判断Android&iOS
    (转)苹果消息推送服务器 php 证书生成
    (转)How to renew your Apple Push Notification Push SSL Certificate
    (转)How to build an Apple Push Notification provider server (tutorial)
    (转)pem, cer, p12 and the pains of iOS Push Notifications encryption
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 2/2
    (转)Apple Push Notification Services in iOS 6 Tutorial: Part 1/2
  • 原文地址:https://www.cnblogs.com/sun1993/p/7747376.html
Copyright © 2011-2022 走看看