第二章文件系统2
- 格式:ppt
- 大小:353.50 KB
- 文档页数:19


《操作系统》课程设计题目:设计一个简单二级文件系统专业:计算机科学与技术年级:文计091-1*名:***学号:200990514103指导教师:任满杰时间:2011-2012第二学期2012年9月1日一、设计内容1、可以实现下列几条命令。
Format 格式化Dir 列文件目录Create 创建文件Delete 删除文件Deldir 删除目录Open 打开文件Close 关闭文件Search 查询文件Copy 拷贝文件Cut 剪切文件二、开发环境Windows操作系统Microsoft Visual C++三、分析设计(一)实验原理通过程序模拟Linux文件系统,用一个二进制文件(FileSystem.disk)来模拟磁盘.设计一个多用户的二级文件系经统、实现一般的创建文件、目录,删除文件、目录,切换目录,打开、关闭文件、读写文件等操作。
文件系统,包含格式化,显示文件(目录),创建文件等几个简单命令的实现,而且能完成超级块的读写,节点的读写等过程. 本文件系统采用两级目录,其中第一级对应于用户账号,第二级对应于用户账号下的文件。
另外,为了简单本文件系统未考虑文件共享、文件系统安全以及管道文件与设备文件等特殊内容。
1.程序执行流程图:2.数据块的分配和回收(二)程序结构设计FileSystem类负责管理磁盘空间和磁盘内存I节点,负责对磁盘空间和磁盘数据进行优化管理。
并提代接口言方法供用户或程序调用。
(三)数据结构int physic[100]; //文件地址缓冲区int style=1; //文件的类型char cur_dir[10]="root"; //当前目录int search_i=0;struct command{char com[10];}cmd[20];struct block{int n; //空闲的盘快的个数int free[50]; //存放空闲盘快的地址int a; //模拟盘快是否被占用}memory[20449];struct block_super{int n; //空闲的盘快的个数int free[50]; //存放进入栈中的空闲块int stack[50]; //存放下一组空闲盘快的地址}super_block;struct node //i结点信息{int file_style; //i结点文件类型int file_length; //i结点文件长度int file_address[100]; //i结点文件的物理地址 char file_message[100];} i_node[640];struct dir //目录项信息{char file_name[10]; //文件名int i_num; //文件的结点号char dir_name[10]; //文件所在的目录} root[640];四.运行示例及结果分析菜单删除目录文件查询拷贝剪切五、程序实现详细程序请参见源文件, 在此只列举3点1、剪切文件程序片段:void cut(char *tmp,char *newname) {int i; //,jchar t[20];_strtime(t);for(i=0;i<640;i++)if(strcmp(newname,root[i].file_name)==0){break;}if(i==640){printf("目录不存在,不能剪切!\n");return;}for(i=0;i<640;i++){if(strcmp(tmp,root[i].file_name)==0){strcpy(root[i].dir_name,newname);strcpy(i_node[root[i].i_num].change_t,t);//printf("剪切成功!\n");//return;}}if(i==640)printf("文件不存在,执行失败!\n");}2.无文件查询程序片段:void search(char* filename){int sign=0;for(search_i=0;search_i<640;search_i++){if(strcmp(root[search_i].file_name,filename)==0) //查询文件中所在目录信息和当前目录信息相同的数据{sign=1;int k=root[search_i].i_num;printf("%s\t",root[search_i].file_name); //文件名printf(" %d\t",i_node[k].file_style); //文件的类型printf(" %d\t\t",i_node[k].file_length); //文件的长度printf("%s\n",root[search_i].dir_name); //文件所在的目录}}if (sign==0){printf("%s\n","未找到该文件!");}}六、心得与体会这次设计中遇到最难的问题就是拷贝功能的实现,由于之前没有接触过拷贝的原理,所以通过和同伴的讨论和试验,终于突发奇想的运用改变文件路径的源代码和创建文件相结合,终于实现了拷贝功能,能够将一个文件从一个目录拷贝到另一目录(即先移动过去然后再在原位置创建一个原文件),可是却无法拷贝到root根目录,为了解决这个问题,又在创建文件的程序里添加了一个判断是否为根目录的语句,可是后来又发现了真个系统存在重命名的问题。
考研操作系统-文件管理(二)(总分100,考试时间90分钟)一、单项选择题1. 文件系统的主要目的______。
A.实现对文件的按名存取 B.实现虚拟存储C.提高外存的读写速度 D.用于存储系统文件2. 下列关于索引表的叙述中,正确的是______。
A.建立索引表的目的之一是为了减少存储空间B.索引表中含有索引文件的数据及其物理地址C.对索引文件存取时,必须先查找索引表D.索引表中每个记录的索引项可以有多个3. 从用户角度看,文件系统主要是实现______。
A.文件保护 B.文件保密 C.文件共享 D.按名存取4. 打开文件的具体含义是______。
A.在指定的磁盘地址上建立一个文件B.将指定的文件目录内容复制到主存的活动文件表中C.撤销指定文件的目录D.修改指定文件的内容5. ______具有将文件名转换为该文件在外存的物理位置的功能,这也正是文件目录所提供的最基本的功能。
A.文件目录 B.一级目录 C.二级目录 D.树形目录6. 文件的顺序存取是______。
A.按终端号依次存取 B.按文件的逻辑号逐一存取C.按物理块号依次存取 D.按文件逻辑记录的大小逐一存取7. 为了能对一个文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称之为______。
A.文件逻辑结构 B.文件物理结构 C.文件的属性 D.文件控制块(FCB)8. 设置当前目录的主要原因是______。
A.节省主存空间 B.加快文件查找速度 C.节省辅存空间 D.便于打开文件9. 文件信息的逻辑块号到物理块号的变换方法也是由文件的______决定的。
A.逻辑结构. B.顺序结构 C.物理结构 D.索引结构10. 为了防止各种意外可能破坏文件,文件系统可以采用______的方法来保护文件。
A.口令和加密 B.对每个文件规定使用权限C.建立副本和定时转储 D.为文件设置口令11. 建立多级目录______。
A.便于文件的保护 B.便于关闭文件 C.解决文件的重名与共享 D.提高系统的效率12. 文件路径名是指______。