操作系统课程设计:文件系统γGama

为Linux系统设计一个简单的二级文件系统。要求做到以下几点:

(1)可以实现下列几条命令

dir列文件目录

create创建文件

delete删除文件

open打开文件

close关闭文件

read读文件

write写文件

(2)列目录时要列出文件名、物理地址、保护码和文件长度;

(3)源文件可以进行读写保护。

二、实验设计原理:

(1)本题使用的数据结构:

磁盘结构体:

typedefstructdiskList

{

intmaxlength;//磁块的大小

intstart;//磁块的起始地址

intuseFlag;//标志该磁块是否已使用过

char*text;//存放的文件内容

distList*next;

}diskNode;

文件结构体:

structfileList

stringfilename;//文件名

intstart;//物理地址

intlength;//文件长度

intmaxlength;//文件的最大长度

charfileKind;//文件类型:只读0只写1读写2

charprotect;//保护码

boolopenflag;//打开标志,当为true时标志该文件正打开

};

子目录结构体:

typedefstructUserFileDirectory

fileList*file;//连接文件

UserFileDirectory*next;//连接用户目录项

}UFD;

主目录结构体:

typedefstructMasterFileDirectory

stringusername;

stringpassword;

UFD*user;//连接用户目录项

}MFD;

(2)本题主要符号说明:

类型

名称

说明

diskNode*

diskHead

磁盘链表头指针

MFD

User[]

主目录集合

int

MaxUser

最大用户数

Used

已有用户数

NowUser

当前用户

string

Now_Filename

当前正在使用的文件名

bool

FileOpen

当前是否有已打开文件

(3)本题主要函数说明:

void

FreeSpace

释放整个文件系统使用到的链表指针

Initdata

初始化主要数据

userCreate

为文件系统创建用户

login

requestDisk

请求分配存储磁块

fileCreate

创建文件

freeDisk

释放文件所占的磁块

fileDelete

删除文件

fileRead

读取文件内容

filewrite

往文件写入内容

fileclose

关闭文件

fileopen

打开文件

SaveData

保存主目录、子目录和已创建的文件

fileDir

列文件目录

GetUser

获取当前正在使用系统的用户名

(4)程序流程图:

五、实验结果与分析:

初始界面:

首先输入user命令为文件系统创建用户并使用login命令登陆刚才创建的用户:

先查看本地文件夹:

可以看到除了编译文件和源程序之外是没有其他文件的

下面使用creat命令创建两个文件,分别是aaa,bbb,其中aaa为只读文件,bbb为读写文件:

可以看到命令完成后本地文件夹成功创建两个文件。

下面执行dir命令查看文件信息:

其中物理地址我没有按照提示那样去设定,我是这样设定的:每个文件创建的时候会有分配长度,系统根据输入信息分配一个相同大小的物理磁块作为文件的内容存储空间,文件的物理地址就是其所在磁块的起始地址。保护码的设定为读写权限的指令标志,即0为只读文件,2为读写文件。

下面使用open命令打开文件:

注意,如果文件没有提前open就执行read读操作或者write写操作视为非法操作。

比如下:

open文件aaa:

使用write命令对文件aaa写入数据。

可以看到,我们在创建aaa文件时指定的是只读文件,无法进行写操作,这就是读写保护。

我们先使用close命令关闭当前打开的文件aaa,再使用open命令打开可读写文件bbb。

先在本地查看bbb文件的内容:

可以看到无任何内容,然后对bbb执行write写操作:

可以看到写入成功,文件内容也发生变化!

下面使用delete命令将文件bbb删除:

可以看到,上面我们使用bbb文件后还未执行close命令关闭文件,所以无法删除,我们先close文件bbb,再执行删除:

可以看到,刚才在上一张截图中还存在的bbb已经被删除。

下面执行dir查看当前文件目录信息:

可以看见bbb已经成功被删除。

输入exit命令退出系统,会自动保存主目录及用户文件目录,形成文件,其中主目录文件MFD存放用户名称,用户目录文件名为用户名,存放该用户下创建的各个文件名。为效果明显,我在退出之前又创建了用户A、用户B,在ywd用户下多创建了文件ccc和ddd。

查看一下主目录文件MFD的内容:

ywd文件的内容:

A和B因为没有在他们下面创建文件所以内容都为空,此处就不放图。

五、课设收获和体会:

本次课程设计让我对二级文件系统有了很深刻的认知和理解。二级文件系统的文件路径即为/用户/文件名,题目截图中出现了mkdir的命令操作创建一个子目录,我认为这是没有必要的,每个用户的用户文件目录表只有一个,不存在多个用户文件目录表的情况,如果有了mkdir不就可以在目录下创建一个子目录,然后在新建的子目录下再执行mkdir再创建新的子目录了吗,这样的话题目应该写为实现树形文件目录系统,而不是二级文件目录系统了。我认为这样的操作违背了二级文件系统的逻辑结构。所以我在实现的过程中创建用户就自动为文件分配了文件目录项,文件目录项拥有指向下一个文件目录项的指针和指向文件的指针,具体结构如图所示(此图为引用)

