操作系统(六)| 文件系统下 文件使用 共享 保护

目录

4 空闲存储空间的管理

4.1 空闲区表

4.2 空闲块链

4.3 位图

5 文件的使用

6 文件共享

6.1 普通的文件共享方法

6.1.1 按路径名访问共享文件

6.1.2 链接法

6.1.3 基本文件目录BFD

6.2 基于I节点的文件共享方法(Unix采用)

6.2.1 硬链接

6.2.3 符号链接

7 文件保护


4 空闲存储空间的管理

4.1 空闲区表

将所有空闲区记录在一个表中。 适合连续文件的外存分配与回收。如今很少用

4.2 空闲块链

把所有空闲块链成一个链,适合离散分配

扩展: ①不断地适度增加块大小 从最早的512B 1KB  2KB  4KB  8KB  16KB  32KB  64KB。 ②成组链接法 链上每个节点记录1组空闲块。适合大型文件系统,分配、释放快, 链占用空间少(除首组外均隐藏在空闲块中)。UNIX用之

成组连接法

4.3 位图

用一串二进制位反映磁盘空间的分配情况,每个物理块对应1位,已分配的物理块为1,否则为0 申请物理块时,可以在位图中查找为0的位,返回对应的物理块号 归还时,将对应位设置为0 描述能力强,适合各种物理结构

5 文件的使用

为方便用户使用文件,文件系统提供对文件的各种操作, 使用的形式包括系统调用或命令 ① 提供设置和修改用户对文件访问权限的操作 ② 提供建立、修改、删除目录的操作 ③ 提供文件共享、设置访问路径的操作 ④ 提供创建、打开、读、写、关闭、删除文件等操作 其中,最基本的操作是:打开、关闭、读、写文件等

为什么要 打开/关闭文件呢

open:把文件说明信息(FCB)装入内存,便于以后的快速访问。 (1)根据指定的文件路径名,查目录,找到相应文件的目录项,检查权限; (2)将文件说明信息装入内存; (3)分配一个文件id(整数)。后面通过该id实施对该文件的操作。

close: (1)释放文件说明信息所占的内存空间; (2)把文件缓冲区中已修改的内容写回文件。 很多系统限制进程打开文件的个数,用户尽可能要关闭不再使用的文件。

6 文件共享

文件共享:一个文件被多个用户或进程使用 共享的目的: 节省时间和存储空间,减少用户工作量 进程间通过文件交换信息

6.1 普通的文件共享方法

6.1.1 按路径名访问共享文件

实现简单,不需要建立另外的目录项 但路径名可能长,检索较慢

6.1.2 链接法

在相应目录项之间建立链接。即一个目录项中含有指向另一个目录项的指针。 实现方法: 在目录项中设置一个“链接属性”, 表示目录项中的“物理地址”是指向另一目录项的指针。 同时,在共享文件的目录项中包含“用户计数”。

6.1.3 基本文件目录BFD

整个文件系统有1个基本文件目录BFD: 每个文件(及目录)有1个目录项,包含系统赋予的唯一标识符ID(整数) 以及其他的文件说明信息 每个目录有1个符号文件目录SFD:除了ID = 0,1,2外, 每个目录项仅包含文件名和ID 系统把ID = 0,1,2的目录项分别作为BFD、FFD、MFD的标识符 共享方法: 若一个用户想共享另一用户的文件,只需在自己的目录文件中增加一个目录项,填上自己起的文件名和该共享文件的唯一ID即可。如ID = 6的文件。

6.2 基于I节点的文件共享方法(Unix采用)

6.2.1 硬链接

6.2.3 符号链接

在Windows中叫做 快捷方式

7 文件保护

主要涉及文件存取控制

  1. 存取控制矩阵 给出每个用户对每个文件的访问权限。 一维是所有用户,另一维是所有文件, 对应的矩阵元素是用户对文件的访问权限。 例如,访问操作分为: 读操作(r) 写操作(w) 执行操作(x) 不能执行任何操作(-) 当用户和文件较多时,很庞大。

  2. 存取控制表(Access Control List,ACL) 每个文件一张ACL,将用户分类,规定每类用户的访问权限。 例如,Unix/Linux将用户分类为: 文件主(owner) 文件主的同组用户(group) 其他用户(other)

  3. 存取权限表(Capability List,CL) 每个用户一张CL,规定对每个文件的访问权限。

  4. 口令 用户创建文件时,设置一个口令,放在文件目录中。

  5. 密码 写入时加密,读出时解密。

