操作系统 文件管理实验报告

操作系统 文件管理实验报告实验要求实验目的与要求用高级语言编写和调试一个简单的文件系统 模拟文件管理的工作过程 从而对各种文件操作命令的实质内容和执行过程有比较深入的了解 要求设计一个 n 个用户的文件系统 每次用户可保存 m 个文件 用户在一次运行中只能打开一个文件 对文件必须设置保护措施 且至少有 Create delete open close read write 等命令 二 例题 设计一个 10 个用户的文件系统 每次用户可保存 10 个文件 一次运行用户可以打开 5 个文件 程序采用二级文件目录 即设置主目录 MFD 和用户文

实验要求

实验报告

1.实验目的

用高级语言编写和调试一个简单的文件系统,模拟文件管理的工作过程,从而对各种文件操作命令的实质内容和执行过程有比较深入的了解。

要求设计一个 n个用户的文件系统,每次用户可保存m个文件,用户在一次运行中只能打开一个文件,对文件必须设置保护措施,且至少有Create、delete、open、close、read、write等命令。

2.实验内容与要求

设计一个10个用户的文件系统,每次用户可保存10个文件,一次运行用户可以打开5个文件。

程序采用二级文件目录(即设置主目录[MFD])和用户文件目录(UED);另外,为打开文件设置了运行文件目录(AFD)。

3.流程图与模块调用

在这里插入图片描述

4.实验分析

想要完成操作系统算法,首先要弄清楚操作系统相关的专业术语。弄清各个算法的流程和目的要求。才能模拟出相关算法的过程。

一般情况下,操作系统中,文件管理提供了如下功能:

其实就是对文件进行管理。

本次实验对文件定义了如下数据结构:

class file: def __init__(self, uid, fid, name, status): self.uid = uid self.fid = fid self.name = name self.status = status 

定义了文件的id标识,文件名,状态等等。

5.运行情况

在这里插入图片描述

6.实验体会

通过本次实验,我深刻的理解了操作系统中文件管理可视化的优点。操作系统实验重在理解每一个算法的意图和目的,那么就选择适当的数据结构模拟过程就可以完成相关算法了。

文件管理系统作为一个统一的信息管理机制,可以解决海量文件存储,管理困难;查找缓慢,效率低下;文件版本管理混乱;文件安全缺乏保障;文件无法有效协作共享;知识管理举步维艰等问题。

本次实验采用python完成,IDE是pycharm。

【附】实验代码

mfd = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] # 存用户信息 ufd = [] # 存放文件 class file: def __init__(self, uid, fid, name, status): self.uid = uid self.fid = fid self.name = name self.status = status # 输出用户 def display1(): print("用户:\n1、A\t2、B\n3、C\t4、D\n5、E\t6、F\n7、G\t8、H\n9、I\t10、J\n") # 输出用户文件夹目录 def display2(arr): str = '该用户的文件目录为:\n' for index, item in enumerate(arr): if (index + 1) % 2: str += '{}、文件名:{} 文件fid:{} 文件状态:{}\t'.format((index + 1), item.name, item.fid, item.status) else: str += '{}、{}\n'.format((index + 1), item.name) print(str, '\n') # 输出命令表 def display3(): print('指令集:\n1、创建新文件\t2、删除文件\n3、打开文件\t4、关闭文件\n5、读出文件\t6、写入文件\n7、查看文件目录\t8、退出\n') display1() option = input('请输入用户名以进入UFD:') if option in mfd: files = [] # 存放属于该用户的文件 for item in ufd: if item.uid == option: files.append(item) display2(files) display3() option2 = int(input('请输入指令序号:')) while option2 != 8: if option2 == 1: if len(files) < 10: a = input('请输入新建的文件名:') p = file(option, len(files) + 1, a, 'close') ufd.append(p) files.append(p) option2 = int(input('请输入指令序号:')) else: print('最多只能创建10个文件') option2 = int(input('请输入指令序号:')) elif option2 == 2: b = int(input('请输入你需要删除文件的fid:')) for item in files: if item.fid == b: files.remove(item) print("已删除") option2 = int(input('请输入指令序号:')) elif option2 == 3: c = int(input('请输入你需要打开文件的fid:')) for item in files: if item.fid == c: item.status = 'open' print('已打开') option2 = int(input('请输入指令序号:')) elif option2 == 4: d = int(input('请输入你需要关闭文件的fid:')) for item in files: if item.fid == d: item.status = 'close' print('已关闭') option2 = int(input('请输入指令序号:')) elif option2 == 5: e = int(input('请输入你需要读取文件的fid:')) for item in files: if item.fid == e: item.status = 'read' print('已读取') option2 = int(input('请输入指令序号:')) elif option2 == 6: f = int(input('请输入你需要写入文件的fid:')) for item in files: if item.fid == f: item.status = 'write' print('已写入') option2 = int(input('请输入指令序号:')) elif option2 == 7: display2(files) option2 = int(input('请输入指令序号:')) else: print("无此用户!") 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231003.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vs2013 简单定制安装

    Vs2013 简单定制安装

    2022年3月5日
    36
  • 音响频谱测试软件_频谱分析仪有什么用

    音响频谱测试软件_频谱分析仪有什么用一、什么是频谱分析仪:在频域内分析信号的图示测试仪。以图形方式显示信号幅度按频率的分布,即X轴表示频率,Y轴表示信号幅度。二、原理:用窄带带通滤波器对信号进行选通。三、主要功能:显示被测信号的频谱、幅度、频率。可以全景显示,也可以选定带宽测试。四、测量机制:1、把被测信号与仪器内的基准频率、基准电平进行对比。因为许多测量的本质都是电平测试,如载波电平、A/V、频响、C/N、CSO、CTB、HM、…

    2022年8月11日
    5
  • 门面模式 Facade「建议收藏」

    门面模式 Facade「建议收藏」门面模式Facade动机模式定义结构要点总结笔记动机上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化.这种过多的耦合面临很多变化的挑战如何简化外部客户端和系统间的交互接口呢?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦模式定义为子系统中的一组接口提供一个**一致(稳定)**的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)结构要点总结从客户程序的角度来看,Facade模式简化了整个

    2022年8月11日
    3
  • jquery ajax 请求中多出现一次OPTIONS请求及其解决办法

    jquery ajax 请求中多出现一次OPTIONS请求及其解决办法

    2021年10月13日
    46
  • 块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别[通俗易懂]

    块存储、文件存储、对象存储这三者和分布式文件存储系统的本质区别[通俗易懂]https://blog.csdn.net/enweitech/article/details/51445087 块存储和文件存储是我们比较熟悉的两种主流的存储类型,而对象存储(Object-basedStorage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-basedStorageDevice)简称OSD。       首先,我们介绍这两种传统的存储类…

    2022年5月27日
    46
  • IMDG

    IMDG将内存作为首要存储介质不是什么新鲜事儿,在对主存的使用上,内存数据网格(InMemoryDataGrid,IMDG)与IMDB类似,但二者在架构上完全不同。IMDG特性可以总结为以下几点:数据

    2022年8月2日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号