热门标签 | 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等算法


推荐阅读
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 本文详细介绍了MicroATX(也称Mini ATX)和MATX主板规格,探讨了它们的结构特点、应用场景及对电脑系统成本和性能的影响。同时,文章还涵盖了相关操作系统的实用技巧,如蓝牙设备图标删除、磁盘管理等。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文详细介绍了 MySQL 的查询处理流程,包括从客户端连接到服务器、查询缓存检查、语句解析、查询优化及执行等步骤。同时,深入探讨了 MySQL 中的乐观锁机制及其在并发控制中的应用。 ... [详细]
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社区 版权所有