假定两个用户共享一个文件系统,用户A有文件a,b,e,f ,用户B有文件c,d,e,f。用户A的b和用户B的d是同一个文件。用户A的e和用户B的e不是同一个文件,用户A的f和用户B的f是同一个文件。拟定一个文件组织方案,使得A,B两个用户能够共享该文件系统而不会造成混乱

为了确保用户A和用户B能够共享文件系统而不会造成混乱,可以采用以下文件组织方案:

  1. 首先创建两个用户目录:为每个用户创建一个独立的目录,目录A和目录B。这样,用户A和用户B的文件可以分别存储在各自的目录中,避免混淆,对于用户A的e和用户B的e不是同一个文件,则可以将它们分别存放在各自的目录中,因为它们不需要共享

  2. 共享文件存放目录:对于文件f,创建一个共享文件存放目录,这确保了用户A和用户B可以共同访问和修改这些共享文件。

  3. 建立符号链接:对于用户A的b和用户B的d是同一个文件,则可以在用户A的目录中创建一个符号链接,指向用户B的文件d。这样,用户A可以访问和操作这个文件,同时避免重复存储。

通过以上的文件组织方案,用户A和用户B可以共享文件系统,各自管理自己的文件,并且能够访问和修改共享文件,同时避免重名文件和混淆。这样可以确保文件系统的整体有序性和可维护性。

已知某文件系统采用多级目录结构,逻辑块和物理块大小均为1KB,目录当做文件,采用目录项+I结点的方式。假定要读取文件/a/b/c.dat的第10600-10900个字节,针对连续结构,基本链式结构,FAT和单级索引结构这四种情况,回答下列问题

1 给出读盘过程

2 给出读盘次数(如果有必要,可以对本题未给出的条件做出合理假设)

  1. 读盘过程:

  • 连续结构:根据文件/a/b/c.dat在目录中的信息,找到其起始逻辑块号。然后根据逻辑块号和文件系统的块映射关系,直接读取对应的物理块

  • 基本链式结构:根据文件/a/b/c.dat在目录中的信息,找到对应的I节点编号。从I节点中读取文件的索引结构,逐级跳转到链式结构中的下一个块,直到找到包含所需字节范围的块。然后从该块中读取所需字节。

  • FAT(文件分配表)结构:根据文件/a/b/c.dat在目录中的信息,找到对应的I节点编号。从I节点中读取文件的索引结构,根据FAT表的信息,依次读取块链中的物理块,直到找到包含所需字节范围的块。然后从该块中读取所需字节。

  • 单级索引结构:根据文件/a/b/c.dat在目录中的信息,找到对应的I节点编号。从I节点中读取文件的索引结构,根据单级索引指向的块,再根据块内的索引信息找到包含所需字节范围的块。然后从该块中读取所需字节。

  1. 读盘次数:

  • 连续结构:只需进行一次读取,因为连续结构中的数据是连续存储的。

  • 基本链式结构:根据所需字节范围的位置,可能需要多次读取。每次读取都需要跳转到下一个块。

  • FAT结构:根据所需字节范围的位置,可能需要多次读取。每次读取都需要根据FAT表的信息找到下一个块。

  • 单级索引结构:根据所需字节范围的位置,可能需要多次读取。每次读取都需要根据索引结构中的信息找到下一个块。

需要注意的是,以上的读盘次数可能还会受到文件系统的缓存策略等因素的影响,这里只是基于给出的情况做出的合理估计。

为某一个应用场景设计一个文件系统,所设计的文件系统不能建立在已有的文件系统的基础上。具体要求如下:

1 举一个应用场景的例子,说明该场景下对文件系统的具体需求

2 针对具体需求给出一种文件系统的设计方案

