操作系统之文件系统的基本概念

news/2025/1/11 23:54:53 标签: 408, 操作系统

目录

用户和磁盘视角的文件

文件控制块(FCB)和索引结点(inode)

文件的操作

创建文件(create系统调用)

写文件(write系统调用)

读文件(read系统调用)

重新定位文件

删除文件(delete系统调用)

截断文件

文件保护

目的

方法

文件的逻辑结构

无结构文件

有结构文件

文件的物理结构

连续分配

链接分配

索引分配

优化机制


用户和磁盘视角的文件

  • 用户视角:文件被视为字符流或字节流,用户通过文件名来访问文件内容。
  • 磁盘视角:文件是由一系列盘块组成的集合,每个盘块包含文件数据的一部分。

文件控制块(FCB)和索引结点(inode)

  • 文件控制块(FCB)
    • 作用:存放控制文件所需的信息,实现“按名存取”。
    • 内容:包括文件名、物理位置、逻辑结构、物理结构、存取控制信息和使用信息。
  • 索引结点(inode)
    • 引入原因:减少内存中文件目录的大小,提高检索效率。
    • 磁盘索引结点:每个文件有一个唯一的磁盘索引结点,包含文件主标识符、类型、存取权限、物理地址、长度、链接计数、存取时间等。
    • 内存索引结点:文件打开时,磁盘索引结点复制到内存,包含索引结点编号、状态、访问计数、逻辑设备号、链接指针等。

文件的操作

写文件(write系统调用)

写文件操作允许用户将数据写入到文件中。这个过程包括:

读文件(read系统调用)

读文件操作允许用户从文件中读取数据。操作步骤如下:

重新定位文件

重新定位文件操作(通常通过lseek系统调用)改变文件的读写位置。这包括:

删除文件(delete系统调用)

删除文件操作从文件系统中移除指定的文件。这个过程通常涉及:

截断文件

截断文件操作将文件的大小减小到用户指定的大小。这通常包括以下步骤:

  • 创建文件(create系统调用)

    创建文件操作允许用户在文件系统中生成一个新的文件实体。这个过程通常涉及以下步骤:

  • 检查权限:系统检查用户是否有权限在指定目录下创建文件。
  • 分配FCB:系统为新文件分配一个文件控制块(FCB),并在其中填写文件名、创建时间、文件所有者等信息。
  • 分配inode:系统为新文件分配一个索引结点(inode),记录文件的物理位置、大小、访问权限等。
  • 初始化存储空间:根据文件的物理结构,系统可能会分配一个或多个磁盘块来存储文件数据。
  • 定位:系统根据文件指针确定写入位置。
  • 写入数据:系统将用户指定的数据写入到文件的相应位置。
  • 更新FCB和inode:系统更新文件控制块和索引结点,以反映文件的新大小和最后修改时间。
  • 分配新块:如果文件需要更多存储空间,系统会分配新的磁盘块。
  • 定位:系统根据文件指针确定读取位置。
  • 读取数据:系统从文件的指定位置读取数据,并将其传送到用户指定的缓冲区。
  • 更新文件指针:读取操作完成后,系统更新文件指针,以便下次操作可以从新的位置开始。
  • 设置文件指针:用户可以指定新的位置,系统将文件指针移动到该位置。
  • 检查边界:系统确保新的位置在文件的合法范围内。
  • 检查权限:系统检查用户是否有权限删除该文件。
  • 释放FCB:系统释放文件的文件控制块。
  • 释放inode:系统释放文件的索引结点。
  • 释放存储空间:系统释放文件所占用的所有磁盘块,以便这些块可以被重新使用。
  • 检查权限:系统检查用户是否有权限修改文件大小。
  • 调整大小:系统将文件大小减小到指定的大小,释放多余的数据块。
  • 更新FCB和inode:系统更新文件控制块和索引结点,以反映文件的新大小。
  • 处理剩余数据:如果文件被缩小,系统会处理剩余的数据块,可能会将其标记为可用

文件保护

目的
  • 防止文件共享时被破坏或未经允许的修改。
