武汉理工大学华夏学院。
课程设计。课程名称操作系统课程设计。
题目为linux 设计一个简单的二级文件系统。
专业软件技术
班级 2081班
姓名陶静 成绩。
指导教师赵传斌、 司晓梅
2024年1月17日至 2024年1月21日。
课程设计任务书。
设计题目:为linux 设计一个简单的二级文件系统。
设计目的:1、通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。
2、提高学生的程序设计能力、 提高算法设计质量与程序设计素质 。
设计任务:(在规定的时间内完成下列任务)
为linux 设计一个简单的二级文件系统。要求做到以下几点:
1、可以实现下列几条命令(至少4条)
2、列目录时要列出文件名、物理地址、保护码和文件长度。
3、源文件可以进行读写保护。
时间安排:
1月 17日布置课程设计任务;分配题目后,查阅资料、 准备程序;
1月 18日~1月20 日上机调试程序、书写课程设计报告;
1月21 日上午提交课程设计报告及相关文档。
地点:学校机房(具体见现代教育中心大屏幕安排)
具体要求:1、课程设计报告按统一通用格式书写,具体格式要求请在网络上查阅。
2、每位学生应独立完成各自的任务且每天至少在设计室工作半天。
指导教师签名11年 1月 7日。
教研室主任(或责任教师)签名: 11年 1月 7 日。
一.项目概述。
linux是一个性能稳定、功能强大、效率高的操作系统。它在功能特性方面与unix系统相似,同时又具有多任务、多用户、多平台等若干特性。linux的源**是开放的,阅读linux源**,无疑是深入学习linux的最好方法。
文件系统是linux操作系统的重要组成部分,linux文件具有强大的功能。文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
二。 课程设计设计题目。
课程设计题目:linux二级文件系统设计。
三。 开发语言及实现平台或实验环境。
开发语言:c++/vc++
实现平台(环境):visual c++、window xp、vmware workstation(虚拟机) v6.0.
2、red hat enterprise linux os、office 2003
四。 设计目的。
1)本实验的目的是通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能和内部实现。
2)结合数据结构、程序设计、计算机原理等课程的知识,设计一个二级文件系统,进一步理解操作系统。
3)通过分对实际问题的分析、设计、编程实现,提高学生实际应用、编程的能力。
五。 设计内容。
5.1. 任务。
为linux系统设计一个简单的二级文件系统。要求做到以下几点:
1.可以实现下列几条命令:
login 用户登录。
dir列目录。
create 创建文件。
delete 删除文件。
open 打开文件。
close 关闭文件。
read 读文件。
write 写文件。
cd进出目录。
2.列目录时要列出文件名,物理地址,保护码和文件长度。
3.源文件可以进行读写保护。
5.2. 主程序流程图。
六。 程序设计。
6.1. 设计思想。
本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件。另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容。
首先应确定文件系统的数据结构:主目录、子目录及活动文件等。主目录和子目录都以文件的形式存放于磁盘,这样便于查找和修改。
用户创建的文件,可以编号存储于磁盘上。如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记。
6.2. 设计要求。
理解linux的文件系统的组织;掌握常用的数据结构;系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下的文件;使用文件来模拟外存,进行数据结构设计和操作算法的设计,实现一个文件系统并实现基本的文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容)。要求:
1、 对程序的每一部分要有详细的设计分析说明
2、 程序执行的每个步骤要有具体的提示内容或输出。
3、 源**格式规范,注释不少于三分之一。
4、 设计合适的测试用例,对得到的运行结果要有分析,5、 设计中遇到的问题,设计的心得体会。
6、 提交完整程序**、课程设计报告及相关文档。
七。 设计原理。
7.1. 外存管理。
文件系统是一个含有大量的文件及其属性,对文件进行操作、管理的软件,以及向用户提供使用文件的接口的一个集合。在逻辑上它的层次结构是这样的:
作为产品的操作系统有各自的文件系统。比如ms的windows系列使用的是fat16、fat32或ntfs的文件系统、linux使用的是ext2、ext3文件系统等等。
7.2. linux的ext2文件系统。
linux使用一个叫虚拟文件系统的技术从而可以支持多达几十种的不同文件系统,而ext2是linux自己的文件系统。它有几个重要的数据结构,一个是超级块,用来描述目录和文件在磁盘上的物理位置、文件大小和结构等信息。inode也是一个重要的数据结构。
文件系统中的每个目录和文件均由一个inode描述。它包含:文件模式(类型和存取权限)、数据块位置等信息。
如果希望详细学习ext2文件系统可以参看linux内核**include/linux/ext2_等文件。
一个文件系统除了重要的数据结构之外,还必须为用户提供有效的接口操作。比如ext2提供的open/close接口操作。
7.3. 用内存来模拟外存。
真正的文件系统对外存进行管理,涉及到许多硬件、设备管理方面的底层技术,一方面这些技术不属于操作系统核心内容,一方面过多的内容不免造成实验者顾此失彼,所以这里推荐一种使用内存来模拟外存的方式,可以跳过这些硬件技术而直接把精力放在数据结构设计和操作算法设计上面。
假定pinode是一个指向inode结构的指针,而且它已经放入的需要放入的数值了,现在需要将其写入到特定位置。可用如下**:
fd=fopen(“filesystem”,”w+bfd是file指针类型,w便是写方式,b表示二进制。
fseek(fd, specific_area,seek_set);/fd是文件指针;specific_area为整形,/ 为需要入pinode的位置。
fwrite(pinode,1,sizeof(inode),fd); 写入pinode信息。
7.4. 编码。
#include<>
#include<>
#include<>
#define dir_length 1024 /*路径最长可达节*/
#define max_write 1024*128 /*写入文字可达128k字节*/
#define mem_d_size 1024*1024 /*1m磁盘空间*/
#define disksize 1024 /*磁盘块的大小 1k*/
#define msd 5 /*最大子目录数 5 */
#define disk_num mem_d_size/disksize /*磁盘块数目 1024=1m/1k*/
#define fatsize disk_num*sizeof(struct fatitem) /fat表大小 */
#define mofn 5 /*最大文件打开数 5 (即除根以外最大深度为5)*/
#define root_disk_no fatsize/disksize+1 /*根目录起始盘快号 9*/
#define root_disk_size sizeof(struct direct)/*根目录大小 196*/
fat表项结构。
struct fatitem /*size 8*/
int item; /存放文件下一个磁盘的指针*/
char em_disk; /磁盘块是否空闲标志位 0 空闲*/
目录项结构。
struct direct
/*-文件控制快信息---
struct fcb
directitem[msd+2];
文件打开表项结构。
struct opentable
struct openttableitem
char name[9]; 文件名*/
int firstdisk; /起始盘块号*/
int size; /文件的大小*/
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...
操作系统课程设计
银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...
操作系统课程设计
学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....