3 对你的设计方案进行评价

  1. 应用场景示例:智慧农业控制嵌入式系统。在智慧农业系统中,用户可以通过手机或者智能音箱等设备来控制农场中的各种设备,如灯光、温度、安防等。在这个场景中,文件系统被用于存储和管理各类设备的配置文件、日志文件等数据。

  2. 文件系统设计方案:

考虑到智慧农业控制嵌入式系统的特点和需求,可以设计一种轻量级的文件系统,具备以下特点:

  • 简单快速: 提供简洁的操作界面和易于理解的文件组织方式,方便用户进行文件的存储、查找和管理。优化文件系统的读写性能,以满足实时控制的需求。采用文件缓存、文件索引等技术来提升文件读写效率。

  • 可靠性: 采用数据冗余和文件系统日志等机制来保证数据的完整性和可靠性,防止数据丢失或损坏。

  • 安全性: 对于敏感信息,采用加密算法进行数据保护,防止数据泄露和非法访问。

  • 灵活扩展: 设计分级的结构设计,以便未来能够支持新的设备类型、新的功能和协议。

  1. 设计方案评价:

该设计方案针对智慧农业控制嵌入式系统的需求进行了考虑,并且具备一定的可行性和可实现性。然而,对于一个完整的文件系统来说,还需要更多的细节和技术实现方面的考虑,如并发访问的处理、容错和恢复机制等。此外,还需要考虑与其他系统组件的协同工作,以确保整个智慧农业控制嵌入式系统的稳定运行和良好的用户体验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

transformer学习资料

一、NLP 自然语言处理 NLP 是机器学习在语言学领域的研究,专注于理解与人类语言相关的一切。NLP 的目标不仅是要理解每个单独的单词含义,而且也要理解这些单词与之相关联的上下文之间的意思。 常见的NLP 任务列表: 对整句的分类&#xff1…

课程32:.Net Core Web API部署IIS

这里写目录标题 🚀前言前言一、服务器环境配置1.1 安装 ASP.NET Core模块/托管捆绑包1.2 检查是否安装成功二、项目发布2.1 选择发布方式2.2 发布配置2.3 发布三、服务器部署3.1 IIS添加网站3.2 数据库链接配置3.3 让IIS支持.NET Web Api3.4 验证四、最后🚀前言 本文是《.…

Vue.js2+Cesium1.103.0 十四、绘制视锥,并可实时调整视锥姿态

Vue.js2Cesium1.103.0 十四、绘制视锥&#xff0c;并可实时调整视锥姿态 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><divclass"control"style"position: absolute;right: 50px;top: 50px…

【周报2023-11-17】

周报2023-11-17 本周的主要工作下周的工作内容 本周的主要工作 本周的主要工作的话主要是小程序页面的搭建 那截止到目前也就是今天为止的话&#xff0c;小程序的主题页面已完成百分之80% 那剩下的话就是一些细节性的问题&#xff1a;例如说首页的三张图片是一个动态轮播动画 …

SpringBoot中文乱码问题解决方案

在Spring Boot中&#xff0c;确实没有像传统Web应用程序中需要使用web.xml配置文件。对于中文乱码问题&#xff0c;你可以采取以下几种方式来解决&#xff1a; 在application.properties文件中添加以下配置&#xff1a; spring.http.encoding.charsetUTF-8 spring.http.encod…

基于轻量级yolov5的瓷砖瑕疵检测系统

该专栏仅支持购买本专栏的同学学习使用,不支持以超级会员、VIP等形式使用,请谅解!【购买专栏后可选择其中一个完整源码项目】 本文是我新开设的专栏《完整源码项目实战》 的第十二篇全源码文章,包含数据集在内的所有资源,可以实现零基础上手入门学习。前面系列文章链接如下…

714. 买卖股票的最佳时机含手续费

给定一个整数数组 prices&#xff0c;其中 prices[i]表示第 i 天的股票价格 &#xff1b;整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易&#xff0c;但是你每笔交易都需要付手续费。如果你已经购买了一个股票&#xff0c;在卖出它之前你就不能再继续购买股票了…

基于51单片机水位监测控制报警仿真设计( proteus仿真+程序+设计报告+讲解视频)

