【操作系统】实验五 文件系统

实验目的:

1. 掌握文件系统的基本概念和工作机制

2. 掌握文件系统的主要数据结构的实现

3、掌握软件系统实现算法

实验内容:

设计并实现一个虚拟的一级(单用户)文件系统程序

提供以下操作

1、文件创建/删除接口命令

2、目录创建/删除接口命令

3、显示目录内容命令

算法设计与实现(附流程图和源代码):

申明函数

void login(void); 用户登录,如果是新用户则创建用户

void init(void); 程序初始化,将所有i节点读入内存

int analyse(char *); 输入参数分析,分析用户命令

void save_inode(int); 将num号i节点保存到虚拟磁盘文件hd.dat

int get_blknum(void); 申请一个数据块

void read_blk(int); 将i节点号为num的文件读入temp

void write_blk(int); 将temp的内容写入hd.dat的数据区

void release_blk(int); 释放文件块号为num的文件占用的空间

void pathset(); 打印当前路径

void deltree(int innum); 实现删除目录树函数

int check(int); 检查用户权限

用户命令处理函数

void help(void); 命令提示帮助函数

void cd(void); 改变当前目录

void dir(void); 显示当前目录下所有文件和目录

void mkdir(void); 创建目录

void rd(void); 删除目录

void creat(void); 创建文件

void open(void); 打开

void read(void); 读文件

void write(void); 写文件

void close(void); 关闭文件

void del(void); 删除文件

void logout(void); 用户注销

void command(void); 命令管理函数

void format(void); 格式化虚拟磁盘

函数间关系:

流程图:

调试过程及实验结果(附截图):

注册用户

登陆登出

创建/进入目录

创建/打开文件

可以选择打开方式,只读,只写和读写

写文件

初始长度为0,输入想要写入的长度20,以及内容12345678916281294abc

读文件

接下来进行读取,可以看到长度为20,选择起始位置7,选择读取长度10,结果为8916281294,结果正确

删除文件

可以看到,删除文件后,再次打开就会提示文件不存在,而如果输入错命令就会提示指令错误。

删除目录

先输入cd …进入上级目录,删除之前创建的lzh目录,再次进入就会提示文件夹不存在

格式化

格式化后会清空“磁盘”,同时创建一个新的文件系统。

思考题:

  1. 单个文件的大小是否为无限的?受到哪个因素限制?

文件系统的限制: 不同的文件系统对单个文件的最大大小有限制。例如,FAT32文件系统通常限制单个文件大小为4GB,而NTFS或exFAT允许更大的文件大小。

操作系统的限制: 操作系统也可能对单个文件大小设置限制。例如,32位操作系统可能限制单个文件大小为2GB,而64位操作系统可以支持更大的文件。

硬件限制: 存储设备的硬件特性也可能对单个文件大小产生影响。某些文件系统和硬件可能限制文件的最大尺寸。

应用程序的限制: 有些应用程序也可能对单个文件大小有限制,这可能是为了确保更好的性能或适应特定的用途。

  1. 你认为一个设计成功的文件系统应该具备哪些特征?

可靠性: 文件系统应该能够保护数据免受损坏或丢失。这可能包括实现数据冗余、错误检测和纠正等机制。

性能: 文件系统应该提供高效的读写操作,适应不同类型的应用程序和工作负载。

可扩展性: 文件系统应该能够方便地扩展以适应不断增长的存储需求,而无需对整个系统进行大规模更改。

安全性: 文件系统应该提供对数据的访问控制和权限管理,以确保只有授权用户可以访问敏感数据。

兼容性: 文件系统应该能够与多种操作系统和硬件平台兼容,以便用户可以在不同环境中使用。

易用性: 文件系统应该提供用户友好的界面和操作方式,使用户能够轻松管理和使用存储空间。

恢复性: 文件系统应该具备良好的恢复机制,能够在发生错误或故障时快速自愈,以确保数据的完整性和可用性。

实验小结:

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

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

相关文章

Java基于微信小程序的小区车位租赁系统的设计与实现

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 简介技术路线需求分析用户信息管理车位信息管理车位申请管理论坛信息管理 效果图推荐阅读 简介 …

【强化学习-读书笔记】动态规划(策略评估、价值迭代、策略迭代算法)

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto动态规划 (Dynamic Programming, DP) 是一类优化方法,在给定一个用马尔可夫决策过程 (MDP) 描述的完备环境模型的情况下,其可以计算最优的策…

优化问题笔记(2)

