文件系统

目录

一、文件与文件系统

1.文件

2.文件系统

3.磁盘空间管理

二、文件目录

三、保护

四、文件系统的实现

1.概述

2.相关术语

3.分层设计的文件系统

4.文件系统的类型

5.分区与安装

6.磁盘结构

7.内存中的结构

8.空闲空间管理

9.文件系统可靠性

10.文件系统安全性

11.文件目录检索

参考资料

一、文件与文件系统

1.文件

文件

一组带标识(文件名)的、在逻辑上有完整意义(文件内容)的信息项(单个字节,或多个字节)的序列,有名称、标示符、类型、大小等各种属性

文件属性

文件名,文件号,文件大小, 文件地址, 创建时间,最后修改时间,最后访问时间, 保护,口令,创建者,当前拥有者,文件类型,共享计数,各种标志(只读、隐藏、系统、归档、 ASCII/二进制、顺序/随机访问、临时文件、锁)

文件控制块(File Control Block)

为管理文件而设置的数据结构, 保存管理文件所需的所有有关信息(文件属性或元数据)

按文件性质和用途分类

普通文件;目录文件;特殊文件(设备文件);管道文件;套接字

文件操作

Create(创建)

Write(改写)

Read(读取)

重定位文件,文件搜索– file seek

Delete(删除)

Truncate(截去)

open(Fi):在磁盘上的目录结构中搜寻Fi的表项,然后把表项的内容移动到内存中

close(Fi):把Fi在内存中的表项内容移动到磁盘中

文件的逻辑结构

            从用户角度看文件,由用户的访问方式(顺序存取/随机存取)确定

流式文件:构成文件的基本单位是字符,文件是有逻辑意义、 无结构的一串字符的集合

e.g. 源程序文件

记录式文件:文件由若干个记录组成,可以按记录进行读、写、查找等操作每条记录有其内部结构

文件的物理结构(文件的访问方式)

      顺序结构

      链接结构(e.g. 文件分配表)

      索引结构(借助索引表实现)

      Inode结构(特殊的多级索引结构)

2.文件系统

文件系统:操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用

从操作系统角度关心怎么组织、管理文件(文件目录是怎样实现的、怎样管理存储空间、文件存储位置、与设备管理的接口)

从用户角度关心如何呈现在用户面前(文件由什么组成、如何命名、如何保护文件、可以实施操作)

统一管理磁盘空间,实施磁盘空间的分配与回收

实现文件的按名存取

名字空间-->磁盘空间

实现文件信息的共享,并提供文件的保护、保密手段

向用户提供一个方便使用、易于维护的接口,并向用户提供有关统计信息

提高文件系统的性能

提供与I/O系统的统一接口

3.磁盘空间管理

磁盘

      访盘请求需要提供:读/写,磁盘地址(设备号,柱面号,磁头号,扇区号),内存地址(源/目)

空闲空间管理

     ①空闲块表

     ②空闲块链表

           ③成组链接法

     ④位图法

用一串二进制位反映磁盘空间中分配使用情况,每个物理块对应一位,分配物理块为0,否则为1

申请物理块时,可以在位示图中查找为1的位,返回对应物理块号

        归还时,将对应位转置1

二、文件目录

文件目录

 统一管理每个文件的元数据,以支持文件名到文件物理地址的转换

 将所有文件的管理信息组织在一起,即构成文件目录

目录文件

 将文件目录以文件的形式存放在磁盘上

目录项

 构成文件目录的基本单元,目录项可以是FCB, 目录是文件控制块的有序集合

目录项信息

Name (名称)

Type(类型)

Address (地址)

Current length(当前长度)

Maximum length(最大长度)

Date last accessed (for archival)(最后访问时间)

Date last updated (for dump)(数据最后更新时间)

Owner ID (who pays)(所有者ID)

Protection information (discuss later)(保护信息)

      路径名(文件名)

绝对路径名:从根目录开始

相对路径名:从当前目录开始

      目录操作

            搜索文件、创建文件、删除文件、列出目录、复制文件、重命名文件

三、保护

文件的拥有者/创建者应该能够控制

能做什么?

由谁来做?

访问的类型

读、写、执行、追加、删除、列表

      访问列表和组