这里写目录标题 &#x1f4a5;1. 主要功能&#xff1a;&#x1f4a5;2. 讲解视频&#xff1a;&#x1f4a5;3. 仿真&#x1f4a5;4. 程序代码&#x1f4a5;5. 设计报告&#x1f4a5;6. 设计资料内容清单&&下载链接&#x1f4a5;[资料下载链接&#xff1a;](https://doc…

NX二次开发UF_CAM_ask_f_s_db_object 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_f_s_db_object Defined in: uf_cam.h int UF_CAM_ask_f_s_db_object(UF_CAM_db_object_t * db_obj ) overview 概述 This function provides the database object which is currently u…

syslog-ng 发送metric 到 Prometheus + Grafana

1: 背景: syslog-ng 作为很多linux 收集日志的重要工具,当然很多splunk 的source 也是用这个收集的,下面就介绍用 Prometheus来收集数据,然后发送到 grafana 来展示,还是很直观的。下面就来详细道来: 2: 安装 syslog-ng node exporter: Prometheus: syslog-ng exporte…

11月20日,每日信息差

今天是2023年11月20日&#xff0c;以下是为您准备的10条信息差 第一、Aboitiz与可口可乐欧洲合作伙伴公司宣布联合收购可口可乐菲律宾公司 第二、微软首席执行官纳德拉&#xff1a;OpenAI创始人Sam Altman和Brockman将加入微软 第三、WeLab于印尼推出旗下第二家数字银行 第…

yum仓库

目录 什么是yum仓库 概念 yum的实现过程 Yum的实现过程如下&#xff1a; yum的配置文件 仓库设置文件 日志文件 yum命令 yum list 显示所有可用的包&#xff0c;包名&#xff0c;支持通配符 yum list*Kernel yum info 显示包的信息 yum search ftp 查…

TEE威胁评分与评级

目录 一、攻击潜力 1.1 攻击潜力网格 1、实际经过的时间: 2、访问TOE(目标设备)

【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; SpringCloud MybatisPlus JVM 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 Feign 一、 基于 Feign 远程调用1.1 RestTemplate方式…

笔记53:torch.nn.rnn() 函数详解

参数解释&#xff1a; &#xff08;1&#xff09;input_size()&#xff1a;即输入信息 Xt 的每个序列的独热编码向量的长度&#xff0c;即 len(vocab) &#xff08;2&#xff09;hidden_size()&#xff1a;即隐变量 h 的维度&#xff08;维度是多少&#xff0c;就代表用几个数…

Keras训练一个基本体系化的分类模型流程案例

Keras训练一个基本体系化的分类模型流程案例 import numpy as np from keras.datasets import mnist from keras.utils import np_utils # 导入keras提供的numpy工具包 from keras.models import Sequential from keras.layers import Dense from keras.optimizers impo…

unity 打包exe设置分辨率

unity在2019以上版本不支持在打开的时候弹出分辨率设置的窗口&#xff0c;但是因为有些需求需要可以设置分辨率进行操作&#xff0c;我在查了好多办法后找到了解决方案&#xff0c;废话不多说开始干货。 1.先去百度云上下载这个文件 链接&#xff1a;https://pan.baidu.com/s/1…

如果重复定义宏,两个值不同,最终的值是哪一个?

task F&#xff1b; define AA 5 //定义一个宏&#xff0c;先编译 print(AA); # 5; define AA 10 //重复定义宏&#xff0c;后编译 // 后面的值会覆盖前面定义的宏&#xff0c;但不是覆盖所有域&#xff0c;按照编译顺序&#xff0c;只覆盖该位置往后的域 print&…

LeetCode Hot100之十:239.滑动窗口最大值

题目 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 提示&#xff1a; 1 < nums.length < 10^5 -10^4 < nums[i…

BUG 随想录 - Java: 程序包 com.example.xxx 不存在

目录 一、BUG 复现 二、解决问题 一、BUG 复现 背景&#xff1a;通过 feign 的最佳实践&#xff0c;将 feign 单独提取成一个微服务&#xff0c;接着在需要远程调用的微服务中引入 feign 模块&#xff0c;并在启动类通过 EnableFeignClients 声明指定的 Feign 客户端. 出现问题…