文件管理系统(操作系统)——9张思维导图

2023-11-19

文件管理系统

在这里插入图片描述
在这里插入图片描述

1.文件管理

在这里插入图片描述

1.1.一个文件的逻辑结构

比如一个文本txt文件,又或者Excel文件,在我们用户看来,它是长什么样的,这个就是逻辑结构

  1. 几个概念

    1. “逻辑结构”,就是指在用户看来, 单个文件内部的数据应该是如何组织起来的。
    2. “物理结构”指的是在操作系统看来,单个文件的数据是如何存放在外存中的。
    3. 顺序存储
      逻辑上相邻的记录 物理上也相邻(类似于顺序表)
    4. 链式存储
      逻辑上相邻 的记录物理上不一定相邻 (类似于链表)
    5. 串结构
      文件里的记录存放顺序跟关键字无关,通常按时间先后存放
    6. 顺序结构
      文件里的记录存放顺序跟关键字相关
  2. 无结构文件
    文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”

  3. 有结构文件(重点)在这里插入图片描述

    1. 顺序文件
      • 链式存储
        无论是定长还是可变的记录,都无法实现随机存取,因为物理上不一定相邻,没办法通过地址加减快速定位记录。因此只能从第一个记录开始依次往后查找
      • 顺序存储
        • 可变长记录
          无法实现随机存储,因为物理块大小(面积)不同,也没办法直接通过起始地址+第i个记录*定长得到物理地址。因此只能从第一个记录开始依次往后查找
        • 定长记录
          • 可以实现随机存取,若定长为L,则第i个记录存放的相对位置是i*L
          • 若采用串结构,没办法根据关键字获取对应记录(注意理解,只是不能通过关键字获取)
          • 若采用顺序结构,可以快速找到关键字对应记录(如折半查找)
        • 顺序存储的缺点,不方便增加删除记录
    2. 索引文件
      • 对于可变长记录文件,要找到第 i 个记录,必须先顺序第查找前 i-1 个记录, 但是很多应用场景中又必须使用可变长记录。如何解决这个问题?
      • 建立一张索引表——变成顺序存储中的定长记录模式。每条记录对应一个索引项。这样一来解决了顺序文件链式存储和顺序文件顺序存储中的可变长记录两种随机查找问题;方便增加删除记录
        • 可以把索引表理解成这个文件的隐藏头部内容,然后其他就是用户看到的记录
      1. 索引文件缺点,索引表(比如Excel表)每条记录对应一条索引,占用空间大
    3. 顺序索引文件
      • 将记录分组,每组对应一个索引表项,理解成存放在文件逻辑地址空间头部(为什么在win系统创建一个空Excel文件,也有大小?)
      • 检索记录时先顺序查索引表,找到分组再顺序查找分组
      • 当记录过多可以建立多级索引表

1.2.文件目录

在介绍一个文件的物理结构之前,我们需要知道文件存放在哪,即怎么找到目标文件,所以先介绍下文件目录。在我看来,文件目录其实就是一种特殊的文件,只不过这种特殊的文件,记录的内容是每个文件的文件名,文件大小,创建时间,外存物理地址等等

  1. 文件目录的实现
    • 一个文件对应一个文件控制块FCB,一个FCB就是一个目录项,多个FCB组成文件目录
    • 对目录的操作,搜索、创建文件、删除文件、显示文件、修改文件
    • FCB 中包含了文件的基本信息(文件名、物理地址、逻辑结构、物理结构等)
  2. 目录结构
    • 单级目录结构
      一个系统只有一张目录表,不允许文件重名
    • 两级目录结构
      不同用户的文件可以重名,但是不能对文件分类
    • 多级目录结构
      • 不同目录下的文件可以重名,也可以对文件分类,但是不方便文件共享
      • 操作系统根据文件路径找到目标文件
      • 绝对路径,从根目录出发
      • 相对路径,从当前路径出发
    • 无环图目录结构
      在多级(树形)目录结构的基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图
      为共享结点设置一个共享计数器,计数器为0才会真正删除该结点
  3. 索引结点(重点理解)
    • 除了文件名以外其他信息放在索引结点中,每个文件都对应一个索引结点
    • 目录项只包含文件名、索引结点指针,因此每个目录项的空间大小会大幅减小
    • 由于目录项空间大小(也可以说比特长度)减小,因此每个磁盘块可以放的下更多的目录项,因此检索文件时磁盘I/O的次数变小很多
  4. 补充
    • 磁盘块
      磁盘块,应该跟内存划分的物理块概念差不多,单位最小,文件目录划分成一个个目录项,塞到磁盘块里
    • 磁盘I/O次数
      磁盘I/O次数是访问磁盘块次数,如果一个磁盘块能放下一个文件目录所有的目录项,那么磁盘I/O次数就是1