根据题目我所理解的源文件可以进行读写保护的意思是:创建文件时可以规定该文件为只读、只写和读写三种类型的文件。当用户在文件系统想要对只写文件进行读操作时是不允许的,同理当用户想对只读文件进行写操作时也是不允许的。这是我所理解并实现的读写保护功能。

面对老师的严格要求,我也在很大程度上提升了对自己的要求,力保自己所理解的题意和要求是正确的,不走到弯路跑偏。通过本次课程设计模拟开发了一个小系统,我学到了很多,不仅仅是操作系统这门课上的知识内容,更是程序开发的方方面面的细节,前期准备、中期实现、后期维护,每一步都要为全局考虑,既保证成功实现,也保证逻辑结构紧密,可维护性强,代码清晰易懂等。同时也提高了我的自信心,想做,去尝试,就一定能做到!

五、存在问题及改进:

在后期的话还可以对该文件系统进行可视化,包装成一个软件,将通过该软件创建的文件存储在一个隐秘的地方,只有通过该软件才能对文件进行操作等对用户私人化处理,打造一个私人文件系统。

六:实验数据及源代码(学生必须提交自己设计的程序源代码,并有注释,源代码电子版也一并提交),包括思考题的程序。

THE END
1.操作系统的内容简述这有助于学生理解操作系统的设计理念是如何随着计算机硬件技术的进步和应用需求的变化而不断发展和完善的。例如,分时系统的出现是为了满足多个用户同时使用计算机的需求,通过时间片轮转的方式让每个用户都能获得计算机的处理时间,从而提高了计算机资源的共享性和利用率。此外,还会涉及操作系统的类型与特点。常见的操作https://baijiahao.baidu.com/s?id=1818288503656232779&wfr=spider&for=pc
2.操作系统课程设计本课程设计的目的是使学生熟悉操作系统实现资源管理功能的方法和主要技术,重点理解CPU管理、内存管理和文件管理的设计方法。加深对所学算法思想的了解机器操作方法的特点。通过模拟进程调度、内存管理和文件管理的实现,深入理解操作系统中这些管理方法的理论知识,加深对教材用的重要算法的理解。同时通过编程实现这些算法,更好https://blog.csdn.net/yushibing717/article/details/136138342
3.计算机操作系统课程设计报告.doc一、课程设计的目的和意义 本次操作系统课程设计的主要任务是进行系统级的程序设计。本课程设计是操作系统原理课程的延伸。通过该课程设计,使学生更好地掌握操作系统各部分结构、实现机理和各种典型算法,加深对操作系统的设计和实现思路的理解,培养学生的系统设计和动手能力,学会分析和编写程序。课程设计的实施将使学生在https://m.book118.com/html/2024/0812/7100103024006143.shtm
4.操作系统及应用课程设计.docx操作系统及应用课程设计一、课程目标 知识目标: 1.理解操作系统的基本概念、功能、类型及其在计算机系统中的作用; 2.掌握操作系统的进程管理、内存管理、文件系统、设备管理的基本原理; 3.学习操作系统中的应用软件使用,了解操作系统在实际应用中的优势与局限。 技能目标: 1.能够分析操作系统的基本组成部分,并对其进行https://m.renrendoc.com/paper/358279455.html
5.操作系统课程设计51CTO博客课程设计操作系统课程设计 这次海轰选择是题目二,感觉有点难,得费一点时间 其他的题目以后有时间可以尝试一下 再不写C++,就快凉了 题目一:支持多个进程(线程)并发运行的简单进程(线程)管理模拟系统 1.实验内容 学习进程管理的设计与实现,学习和运用操作系统原理,设计一个操作系统子系统的模拟系统。通过该系统的设计调试可https://blog.51cto.com/u_15939722/6018577
6.操作系统课程设计1. 编程实现spooling技术,并采用随机调度算法模拟spooling技术原理 2. 给出实现方案(包括数据结构和模块说明等) 3. 画出程序的基本结构框图和流程图 4.图形化界面显示https://zhuanlan.zhihu.com/p/668271090
7.操作系统课程设计(河北大学)本论文主要阐述四部分内容,引言部分,主要说明本次操作系统课程设计的性质、教学目的、教学任务与要求、意义以及论文的结构安排;系统分析与设计部分,主要阐述系统的主要功能模块以及每个模块计划采用的实现方法和原理;系统实现部分,主要通过流程图等工具描述主要模块的实现流程;最后一部分,结束语部分,主要书写已经实现的本系统http://www.360doc.com/content/12/0210/15/8744445_185567253.shtml
8.模拟操作系统课程设计.doc模拟操作系统课程设计.doc文档分类:高等教育 | 页数:约50页 举报非法文档有奖 1/50 1/50 下载此文档 文档列表 文档介绍 河北大学2011级操作系统学年论文(设计)1一 引言 性质计算机系统是计算机系统中不可缺少的基本系统软件,计算机系统是由硬件和软件两部分构成的。操作系统实际上是一个计算机系统中硬、软件资源https://www.taodocs.com/p-678539136.html
9.操作系统原理及课程设计课程简介 Course Introduction 2022级《操作系统课程设计》的课程主页,助教的联系方式如下: 2024级研究生-卓浩铭 zhuohaoming@m.scnu.edu.cn 2024级研究生-李泽铭 lizeming@m.scnu.edu.cn 2024级研究生-陈杰 cjie@m.scnu.edu.cn 2024级研究生-唐双姣 tangshuangjiao@m.scnu.edu.cnhttps://www.scholat.com/course/scnuos
10.操作系统课程设计心得+给老师的建议省下的课时时间放在课程设计上面。这样不至于学生跟不上老师进度的情况 推荐老师看一下,清华大学在学堂在线上面的操作系统的课程,课程的结构和模块的设计[需要注册一下学堂在线的账号] http://www.xuetangx.com/courses/course-v1:TsinghuaX+30240243X+2016_T1/courseware/be5b8d4fec0c4c329d19845020bc67b2/39384cfahttps://www.jianshu.com/p/c294031be152
11.操作系统珠海科技学院②逻辑与物理:用户视角的逻辑地址空间、文件逻辑结构、逻辑设备,系统视角的物理地址空间、文件物理结构、物理设备。 展开 开课机构教师团队 傅晓阳 珠海科技学院 计算机学院 教授 傅晓阳,博士,教授,计算机学院副院长。教学上主要承担《java语言程序设计》、《操作系统》、《人工智能》等课程,研究方向为计算智能、深度学https://www.xuetangx.com/course/jluzh08091004646/21560499
12.操作系统实验指导书操作系统实验指导书,操作系统实验报告,操作系统实验,操作系统实验教程,操作系统实验指导,计算机操作系统教程,材料力学实验指导书,操作系统课程设计,操作系统,linux 文档格式: .doc 文档大小: 670.0K 文档页数: 147页 顶/踩数: 1/0 收藏人数: 7 评论次数: https://www.docin.com/p-939798251.html
13.使用KEILC51实现的简单合作式多任务操作系统内核以前做课程设计时候,在51上实现了一个简单的合作式操作系统内核。写的时候,主要是出于检验自己单片机原理和操作系统知识的目的。这个内核现在看来,功能非常简单,实时性也不高,但是它毕竟是在51单片机上用不到每个线程17B的内存实现了一个多任务并行处理功能,而且完全用C语言写成,没有用到汇编。所以整理发出,权为资料https://cloud.tencent.com/developer/article/1692860
14.关于工艺实习报告(精选11篇)一、课程设计目的 1.了解电话机的基本知识,通过具体的电路图,初步掌握焊接技术,简单电路元器件装配,对故障的诊断和排除以及对电话机原理工作的一般原理。 2.熟悉电子装焊工艺的基本知识和原理,掌握焊接技术并装焊一台电话机。 3.了解安全用电知识,学习安全操作要领,培养严谨的工作作风,养好良好的工作习惯,培养正确https://www.ruiwen.com/gongwen/baogao/594013.html
15.操作系统实战45讲作为计算机王国中的实际“掌舵人”,操作系统是一切法则的制定者。它掌管着硬件软件等一切资源,并负责处理多种基本事务(内存管理、资源配置、I/O 设备、网络通信等),既能维护公平正义又能杀伐决断,而我们的课程就是讲解如何实现它。 课程设计 课程中,彭东老师将多年的操作系统开发经验倾囊相授,并带你从系统级的高度https://time.geekbang.org/column/intro/100078401
16.Mac视觉史vol.2:90年代失败操作系统大赏优设网在第一篇 Mac 视觉史当中,我梳理过了整个 Mac 系统第一阶段的明线,而这一篇,我们来聊一下它的「暗线」。 这一章所涉及到的项目,几乎可以组成一个 大型的「90年代失败操作系统大赏」,在主要由成功者们所构成的故事、新闻乃至与传说当中,这些失败的故事和项目,被提及的次数很少。 https://www.uisdc.com/mac-visual-histroy-vol02
17.操作系统原理—智慧树网内蒙古医科大学计算机信息学院网络技术教研室讲师,硕士,毕业于内蒙古工业大学。主要研究方向为网络应用及大数据分析。讲授课程为《JAVA程序设计》、《Python程序设计》、《Linux操作系统》等专业课程。 刘秉政·内蒙古医科大学团队教师 副教授 内蒙古医科大学计算机信息学院计算机技术教研室副教授,硕士,毕业与东华理工大学。主要http://coursehome.zhihuishu.com/courseHome/1000073788