要求管理员创建一个组G,并将某些用户加入到该组中

对文件(game)或子目录,定义合适的访问控制

            访问的模式:读,写,执行       RWX

            三类用户:拥有者、组、其他

四、文件系统的实现

1.概述

2.相关术语

磁盘分区(partition):把一个物理磁盘的存储空间划分为几个相互独立的部分,称为分区

文件卷(volume):磁盘上的逻辑分区,由一个或多个物理块(簇)组成

 一个文件卷可以是 整个磁盘 或 部分磁盘 或 跨盘(RAID)

 同一个文件卷中使用同一份管理数据进行文件分配和磁盘空闲空间管理,不同的文件卷中的管理数据是相互独立的

一个文件卷上:包括文件系统信息、一组文件(用户文件、目录文件)、未分配空间

 块(Block)或 簇(Cluster): 一个或多个(2的幂)连续的扇区,可寻址数据块

格式化(format):在一个文件卷上建立文件系统,即建立并初始化用于文件分配和磁盘空闲空间管理的管理数据(元数据)

3.分层设计的文件系统

4.文件系统的类型

FAT(MS-DOS文件系统)

它是MS-DOS操作系统使用的文件系统,它也能由Windows98/NT、linux、SCO UNIX等操作系统访问。文件地址以FAT表结构存放,文件目录32B,文件名为8个基本名加上一个“.”和3个字符扩展名

FAT32(VFAT)(win98文件系统)

它是Windows98使用的扩展的DOS文件系统,它在MS-DOS文件系统基础上增加了对长文件名(最多到256B)支持

NTFS(NT文件系统)

它是Windows NT操作系统使用的文件系统,它具有很强的安全特性和文件系统恢复功能,可以处理巨大的存储媒体,支持多种文件系统

S51K/S52K(AT&T UNIX sysv)

          它是AT&T UNIX S V 操作系统使用的文件系统

ext (minix文件系统)

ext2、ext3、ext4(linux文件系统)

它是Linux操作系统使用的文件系统,它是对Minux操作系统中使用的文件系统扩展(ext)的扩展。它支持256字符的文件名,最大可支持到4TB的文件系统大小

HPFS(OS/2高性能文件系统 )

它是OS/2操作系统使用的文件系统。

UFS(UNIX文件系统)

iso9660 (CD-ROM文件系统)

它是符合ISO9660标准的支持CD-ROM的文件系统,它有High sierra CD-ROM和Rock Ridge CD-ROM二种类型

proc(linux虚拟文件系统)

NFS(网络文件系统)

VFS (linux虚拟文件系统)

VFS是物理系统与服务之间的一个接口,它屏蔽各类文件系统的差异,给用户和程序提供一个统一的接口

5.分区与安装

分区可以是“生的”(raw),即没有文件系统,或是“熟的”(cooked)即含有文件系统

引导信息能存在各个分区中,并且有自己的格式。它通常为一组有序块,作为二进制文件读入内存。引导信息除了包括如何启动一个特定操作系统外,还可以有其他指令(如BootManager bootstar 8.3,Linux GRUB, GRUB - GRand Unified Bootloader)

根分区(root partition):包括操作系统内核或其他系统文件,在引导时装入内存。其他分区根据不同操作系统可以在引导时自动装入或在此之后手动装入

/root, /boot

文件系统安装表(file system mount table)

6.磁盘结构

在磁盘上,文件系统可能包括如下信息:

如何启动所存储的操作系统

总的块数

空闲块的数目和位置

目录结构以及各个具体文件等

磁盘结构包括

引导控制块(boot control block):通常为分区的第一块。如果该分区没有OS,则为空。(其他名称:引导块(Linux)、分区引导扇区(WindowsNT))

分区控制块(partition control block):包括分区详细信息,如分区的块数、块的大小、空闲块的数量和指针、空闲FCB的数量和指针等(亦称为超级块(Linux)、主控文件表(WindowsNT))

目录结构(根目录文件及其他目录文件):用来组织文件

文件控制块(FCB):包括很多文件信息,如文件许可、拥有者、大小和数据块的位置等

磁盘上文件系统的布局

7.内存中的结构

内存分区表:包含所有安装分区的信息