1.3.一个文件的物理结构

文件数据应该怎么样存放在外存中

在这里插入图片描述
索引分配——索引表实现

在这里插入图片描述

三种分配方式对比

在这里插入图片描述

1.4.文件存储空间管理

在这里插入图片描述

1.5.文件基本操作

在这里插入图片描述

1.6.文件共享

在这里插入图片描述

1.7.文件保护

在这里插入图片描述

2.磁盘组织与管理

2.1.磁盘的结构

在这里插入图片描述

2.2.磁盘的调度算法

在这里插入图片描述

2.3.磁盘的管理

在这里插入图片描述

文件系统实例

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件管理系统(操作系统)——9张思维导图 的相关文章

  • 模拟实现 队列 - JAVA(使用链表,数组)

    以链表实现 以数组实现 以链表实现 class Node public int val public Node next public Node int val this val val public class MyQueue publi
  • Java堆的自动垂直缩放

    多年以来 java一直是贪婪的应用程序的同义词 这种类型的应用程序在晚上打开冰箱并吞噬所有可用资源 直到崩溃 该行为的主要原因是缺乏一种有效的方式来将操作系统在Java堆中分配且不再使用的内存交还给操作系统 However with the
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • Elasticsearch 日志

    下载并安装 Filebeat 首次使用 Filebeat 请参阅入门指南 复制代码片段 curl L O https artifacts elastic co downloads beats filebeat filebeat 7 2 0
  • 操作系统 段页式存储管理

    一 引入 分页系统是以页面作为内存分配的基本单位 能有效地提高内存利用率 但信息共享等不方便 分段系统是以段作为内存分配的基本单位 它能够更好地满足用户多方面的需要 信息共享 动态链接等 但采用分区方式管理物理内存 仍然存在碎片问题 段页式
  • 自己动手写操作系统(一)

    本系列文章将一步步实现一个简单的操作系统 实验环境是在Linux系统下通过Bochs虚拟机运行我们自己写的操作系统 一 实验环境搭建 1 Ubuntu的安装 Windows用户可以选择在虚拟机中安装Ubuntu 具体安装教程可自行搜索 2
  • C语言单向循环链表的建立

    1 头文件 include
  • 数据结构之链表增删查改(最详细注释和最清晰思路,附完整代码)

    PZK学数据结构之链表 史上最详细思路和代码注释 完整代码我放在最后面了 可以直接跑 方便大家cv编程 文章目录 PZK学数据结构之链表 史上最详细思路和代码注释 完整代码我放在最后面了 可以直接跑 方便大家cv编程 前言 一 链表是什么
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • OS——文件管理系统磁盘的结构之搞清盘面和柱面

    如上图 每个柱面有三个盘面 即就是3个磁道 柱面可以抽象的理解成是一个套一个的立体的同心圆柱体 例 2019年408真题 磁盘有300个柱面 每个柱面有10个磁道 每个磁道有200个扇区 扇区大小为512B 则磁盘容量 分析 每个柱面有10
  • linux 使用systemctl 启动服务报错: Error: No space left on device

    By default Linux only allocates 8192 watches for inotify which is ridiculously low And when it runs out the error is als
  • C/C++---------------LeetCode第876. 链表的中间结点

    链表的中间结点 题目及要求 双指针 在main内使用 题目及要求 给你单链表的头结点 head 请你找出并返回链表的中间结点 如果有两个中间结点 则返回第二个中间结点 示例 1 示例 2 双指针 思路 分别定义快慢指针即慢指针一次走一步 快
  • 链表【1】

    文章目录 2 两数相加 1 题目 2 算法原理 3 代码实现 445 两数相加 II
  • 算法题-简单系列-04-链表中倒数最后k个结点

    文章目录 1 题目 1 1 快慢指针 1 题目 输入一个长度为 n 的链表 设链表中的元素的值为 ai 返回该链表中倒数第k个节点 如果该链表长度小于k 请返回一个长度为 0 的链表 1 1 快慢指针 代码中的类名 方法名 参数名已经指定
  • 算法题-简单系列-03-判断链表中是否有环

    文章目录 1 题目 1 1 思路1 双指针 1 2 思路2 哈希表 1 题目 判断给定的链表中是否有环 如果有环则返回true 否则返回false 1 1 思路1 双指针 我们使用两个指针 fast 与 slow 它们起始都位于链表的头部
  • 算法题-简单系列-05-两个链表的第一个公共结点

    文章目录 1 题目 1 1 思路1 循环遍历 1 题目 输入两个无环的单向链表 找出它们的第一个公共结点 如果没有公共节点则返回空 1 1 思路1 循环遍历 使用两个指针N1 N2 一个从链表1的头节点开始遍历 我们记为N1 一个从链表2的
  • 【数据结构/C++】树和二叉树_二叉链表

    include
  • LeetCode21. Merge Two Sorted Lists

    文章目录 一 题目 二 题解 一 题目 You are given the heads of two sorted linked lists list1 and list2 Merge the two lists into one sort
  • 【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】

    算法题 算法刷题专栏 面试必备算法 面试高频算法 越难的东西 越要努力坚持 因为它具有很高的价值 算法就是这样 作者简介 硕风和炜 CSDN Java领域新星创作者 保研 国家奖学金 高中学习JAVA 大学完善JAVA开发技术栈 面试刷题
  • 八股文打卡day20——操作系统(3)

    面试题 线程同步的方式有哪些 我的回答 多线程同时访问和修改某个数据的话 会造成数据的不一致和冲突问题 所以就需要线程同步 线程同步的方式有 1 互斥锁 互斥锁就是 当一个资源被访问和操作时 会对这个资源加锁 把这个资源锁定 其他线程不能对

