• 操作系统学习笔记——第六章 文件管理


    在学习操作系统时总结了笔记,并分享出来,特别是蓝色和红色字体。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

    参考书:《操作系统》谌卫军等,清华大学出版社,2012年5月
    参考视频:清航全套计算机专业课视频

    目录

    第六章 文件管理

    1.文件
    2.目录
    3.文件系统的实现

    第六章 文件管理

    可以从两种不同的观点来看待文件系统:

    -用户观点:关心的是文件系统所提供的对外的用户接口,包括文件如何命名、如何保护、如何访问(创建、打开、关闭、读、写等);

    -操作系统观点:关心的是如何来实现与文件有关的各个功能模块,包括如何来管理存储空间、文件系统的布局、文件的存储位置等。

    1.文件

    文件的结构

    -指文件的逻辑结构,即文件系统提供给用户的文件结构形式,它独立于在外存上的物理存储结构。

    -无结构:整个文件由一序列无结构的字节流组成;

    文件的分类

    普通文件(regular file):包含用户信息的文件;

    -ASCII文件:由一行行的文本组成;

    -二进制文件:非ASCII文件,通常具有某种内部的逻辑结构,为相关的应用程序所了解。

    目录文件(directory):管理文件系统结构的系统文件。

    思考:文件的属性信息存在哪?(后边讲)

    2.目录

    -文件太多了怎么办?不同的应用程序有不同类型的文件,不同的用户有不同的文件,如何对它们进行组织、分类?

    -如何对文件进行管理?当用户需要访问某个文件时,如何根据这个文件名迅速地定位到相应的文件,从而对文件的属性和内容进行各种操作?

    -解决的办法就是:目录。

    目录(directory)也称文件夹(folder),它是一张表格,记录了在该目录下的每一个文件的文件名和其他的一些管理信息。
    一般情况下,每个文件占用该表格的某一行,即一个目录项(该表格如何存放?);

    这张表格本身是以文件的形式存放在磁盘上;

    在目录的管理上,也有相关的系统调用,如:

    -创建目录create;

    -删除目录delete;

    -修改目录名rename;

    思考:如何存放?结构体数组

    思考:根目录如何存放?单独存放


    3.文件系统的实现
     

    6.1(文件)和6.2(目录)是从用户的角度来看待文件系统,用户所关心的问题是文件如何来命名、可以对文件进行哪一些操作、目录的逻辑结构是什么样的等各种与用户接口有关的问题;

    文件系统的实现来看,实现者更关心的是文件和目录是如何存储的、磁盘空间是如何管理的、如何使整个文件系统能高效、可靠地运转。

    块(block)

    -文件的逻辑结构一般是字节流;

    -对于用户而言,可以在这种字节流的基础上,构造自己所需的各种类型的数据结构,如:记录结构、树状结构、线性结构等;

    -对于文件系统而言,必须将这种字节流(一个连续的逻辑地址空间)保存在磁盘的某些扇区中;

    -通常做法:把磁盘空间划分为一个个大小相同的块(block),称为物理块;把该逻辑地址空间也分成大小相同的逻辑块,在文件系统的内部,以块为单位来进行操作;

    -一个物理块由一个或多个连续的扇区组成。

    小实验:一个文本十个字符占用(大小)10个字节,但在磁盘占用空间32KB(块的大小:32KB)

    文件系统的布局

    一个磁盘在低级格式化以后,可以用分区软件划分为若干个分区。在分区以后,磁盘的扇区0称为主引导记录(Master Boot Record,MBR),用来启动计算机,MBR的结尾是一个分区表,记录了每个分区的起始扇区和大小,其中有一个分区为活动分区;

    文件的实现需解决以下两个问题:

    -如何来描述一个文件,如何来记录文件的各种管理信息?

    -如何来存放文件,即如何把文件的各个连续的逻辑块存放在磁盘上的空闲物理块当中?如何来记录逻辑块与物理块之间的映射关系?

    如何来实现FAT?

    -想想在页式存储管理当中,如何实现逻辑页面到物理页面的映射?

    -FAT表的实现方法:在文件系统中,设置一个维的线性表格,其项数等于磁盘物理块个数,并按物理块编号的顺序建立索引。对于每一个文件,在它的FCB中记录了第一个物理块编号X1,而在FAT表的第X1项中,记录了该文件的第二个物理块编号X2,…,从而形成一个链表。

    多个文件如下:

    思考:假设每个物理块大小为4KB,每个文件最大为多少?

    假设地址为一个整数,四个字节,最多放:4K/4=1K,一共可放4KB*1K = 4M

    若文件太大,怎么办?可指向另一地址映射表。(用二级索引或三级索引)

    目录的实现

    目录的主要功能:根据用户给出的ASCIⅡ形式的文件名(路径名),迅速地定位到相应的文件控制块。目录的实现需解决以下三个问题:

    -目录项的内容;

    -长文件名问题;

    -目录的搜索方法。

    思考:若只更改了文件名,什么发生了改变?父目录发生了改变

    系统调用的实现

    在文件系统的内部,是如何来实现open、close、read、write等各种系统调用函数的?

     

    思考:搜索过程是什么样的?先读取root根目录——>读取Ann的FCB地址——>把Ann的FCB读入内存——>(在PCB中查“索引表”的)索引块(记录了每个逻辑块在哪个物理块当中)——>读入数据块——>(拼在一起)得到了Ann目录的内容——>读取mail的FCB地址——>把mail的FCB读入内存——>(在PCB中查“索引表”的)索引块(记录了每个逻辑块在哪个物理块当中)——>读入数据块——>(拼在一起)得到了mail目录的内容——>最后查找B

     

     

    类似于页式存储(给出逻辑地址,分成逻辑页面号和地址偏移,然后通过页号在页表中查找,得到物理页面号,然后和地址偏移叠加得到物理地址),此处是以块为单位的,读写文件,先要知道内容属于哪一个逻辑块,然后根据逻辑块找到所在的物理块,然后根据物理块把内容读入内存。

    在学习操作系统时总结了笔记,并分享出来,特别是蓝色和红色字体。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

  • 相关阅读:
    398. Random Pick Index
    382. Linked List Random Node
    645. Set Mismatch
    174. Dungeon Game
    264. Ugly Number II
    115. Distinct Subsequences
    372. Super Pow
    LeetCode 242 有效的字母异位词
    LeetCode 78 子集
    LeetCode 404 左叶子之和
  • 原文地址:https://www.cnblogs.com/Alliswell-WP/p/OperatingSystems_StudyNotes_5.html
Copyright © 2020-2023  润新知