内存目录结构:保存近来访问过的目录信息(对安装分区的目录,可以包括一个指向分区表的指针)

系统范围的打开文件表:包括每个打开文件的FCB拷贝和其他信息

单个进程的打开文件表:包括一个指向系统范围内已打开文件表中合适条目和其他信息的指针,进程的PCB中记录了用户打开文件表的位置

文件描述符(file descriptor, Linux/UNIX)

文件句柄(file handle, Windows)

8.空闲空间管理

      为了记录空闲磁盘空间,系统需要维护一个空闲空间链表,它记录了所有空闲磁盘空间,即未分配给文件或目录的空间

9.文件系统可靠性

      抵御和预防各种物理性破坏和人为性破坏的能力

      文件系统备份

            全量备份:定期将所有文件拷贝到后援存储器

增量备份:只转储修改过的文件,即两次备份之间的修改,减少系统开销

      文件系统一致性

            问题的产生:

磁盘块 → 内存 → 写回磁盘块

若在写回之前,系统崩溃,则文件系统出现不一致

            解决方案:

设计一个实用程序,当系统再次启动时,运行该程序,检查磁盘块和目录系统

           

文件系统的写入策略

      通写(write-through)

内存中的修改立即写到磁盘,但速度性能差

 延迟写(lazy-write)

利用回写(write back)缓存的方法得到高速,但可恢复性差

 可恢复写(transaction log)

采用事务日志来实现文件系统的写入既考虑安全性,又考虑速度性能

10.文件系统安全性

      确保未经授权的用户不能存取某些文件

      文件保护机制

            用于提供安全性、特定的操作系统机制

        对拥有权限的用户,应该让其进行相应操作,否则,应禁止

        防止其他用户冒充对文件进行操作

            实现方式:

* 用户身份验证

* 访问控制

      文件的二级存取控制

审查用户的身份、审查操作的合法性

11.文件目录检索

      ①目录检索

用户给出文件名 → 按文件名查找到目录项/FCB

根据路径名检索:

全路径名:从根开始 \A\B\C\File1

相对路径:从当前目录开始 C\File1

文件寻址

根据目录项/FCB中文件物理地址等信息,计算出文件中任意记录或字符在存储介质上的地址

      问题:如何加快目录检索

            目录项分解法:即把FCB分成两部分

符号目录顶

文件名,文件号

基本目录项

除文件名外的所有字段

     

FCB目录项 + i节点

目录项:文件名 + i节点号

目录文件由目录项构成

i节点:描述文件的相关信息

每个文件由一个目录项、一个i节点和若干磁盘块构成

参考资料:

①操作系统概念(第7版,翻译版),【美】Abraham Silbers等著,郑扣根译,高等教育出版社

http://www.chinesemooc.org/mooc/4747

http://jpkc.scezju.com/czxtyl/redir.php?catalog_id=106415

注:诚恳欢迎读者对本文提出批评意见,若发现存在错误,我定第一时间修改。如果读者觉得文章对您有帮助,欢迎点赞鼓励一下哟٩(๑❛ᴗ❛๑)۶。

操作系统课程设计 【设计题目】 二级文件系统设计 【开发语言及实现平台或实验环境】 C++/VC++ 【设计目的】 (1)本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。 (2)结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。 (3)通过分对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力 【设计要求】 理解二级目录的文件系统的组织;掌握常用的数据结构;系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件;使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求: 1、 对程序的每一部分要有详细的设计分析说明 2、 程序执行的每个步骤要有具体的提示内容或输出 3、 源代码格式规范,注释不少于四分之一 4、 设计合适的测试用例,对得到的运行结果要有分析, 5、 设计中遇到的问题,设计的心得体会 6、 提交完整程序代码、课程设计报告及相关文档 【设计原理】 对采用二级文件目录的文件系统工作的机理了如指掌,对文件系统的相关操作要掌握。 【设计内容】 一、 任务 为Linux系统设计一个简单的二级文件系统。要求做到以下几点: 1.可以实现下列几条命令: login 用户登录 dir 列目录 create 创建文件 delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录 2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 二、 程序设计 1. 设计思想 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。 首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。 用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。 2. 主要数据结构和部分代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值