随机推荐

  • linux服务器使用gustat指令查看gpu显卡的使用情况(比nvidia-smi好用)

    使用gpustat指令需要先安装gpustat 安装需要root权限 apt install gpustat 查看gpu使用情况 gpustat nvidia smi gpustat相比于nvidia smi查看的信息更加详细 可以看到使用
  • flex布局宽高度设置不成功

    flex布局中 会出现是在宽高 但是不起作用 那是因为flex布局当不够的时候自动压缩了 可以选择 让其不压缩 flex shrink 0 然后在设置宽高 或者利用复合属性 flex 0 0 83rpx 这篇博客是对flex布局的讲解 以及
  • 如何给证件照换一个背景颜色

    我们在考试报名的时候 经常是不同的考试需要不同的登记照尺寸和背景颜色 但是我们基本上不可能每种颜色的证件照都去拍一张吧 那样也太麻烦成本也太高 所以通过前端实现了一个改变证件照背景颜色的方法 他可以将证件照的背景颜色修改为任意的颜色 而不局
  • 微信小程序支付中的prepay_id获取方法,以及微信支付统一签名算法闭坑

    class Wechat 公众号的或者小程序支付参数 private appId private appSecret 商家的配置信息 private mch id private mch key 回调地址 public notify url
  • 前台与后台数据交互

    后台取到的数据在前台应该用EL表达式显示 xx xx 如果要给前台单选按钮赋值 需要用js进行判断 满足条件后 id attr checked true false 设置选中状态 设置单选按钮及下拉列表不可用是disabled disabl
  • for循环之斐波拉契数列

    题目大意 菲波那契数列是指这样的数列 数列的第一个和第二个数都为1 接下来每个数都等于前面2个数之和 给出一个正整数k 要求菲波那契数列中第k个数是多少 Input 输入一行 包含一个正整数k 1 lt k lt 46 Output 输出一
  • 在C++中调用OpenSSL库进行编程

    目录 OpenSSL简介 下载OpenSSL库并配置实验环境 OpenSSL库的加密函数的认识 使用 EVP 库实现 DES 和 AES 加密 EVP EncryptUpdate 函数参数详解 OpenSSL加密实践 RSA 密钥生成 RS
  • 第一次面试前端实习生心得

    今天第一次去面试前端岗位的实习生 公司规模不算大吧 不过也有好几个部门 说说我的面试心得吧 首先是hr面 如下是她问的问题 学这个多久了 大四还有没有课 是否只需完成毕业设计就行了不用上课 同学暑假都在干嘛 学校课程学了什么 同学们主要找哪
  • (转载)我们需要什么样的字段类型

    数据库定义到char类型的字段时 不知道大家是否会犹豫一下 到底选char nchar varchar nvarchar text ntext中哪一种呢 结果很可能是两种 一种是节俭人士的选择 最好是用定长的 感觉比变长能省些空间 而且处理
  • Java 两种zero-copy零拷贝技术mmap和sendfile的介绍

    详细介绍了两种zero copy零拷贝技术mmap和sendfile的概念和基本原理 目录 1 标准IO 2 零拷贝 2 1 sendfile调用 2 1 mmap调用 2 2 MQ中的应用 1 标准IO 很多软件是基于server cli
  • MES在流程和离散型制造企业的应用存在哪些差别?

    企业的生产方式 主要可以分为按定单生产 按库存生产或上述两者的组合 从生产类型上考虑 则可以分为批量生产和单件小批生产 从产品类型和生产工艺组织方式上 企业的行业类型可分为流程生产行业和离散制造行业 典型的流程生产行业有医药 石油化工 电力
  • C++ 拷贝构造函数和赋值运算符

    本文主要介绍了拷贝构造函数和赋值运算符的区别 以及在什么时候调用拷贝构造函数 什么情况下调用赋值运算符 最后 简单的分析了下深拷贝和浅拷贝的问题 拷贝构造函数和赋值运算符 在默认情况下 用户没有定义 但是也没有显式的删除 编译器会自动的隐式
  • Direct3D光照

    光照的组成 环境光 这种类型的光经其他表面反射到达物体表面 并照亮整个场景 要想以较低代价粗略模拟这类反射光 环境光是一个很好的选择 漫射光 这种类型光沿着特定的方向传播 当它到达某一表面时 将沿着各个方向均匀反射 无论从哪个方位观察 表面
  • Spring的资源访问接口---Resource

    JDK提供的访问资源的类 File等 不能很好满足各种某些资源的访问需求 比如缺少从类路径和Web容器的上下文中获取资源的资源操作类 Spring的Resource接口提供了更好用的资源访问能力 Spring使用Resource访问各种资源
  • linux 交叉编译找不到库文件

    网上大众的作法这里不做介绍 在编译一些库的时候可能某些工具会用到宿主机的 而这些工具在调用的时候会找和宿主机匹配的库 而交叉编译的库是不能用的 遇见这种情况基本是解决不了的 但是可以通过configure 的选项去掉这些过程 举个例子 我在
  • MySQL多列字段去重的案例实践

    同事提了个需求 如下测试表 有code cdate和ctotal三列 select from tt 现在要得到code的唯一值 但同时带着cdate和ctotal两个字段 提起 唯一值 想到的就是distinct distinct关键字可以
  • Nodejs版本管理工具mvn部署

    部署mvn curl o https raw githubusercontent com creationix nvm v0 34 0 install sh bash 添加环境变量 vim zshrc export NVM DIR HOME
  • Webpack中的tree-shaking

    文章目录 Webpack中的tree shaking 简单实践 副作用sideEffects sideEffects配置项 false 数组 结论 Webpack中的tree shaking tree shaking就是把js文件中无用的模
  • 【编程题】——求链表的中间节点

    题目 求链表的中间结点 如果链表中结点总数为奇数 返回中间结点 如果结点总数是偶数 返回中间两个结点的任意一个 思路 定义两个指针 一个指针一次走一步 另一个指针一次走两步 当走得快的指针到达链表末尾的时候 走得慢的指针刚好达到链表的中间节
  • 文件管理系统(操作系统)——9张思维导图

    文件管理系统 1 文件管理 1 1 一个文件的逻辑结构 比如一个文本txt文件 又或者Excel文件 在我们用户看来 它是长什么样的 这个就是逻辑结构 几个概念 逻辑结构 就是指在用户看来 单个文件内部的数据应该是如何组织起来的 物理结构