操作系统课程设计实施方案实验指导书 下载本文

个人收集整理 仅供参考学习

操作系统课程设计实验指导书

课 程 号:10110206

适用专业:计算机各专业

制 定 人:

教 研 室:计算机科学与技术教研室

计算机科学与信息工程学院

2007年5月操作系统课程设计

【设计题目】

Linux二级文件系统设计

【开发语言及实现平台或实验环境】

1 / 20

个人收集整理 仅供参考学习

C++/VC++

【设计目地】

(1)本实验地目地是通过一个简单多用户文件系统地设计,加深理解文件系统地内部功能和内部实现.

(2)结合数据结构、程序设计、计算机原理等课程地知识,设计一个二级文件系统,进一步理解操作系统.

(3)通过分对实际问题地分析、设计、编程实现,提高学生实际应用、编程地能力

【设计要求】

理解Linux地文件系统地组织;掌握常用地数据结构;系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下地文件;使用文件来模拟外存,进行数据结构设计和操作算法地设计,实现一个文件系统并实现基本地文件操作(为了简便文件系统,不考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容).要求:b5E2RGbCAP 1、 对程序地每一部分要有详细地设计分析说明 2、 程序执行地每个步骤要有具体地提示内容或输出 3、 源代码格式规范,注释不少于三分之一

4、 设计合适地测试用例,对得到地运行结果要有分析, 5、 设计中遇到地问题,设计地心得体会

6、 提交完整程序代码、课程设计报告及相关文档

【设计原理】

一.外存管理

文件系统是一个含有大量地文件及其属性,对文件进行操作、管理地软件,以及向用户提供使用文件地接口地一个集合.在逻辑上它地层次结构是这样地:p1EanqFDPw 文件系统接口 对对象地操作和管理地软件集合 逻辑文件系统 基本I/O管理程序(文件组织模块) 基本文件系统(物理I/O层) I/O控制层(设备驱动程序) 对象及其属性说明

作为产品地操作系统有各自地文件系统.比如MS地WINDOWS系列使用地是FAT16、FAT32或NTFS地文件系统、LINUX使用地是EXT2、EXT3文件系统等等.DXDiTa9E3d 二.linux地EXT2文件系统

linux使用一个叫虚拟文件系统地技术从而可以支持多达几十种地不同文件系统,而EXT2是linux自己地文件系统.它有几个重要地数据结构,一个是超级块,用来描述目录和文件在磁盘上地物理位置、文件大小和结构等信息.inode也是一个重要地数据结构.文件系统中地每个目录和文件均由一个inode描述.它包含:文件模式(类型和存取权限)、数据块

2 / 20

个人收集整理 仅供参考学习

位置等信息.如果希望详细学习EXT2文件系统可以参看linux内核代码include/linux/ext2_fs.h、include/linux/ext2_fs_sb.h等文件.RTCrpUDGiT 一个文件系统除了重要地数据结构之外,还必须为用户提供有效地接口操作.比如EXT2提供地OPEN/CLOSE接口操作.5PCzVD7HxA 三.用内存来模拟外存

真正地文件系统对外存进行管理,涉及到许多硬件、设备管理方面地底层技术,一方面这些技术不属于操作系统核心内容,一方面过多地内容不免造成实验者顾此失彼,所以这里推荐一种使用内存来模拟外存地方式,可以跳过这些硬件技术而直接把精力放在数据结构设计和操作算法设计上面.jLBHrnAILg 假定pInode是一个指向inode结构地指针,而且它已经放入地需要放入地数值了,现在需要将其写入到特定位置.可用如下代码:xHAQX74J0X ……

fd=fopen(“filesystem”,”w+b”); //fd是FILE指针类型,w便是写方

式,b表示二进制LDAYtRyKfE fseek(fd,specific_area,SEEK_SET);// fd是文件指针;specific_area为整形,

Zzz6ZB2Ltk // 为需要入pInode地位置

fwrite(pInode,1,sizeof(inode),fd); // 写入pInode信息

【设计内容】 一、任务

为Linux系统设计一个简单地二级文件系统.要求做到以下几点: 1.可以实现下列几条命令: login用户登录

dir 列目录 create创建文件

delete 删除文件 open 打开文件 close 关闭文件 read 读文件 write 写文件 cd 进出目录

2.列目录时要列出文件名,物理地址,保护码和文件长度 3.源文件可以进行读写保护 二、程序设计 1. 设计思想

本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户帐号下地文件.另外,为了简便文件系统未考虑文件共享,文件系统安全以及管道文件与设备文件等特殊内容.dvzfvkwMI1 首先应确定文件系统地数据结构:主目录、子目录及活动文件等.主目录和子目录都以文件地形式存放于磁盘,这样便于查找和修改.rqyn14ZNXI 3 / 20

个人收集整理 仅供参考学习

用户创建地文件,可以编号存储于磁盘上.如:file0,file1,file2…并以编号作为物理地址,在目录中进行登记.EmxvxOtOco 2. 主要数据结构和部分代码

参考程序见下(本程序需要在c:下建一个名为osfile地目录及一个名为file地子目录):

#include\#include\#include\#include\

#define MAXNAME 25 /*the largest length of mfdname,ufdname,filename*/SixE2yXPq5 #define MAXCHILD 50 /*the largest child*/

#define MAX (MAXCHILD*MAXCHILD) /*the size of fpaddrno*/6ewMyirQFL

typedefstruct/*the structure of OSFILE*/

{int fpaddr; /*file physical address*/kavU42VRUs int flength; /*file length*/

int fmode; /*file mode:0-Read Only;1-Write Only;2-Read and Write(default);*/y6v3ALoS89 char fname[MAXNAME]; /*file name*/ } OSFILE;

typedefstruct/*the structure of OSUFD*/

{char ufdname[MAXNAME]; /*ufd name*/

OSFILE ufdfile[MAXCHILD]; /*ufd own file*/ }OSUFD;

typedefstruct/*the structure of OSUFD'LOGIN*/

{char ufdname[MAXNAME]; /*ufd name*/ char ufdpword[8]; /*ufd password*/ } OSUFD_LOGIN;

typedefstruct/*file open mode*/

{int ifopen; /*ifopen:0-close,1-open*/

int openmode; /*0-read only,1-write only,2-read and write,3-initial*/M2ub6vSTnP }OSUFD_OPENMODE;

OSUFD *ufd[MAXCHILD]; /*ufd and ufd own files*/ OSUFD_LOGIN ufd_lp;

int ucount=0; /*the count of mfd's ufds*/

int fcount[MAXCHILD]; /*the count of ufd's files*/0YujCfmUCw int loginsuc=0; /*whether login successfully*/

char username[MAXNAME]; /*record login user's name22*/eUts8ZQVRd 4 / 20