目录 3. 约束优化问题的全局解3.1 凸优化问题3.2 二次优化问题3.3 无约束二次优化问题3.4 一个典型的二次等式约束二次优化问题 Reference 3. 约束优化问题的全局解 3.1 凸优化问题 局部解成为全局解的一类重要的优化问题是所谓凸优化问题. 我们称优化问题 ( f , D ) (f,\ma…

算法-动态规划

动态规划算法 应用场景-背包问题 介绍 动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题&#xff0…

Centos7运行pyppeteer报错Browser closed unexpectedly经验总结【必须手动安装谷歌浏览器以自动安装一些依赖】

参考解决方案:pyppeteer.errors.BrowserError: Browser closed unexpectedly - Stack Overflow ldd ~/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome | grep not found 注意:安装google-chrome是为了安装这些缺失的so库&#xff0…

针对这两个趋势,3.0全新新零售商业模式可以采取以下策略:

国内市场确实存在“消费升级”和“消费降级”两个趋势,这是由于不同消费者群体的需求和购买力存在差异。消费升级主要发生在高端市场,消费者愿意为高品质、高价值、高价格的商品和服务付出更多。而消费降级则主要发生在中低端市场,消费者更加…

修改antd表单Form.Item的label颜色的方法

默认的Form.item的标签颜色为黑色,但是如果我是用深色背景,这样的情况下表单就看不清楚label了,就像下面的情况,密码两个字完全看不到,所以想把它改为白色字体,就像上面的账号两个字一样: 所以怎…

随笔记录-springboot_LoggingApplicationListener+LogbackLoggingSystem

环境:springboot-2.3.1 加载日志监听器初始化日志框架 SpringApplication#prepareEnvironment SpringApplicationRunListeners#environmentPrepared EventPublishingRunListener#environmentPrepared SimpleApplicationEventMulticaster#multicastEvent(Applicati…

HarmonyOS ArkTS Tab使用方法(十五)

一,使用方法 Android中Java代码使用fragment进行Tab切换,下面使用HarmonyOS ArkTS 语言实现Tab的使用,代码如下: /** Copyright (c) 2022 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "…

(4)Linux的Redirect 重定向以及打包与压缩

💭 写在前面 本章仍然是继续对Linux 常用指令进行介绍,将讲解重定向、时间相关的指令、文件查找和打包压缩等指令。我们将初次理解 "Linux下一切皆文件"这一概念,我将通过一个有趣的故事去讲解它。 初识重定向(Redire…

如何在本地Docker中部署MinIO服务并实现远程访问管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器,可以在各种环境中运行,例如本地、Docker容器、Kubernetes集群等。它兼…

全国巡展“2024人工智能展·世亚智博会”3月上海·4月杭州·6月北京

近年来,我国积极布局人工智能产业,竞跑“未来赛道”。随着各行业、各领域对人工智能需求的日益增长,与实体经济深度融合的新模式不断涌现,形成了具有中国特色的研发体系和应用生态,引领着经济社会各领域从数字化、网络…

web前端项目-影视网站开发

影视网站 本项目主要使用到了 HTML&#xff1b;CSS&#xff1b;JavaScript脚本技术&#xff1b;AJAX无刷新技术&#xff1b;jQuery等技术实现了动态影视网页 运行效果&#xff1a; 一&#xff1a;index.html <!DOCTYPE> <html lang"en"> <head>…

python采集电影数据JS逆向, 并制作可视化

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用&#xff1a; Python 3.10 Pycharm nodejs 模块使用&#xff1a; requests -> pip install requests execjs -> pip install pyexecjs json …

电流源输出的是直流电还是交流电(高精度电流源)

电流源是一种能够提供电流输出的电子设备&#xff0c;它可以产生直流电流或交流电流&#xff0c;具体取决于其设计和应用的需要。 首先&#xff0c;我们来讨论电流源输出直流电的情况。直流电是指电流的方向始终保持不变的电流形式。在一些特定的应用中&#xff0c;需要稳定的、…

【全志T113-i】OK113i-S开发板-适配10寸LCD显示

前言 本文介绍如何在OK113i-S开发板上适配一个自己的10寸LCD。 OK113i-S 是一个优秀的开发板&#xff0c;支持lvds 单8&#xff0c;双8显示&#xff0c;最大分辨率1280x800 也支持RG666显示&#xff0c;由于我手头只有lvds 单8&#xff0c;40pin的显示器&#xff0c;今天我就…

设计模式—装饰模式

与其明天开始&#xff0c;不如现在行动&#xff01; 文章目录 装饰模式—穿衣服&#x1f48e;总结 装饰模式—穿衣服 装饰模式&#xff08;Decorator&#xff09;可以动态的给对象添加一些额外的职责。 Component是定义一个对象接口&#xff0c;可以给这些对象动态地添加职责。…

Flutter ios 使用ListView 。滚动时 AppBar 改变颜色问题

在Ios 中 列表滚动条向下滚动一段距离后 会导致 AppBar 颜色改变 可以给 AppBar 或者 AppBarTheme。 scrolledUnderElevation: 0.0 属性 全局&#xff1a; MaterialApp(theme: ThemeData(appBarTheme: AppBarTheme(scrolledUnderElevation: 0.0)) ) 局部&#xff1a; App…

代码随想录算法训练营第二十天 |654.最大二叉树 、 617.合并二叉树 、700.二叉搜索树中的搜索 、 98.验证二叉搜索树

今天学习内容&#xff1a;654.最大二叉树 、 617.合并二叉树 、700.二叉搜索树中的搜索 、 98.验证二叉搜索树 讲解&#xff1a;代码随想录 654.最大二叉树 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 最大二叉树的构建过程如上&#xff0c;图…

STM32----HAL库函数

1.STM32系统框架 1.1 Cortex-M内核&芯片 1.2 F1系统框架 4个主动单元4个被动单元 AHB&#xff1a;高级高性能总线 APH&#xff1a;高级外围总线 其中 1 为 主动单元 &#xff0c; 2为被动单元 总线时钟频率&…