方法
  • 口令保护:访问文件时需提供口令。
  • 加密保护:文件加密,访问时需密钥解密。
  • 访问控制
    • 访问控制列表:规定用户及其所允许的访问类型。
    • 访问类型:读、写、执行、添加、删除、列表清单。
    • 用户访问权限:与文件属性共同限制文件访问。

文件的逻辑结构

无结构文件
  • 数据按顺序组织,适合基本信息单位操作不多的文件。
有结构文件
  • 顺序文件:通常是定长的,可以顺序存储或链式存储。
  • 索引文件:适用于定长和变长记录文件,提高检索效率。
  • 索引顺序文件:为顺序文件建立索引表,每组第一条记录有一个索引项。
  • 直接文件或散列文件:通过键值或散列函数直接决定记录的物理地址。

操作系统之文件的逻辑结构-CSDN博客

文件的物理结构

连续分配
  • 每个文件在磁盘上占有一组连续的块,支持随机存取,但可能导致外部碎片。
链接分配
  • 隐式链接:磁盘块离散分配,每个块(除最后一个)有指向下一个块的指针。
  • 显式链接:链接指针存放在内存的文件分配表(FAT)中,提高检索速度,支持随机访问。
索引分配
  • 每个文件有一个索引块,包含指向文件各块的指针,支持随机存取。

操作系统之文件的物理结构(非空闲块管理)-CSDN博客

优化机制
  • 链接方案:多个索引块链接在一起处理大文件。
  • 多层索引:类似多级页表,处理大型索引块。
  • 混合索引:结合链接分配和索引分配的优点。

http://www.niftyadmin.cn/n/5820404.html

相关文章

Android 修改SVG属性并显示图片(AndroidSvg)

引入依赖: dependencies {implementation com.caverock:androidsvg-aar:1.4 }核心代码: import com.caverock.androidsvg.SVG import org.w3c.dom.Document import java.io.StringWriter import javax.xml.transform.OutputKeys import javax.xml.tran…

PyCharm 的安装与使用(Window)

1 PyCharm 简介 PyCharm 是一款由 JetBrains 公司开发的专门用于 Python 语言开发的集成开发环境(IDE)。以下是其相关介绍: 1.1 特点与功能 智能代码编辑:提供高度智能化的代码编辑器,支持语法高亮、自动补全、代码重…

基于springboot的甘肃非物质文化网站设计与实现源码(java+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的甘肃非物质文化网站设计与实现。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 甘肃非物质…

idea下java的maven项目编译内存溢出GC overhead limit exceeded解决办法

在编译阶段出现“GC overhead limit exceeded”错误,通常与编译器本身的内存使用有关,而不是项目的运行时问题。这种情况常见于大型项目或复杂的编译设置。以下是一些具体的调整建议,帮助你在编译阶段解决内存问题: 1. 增加Java编…

案例研究:UML用例图中的结账系统

在软件工程和系统分析中,统一建模语言(UML)用例图是一种强有力的工具,用于描述系统与其用户之间的交互。本文将通过一个具体的案例研究,详细解释UML用例图的关键概念,并说明其在设计结账系统中的应用。 用…

六、Angular 发送请求/ HttpClient 模块

一、应用 HttpClient 模块 angular/common/http 中的 HttpClient 类基于浏览器提供的 XMLHttpRequest 接口。要想使用 HtpClient 模块,就要先导入 Anqular 的 HttpClientModule。大多数 Web 应用程序都会在根模块 AppModule 中导入它。 编辑 src/app/app.module.ts…

ElasticSearch 认识和安装ES

文章目录 一、为什么学ElasticSearch?1.ElasticSearch 简介2.ElasticSearch 与传统数据库的对比3.ElasticSearch 应用场景4.ElasticSearch 技术特点5.ElasticSearch 市场表现6.ElasticSearch 的发展 二、认识和安装ES1.认识 Elasticsearch(简称 ES)2.El…

Golang中的锁机制

在Go语言中,处理并发问题时通常优先考虑使用信道(channel),但在某些情况下,当信道无法解决问题时,就需要使用锁机制来处理共享内存的并发访问。Go语言提供了两种主要的锁类型:互斥锁&#xff08…