热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

操作系统学习笔记:第十二章文件系统管理与设计

文件系统管理与设计涉及众多内容,课堂讲解较为简略。本章主要介绍了以下几点:1.基本概念-文件系统:一种用于实现数据持久性存储的系统抽象。-文件:文件系统中的基本存储单元,包含一组相关数据。文件系统通过文件组织和管理数据,提供高效的数据访问和管理机制。此外,还涵盖了文件的属性、类型和操作方法。

文件系统

内容比较多,老师讲得比较浅。


1. 基本概念


  • 文件系统和文件
    • 文件系统:一种用于持久性存储的系统抽象
    • 文件:文件系统中一个单元的相关数据在操作系统中抽象
    • 文件系统的功能:
      • 分配文件磁盘空间(管理文件块;管理空闲空间;分配算法)
      • 管理文件集合(定位;命名;最常见的是分层文件系统)
      • 提供便利及特征(保护;可靠性/持久性)
    • 文件和块:文件属性,存储在文件块中,表示文件的表征属性
  • 文件描述符:【内容较多,只记录部分】(用户角度)需要元数据数据来管理打开文件
    • 文件指针:指向最近的一次读写文职,每个打开了这个文件的进程都这个指针
    • 文件打开计数:记录文件打开的次数。当最后一个进程关闭了文件时,允许将其从打开文件表中移除
    • 文件磁盘位置:缓存数据访问信息
    • 访问权限:每个程序访问模式信息
  • 目录
    • 文件以目录的方式组织起来。目录是一类特殊的文件。早期的文件系统是扁平的,只有一层目录。采用目录可以建立层次结构。目录是文件名的线性表,包含了指向数据块的指针。
    • 典型操作:搜索、拆功能键、删除、重命名文件;枚举目录;在文件系统中遍历一个路径。
    • 操作系统应该只允许内核模式修改目录:确保映射的完整性;应用系统可以读目录(例如ls)
  • 文件别名
    • 多个文件名关联同一个文件。有两种实现方式:硬链接(多个文件项指向一个文件);软链接(以“快捷方式”指向其他文件)。
  • 文件系统种类
    • 磁盘文件系统
    • 数据库文件系统
    • 日志文件系统
    • 网络/分布式文件系统
    • 特殊/虚拟文件系统

2. 虚拟文件系统


  • 目的:将复杂的不同类型的系统抽象,通过建立虚拟文件系统,提供文件系统API,屏蔽底层系统的差异性,使得系统应用层面更广。
  • 功能:
    • 提供相同的文件和文件系统接口
    • 管理所有文件和文件系统关联的数据结构
    • 高效查询例程,遍历文件系统
    • 与特定文件系统模块的交互
  • 基本文件系统包括:卷控制块 superblock;文件控制块 vnode/inode;目录节点 dentry

3. 数据缓存


  • 数据块按需读入内存
  • 数据块使用后被缓存
  • 两种数据块缓存方式
    • 普通缓冲区缓存
    • 页缓存:统一缓存数据块和内存页

4. 打开文件的数据结构

存在锁机制


5. 文件分配

对文件的管理。即如何为一个文件分配数据块

分配方式


  • 连续分配
  • 链式分配
  • 索引分配

指标:


  • 高效:如存储利用
  • 表现:如访问速度

6. 空闲空间列表

主要体现在磁盘管理。用位图/链式管理空闲空间。


7. 多次盘管理 - RAID

通常磁盘通过分区来最大限度减小寻道时间。

文件系统由分区组成。分区即为硬件磁盘的一种适合操作系统指定格式的划分

卷:一个拥有一个文件系统实例的可访问的存储空间,通常常驻在磁盘的单个分区上。

使用多个并行磁盘来增加吞吐量,通过冗余的方式提高可靠性和可用性。由此产生 冗余磁盘阵列RAID的概念。


8. 磁盘调度

算法与进程调度相似,执行对象为磁盘检索。

电梯算法、SSTF\SCAN\CSCAN\FSCAN\N-Step-SCAN等算法


推荐阅读
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 知识图谱与图神经网络在金融科技中的应用探讨
    本文详细介绍了融慧金科AI Lab负责人张凯博士在2020爱分析·中国人工智能高峰论坛上的演讲,探讨了知识图谱与图神经网络模型如何在金融科技领域发挥重要作用。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • MySQL InnoDB 存储引擎索引机制详解
    本文深入探讨了MySQL InnoDB存储引擎中的索引技术,包括索引的基本概念、数据结构与算法、B+树的特性及其在数据库中的应用,以及索引优化策略。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • Windows操作系统提供了Encrypting File System (EFS)作为内置的数据加密工具,特别适用于对NTFS分区上的文件和文件夹进行加密处理。本文将详细介绍如何使用EFS加密文件夹,以及加密过程中的注意事项。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文详细介绍了笔记本电脑上多种实用的快捷键,包括屏幕调整、图形设置、分辨率更改、驱动更新、导航操作、音量控制及屏幕锁定等,旨在帮助用户更高效地使用笔记本电脑。 ... [详细]
  • 菜鸟物流用户增长部现正大规模招聘P6及以上级别的JAVA工程师,提供年后入职选项。 ... [详细]
  • 深入解析层次聚类算法
    本文详细介绍了层次聚类算法的基本原理,包括其通过构建层次结构来分类样本的特点,以及自底向上(凝聚)和自顶向下(分裂)两种主要的聚类策略。文章还探讨了不同距离度量方法对聚类效果的影响,并提供了具体的参数设置指导。 ... [详细]
  • 深入理解云计算与大数据技术
    本文详细探讨了云计算与大数据技术的关键知识点,包括大数据处理平台、社会网络大数据、城市大数据、工业大数据、教育大数据、数据开放与共享的应用,以及搜索引擎与Web挖掘、推荐技术的研究及应用。文章还涵盖了云计算的基础概念、特点和服务类型分类。 ... [详细]
author-avatar
阿穆尔湾的阿娜莎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有