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

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

实验要求


实验目的与要求

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

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

二、例题:

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

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

为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作

算法与框图:

因系统小,文件目录的检索使用了简单的线性搜索。文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。

程序中使用的主要设计结构如下:

主文件目录和用户文件目录( MFD、UFD)打开文件目录( AFD)(即运行文件目录)

image.png

文件系统算法的流程图如下:

20200619100831364.png

三、实验题:

增加 2~3个文件操作命令,并加以实现(如移动读写指针,改变文件属性,更换文件名,改变文件保护级别)。

编一个通过屏幕选择命令的文件管理系统,每屏要为用户提供足够的选择信息,不需要打入冗长的命令。

设计一个树型目录结构的文件系统,其根目录为 root,各分支可以是目录,也可以是文件,最后的叶子都是文件。

根据学校各级机构,编制一文件系统。

实验报告


1.实验目的


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


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

2.实验内容与要求


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

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


为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作

算法与框图:

因系统小,文件目录的检索使用了简单的线性搜索。文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。

程序中使用的主要设计结构如下:

主文件目录和用户文件目录( MFD、UFD)打开文件目录( AFD)(即运行文件目录)

image.png

3.流程图与模块调用


20200619100831364.png

4.实验分析


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

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

①统一管理文件存储空间(即外存),实施存储空间的分配与回收。

②确定文件信息的存放位置及存放形式。

③实现文件从名字空间到外存地址空间的映射,即实现文件的按名存取。

④有效实现对文件的各种控制操作(如建立、撤销、打开、关闭文件等)和存取操作(如读、写、修改、复制、转储等)


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


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

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

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

5.运行情况


image.png

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("无此用户!")


相关文章
|
3月前
|
算法
数据结构实验之操作系统打印机管理器问题
本实验旨在通过实现操作系统中的打印机管理器问题,掌握队列的基本操作如入队、出队等,利用队列的先进先出特性解决先申请先打印的问题。实验包括队列的初始化、入队、出队、打印队列内容等功能,并通过菜单式界面进行交互。实验结果显示基本功能可正常执行,但在连续操作时存在执行失败的情况,需进一步优化。
63 4
|
7月前
|
弹性计算 运维
阿里云操作系统智能助手OS Copilot实验测评报告
**OS Copilot 产品体验与功能反馈摘要** 运维人员发现OS Copilot易上手,文档清晰,助其高效排查故障(8/10分)。愿意推荐并参与开源开发。亮点在于知识问答,能快速筛选答案。相较于竞品,优点是新手友好、文档清晰,但功能扩展性待增强。期望增加系统错误排查与解决方案,并集成ECS等,以优化系统安装流程。
阿里云操作系统智能助手OS Copilot实验测评报告
|
7月前
|
运维 自然语言处理 弹性计算
阿里云操作系统智能助手OS Copilot实验测评报告
摘要: 体验阿里云OS Copilot活动,用户发现教程中存在步骤缺失和不明确之处,如服务器地区未明确、安全组配置细节不全、AccessKey创建过程复杂、代码示例需改进等。用户建议提供详细步骤,尤其是对于新手,以提高易用性。OS Copilot作为智能助手,其问答和编程辅助功能受到好评,但实验应展示更多连续交互能力。用户总体满意产品,期待更完善的引导。
255 8
阿里云操作系统智能助手OS Copilot实验测评报告
|
6月前
|
存储 自然语言处理 搜索推荐
【颠覆你的数字生活!】探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【8月更文挑战第8天】OS Copilot是一款新兴的操作系统辅助软件,通过智能化手段简化电脑使用,从办公到开发全面赋能。安装简易,启动即有引导教程。其智能命令建议功能,可在命令行输入时提供后续选项及其说明,特别适合Linux用户。内置代码片段生成器,根据需求或代码框架自动生成代码,大幅提升开发效率。文件管理助手支持批量操作且可预览结果,降低误操作风险。任务自动化功能便于设置重复性工作流程,如定时备份。搜索功能强大,支持自然语言查询。尽管尚有改进空间,OS Copilot已是提升生产力的得力助手。
126 5
|
7月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是阿里云Linux的智能助手,助于提升运维效率,通过学习用户习惯提供智能建议。开发者反馈其在DevOps场景中非常有用,给予10分帮助度评价。用户赞赏其命令执行功能,希望能扩展多命令执行和错误自动修正。与ACK、ECS等集成,可自动化部署和CI/CD流程。文档清晰,适合新手,用户愿意推荐并参与开源开发。
119 3
阿里云操作系统智能助手OS Copilot实验测评报告
|
5月前
|
存储 自然语言处理 搜索推荐
探索OS Copilot——那款让你瞬间变身超级用户、编程如呼吸般自然、文件管理如同魔法般的神奇操作系统辅助神器!
【9月更文挑战第4天】“OS Copilot”是一款高效的操作系统辅助软件,通过智能化手段简化电脑使用,涵盖智能命令建议、代码片段生成、文件管理及任务自动化等强大功能。其简洁的界面与友好的用户体验使其成为提升生产力的理想选择,无论是专业人士还是普通用户都能从中受益。从安装到实际应用都非常流畅,能显著提升工作效率,是优化数字生活的得力助手。
63 0
|
7月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
阿里云OS Copilot是一款专为Linux设计的智能运维助手,利用大语言模型提供自然语言问答、命令执行辅助和系统调优功能。软件维护工程师反馈,OS Copilot易于上手,文档清晰,对提升运维效率有显著帮助,评分10/10。其轻量级设计、准确的回答是主要优点,但可能在复杂场景下表现不足。用户期望扩展到更多Linux发行版,增加系统优化建议、代码优化和日志分析功能,并能与其他产品如ACK、ECS联动。希望能有异常处理提示和日志输出以增强问题定位。
134 14
|
7月前
|
弹性计算 人工智能 运维
阿里云操作系统智能助手OS Copilot实验测评报告
**摘要:** 在阿里云与CSDN联合的OS Copilot测试中,一名学生体验者发现该智能助手是强大的编程学习工具,给予10分的帮助评价。尽管有新手上手难度和兼容性问题,他仍强烈推荐并有意参与开源开发。OS Copilot的亮点包括直接的交互式知识问答、编程辅助及命令执行。相比其他产品,其优点是简洁和准确性,但需改进新手教程。用户期待更多功能,如系统优化建议,扩大操作系统支持,并建议与阿里云产品如ACK、ECS集成,以提升运维效率。
134 12
|
7月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是Alibaba Cloud Linux基于大模型构建的操作系统智能助手,其旨在通过自然语言问答、辅助命令执行及系统运维调优等功能,提升用户对Alibaba Cloud Linux的使用效率。
|
7月前
|
弹性计算 运维 自然语言处理
阿里云操作系统智能助手OS Copilot实验测评报告
OS Copilot是针对Linux的智能助手,助力学习、运维及编程。用户界面直观,自然语言交互方便新手。官方文档详尽,但初次配置略复杂,适合学生和开发者。在提高代码编写和调试效率、系统学习上得分高,功能亮点包括代码生成、问答和命令执行。用户期待更多操作系统支持、自动错误分析和系统排查功能。
205 3