操作系统课程设计-模拟文件系统_第1页
操作系统课程设计-模拟文件系统_第2页
操作系统课程设计-模拟文件系统_第3页
操作系统课程设计-模拟文件系统_第4页
操作系统课程设计-模拟文件系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

精品文档 1欢迎下载 目录目录 第 1 章 需求分 析 1 第 2 章 概要设 计 1 2 1 系统的主要功 能 1 2 2 系统模块功能结 构 1 2 3 运行环境要 求 2 2 4 数据结构设 计 2 第 3 章 详细设 计 3 3 1 模块设 计 3 3 2 算法流程 图 3 第 4 章 系统源代 码 4 精品文档 2欢迎下载 第 5 章 系统测试及调 试 4 5 1 运行结果及分 析 4 5 2 系统测试结 论 5 第 6 章 总结与体 会 6 第 7 章 参考文 献 6 附 录 7 第第 1 1 章章 需求分析需求分析 通过模拟文件系统的实现 深入理解操作系统中文件系统的理论知识 加 深对教材中的重要算法的理解 同时通过编程实现这些算法 更好地掌握操作系 统的原理及实现方法 提高综合运用各专业课知识的能力 掌握操作系统结构 实现机理和各种典型算法 系统地了解操作系统的设计和实现思路 并了解操 作系统的发展动向和趋势 模拟二级文件管理系统的课程设计目的是通过研究 Linux 的文件系统结构 模拟设计一个简单的二级文件系统 第一级为主目录文件 第二级为用户文件 精品文档 3欢迎下载 第第 2 2 章章 概要设计概要设计 2 12 1 系统的主要功能系统的主要功能 1 系统运行时根据输入的用户数目创建主目录 2 能够实现下列命令 Login 用户登录 Create 建立文件 Read 读取文件 Write 写入文件 Delete 删除文件 Mkdir 建立目录 Cd 切换目录 Logout 退出登录 2 22 2 系统模块功能结构系统模块功能结构 2 32 3 运行环境要求运行环境要求 操作系统 windows xp 开发工具 vc 6 0 2 42 4 数据结构设计数据结构设计 用户结构 账号与密码结构 typedef struct users 精品文档 4欢迎下载 char name 8 char pwd 10 users 本系统有 8 个默认的用户名 前面是用户名 后面为密码 用户登陆时只要输 入正确便可进入系统 否则提示失败要求重新输入 users usrarray 8 usr1 usr1 usr2 usr2 usr3 usr3 usr4 usr4 usr5 usr5 usr6 usr6 usr7 usr7 usr8 usr8 3 数据结构说明 a 文件结构链表 struct fnode char filename FILENAME LENGTH int isdir int isopen char content 255 fnode parent fnode child fnode prev fnode next b 函数介绍 fnode initfile char filename int isdir 初始化文件或目录 void createroot 建立系统根目录 int run 系统运行 int findpara char topara 对参数进行处理 bool chklogin char users char pwd 检查账号与口令 void help 命令列表 int mkdir 建立目录 int create 建立文件 int read 读取文件 int write 写入文件 int del 删除文件 int cd 切换目录 int dir 文件与目录列表 精品文档 5欢迎下载 第第 3 3 章章 详细设计详细设计 3 13 1 模块设计模块设计 此课程设计把文本作为研究对象来模拟操作系统的文件系统工作过程 所 以用一个字符串数组来模拟磁盘空间 顾名思义 模拟磁盘提供字符的存储服 务 所有用户构成一个数组 每个数组元素是一个结构体 每个结构体包括三 部分 用户的用户名 用户密码和文件链表 由于模拟文件系统的文件数量不 多 故文件表采用线性链表来存储 线性表每个结点放置一个文件的 FCB 其 中存储一个文件的信息 文件名 长度 类型 创建时间等 磁盘空间分配表 采用链表结构 每个节点保存模拟磁盘的一个逻辑块的 信息 包括块的最大长度 文件占用长度 占用标志 如果占用标志为 0 即 该空间可分配给文件 初始化磁盘空间分配表链表 首先把整个模拟磁盘作来 一块 并置占用位为 0 当有进程申请磁盘空间时 从头开始遍历 检查占用 位 如果该块为可分配 则检查块大小 若块长度大于或等于申请空间大小 则把块的前一部分 等于申请大小 分配给文件 并置标志位为占用 剩下的 大小作来一个新块 作来一个新节点插入到原节点的后边 标志位为可用 这 样就实现了模拟磁盘的线性分配 3 23 2 算法流程图算法流程图 第第 4 4 章章 系统源代码系统源代码 模拟二级文件系统 主界面 用 户 登 录 建 立 文 件 删 除 文 件 写 入 文 件 读 取 文 件 切 换 目 录 建 立 目 录 退 出 登 录 精品文档 6欢迎下载 见附录见附录 第第 5 5 章章 系统测试及调试系统测试及调试 5 15 1 运行结果及分析运行结果及分析 精品文档 7欢迎下载 5 25 2 系统测试结论系统测试结论 从运行结果截图中可以看到 程序分别执行了它所包含的 7 个功能 并且 每个功能都能正确的执行 若程序执行开始 三次都未输入正确的帐号和密码 精品文档 8欢迎下载 程序会退出不再执行 第第 6 6 章章 总结与体会总结与体会 虽然我们做过很多次课程设计了 但是感觉自己还有好多需要学习的地方 接到题目要求时 设计大体的框架 考虑好所使用的数据结构 然后用高级编 程语言分模块的把架子的思路编写出来 调试 运行 再看看是不是符合题目 的要求 上网找些资料 看看想想是不是要提高要求 才可以满足实际的需要 最后把收集的劳动成果组合起来 一个小程序终于成型了 虽然每次的过程差 不多都一样 但是每次都会有不同的体会 通过本次的课程设计 使我能够正确运用操作系统课程中所学的基本理论 和知识 加深了对文件系统基本概念的理解 以及磁盘文件系统的文件操作 在设计过程中 查询了不少相关资料 不断的发现问题 提出问题 解决问题 在对自己所编写的源程序段的纠错的过程中 使我更好的理解了操作系统中文 件系统的理论知识 同时在编程时用到了模块化的设计思想 这种编程方法可 以使我们的编程变的更简单 可以使我们的查错与纠错变的更方便 总的来说 通过这次的设计的学习使我学到了很多在平时的学习中学不到的很多东西 通 过这次课程设计 使我对操作系统和编程产生兴趣 我想我会在这条路上继续 前进下去 我相信 只要不断的严格要求自己 注意培养自己的思维能力 就 一定会有更大更辉煌的发展和提高 第第 7 7 章章 参考文献参考文献 操作系统原理实验教程 清华大学出版社 胡峰松主编 操作系统实验教程 清华大学出版社 张丽芬等 编著 计算机操作系统实验教程 清华大学出版社 颜彬等编著 精品文档 9欢迎下载 附录附录 系统的主要源代码系统的主要源代码 include stdio h include iostream h include string h include iomanip h define FILENAME LENGTH 10 文件名称长度 define COMMAND LENGTH 10 命令行长度 define PARA LENGTH 30 参数长度 账号结构 typedef struct users char name 8 char pwd 10 users 文件结构 struct fnode char filename FILENAME LENGTH int isdir int isopen char content 255 fnode parent fnode child fnode prev fnode next 账号 users usrarray 8 usr1 usr1 usr2 usr2 usr3 usr3 usr4 usr4 usr5 usr5 usr6 usr6 usr7 usr7 usr8 usr8 精品文档 10欢迎下载 fnode initfile char filename int isdir void createroot int run int findpara char topara bool chklogin char users char pwd void help int mkdir int create int read int write int del int cd int dir fnode root recent temp ttemp char para PARA LENGTH command COMMAND LENGTH temppara PARA LENGTH recen tpara PARA LENGTH 创建文件与目录结点 fnode initfile char filename int isdir fnode node new fnode strcpy node filename filename node isdir isdir node isopen 0 node parent NULL node child NULL node prev NULL node next NULL return node 创建文件存储结点 void createroot recent root initfile 1 root parent NULL root child NULL root prev root next NULL strcpy para int mkdir temp initfile 1 cin temp filename 精品文档 11欢迎下载 if recent child NULL temp parent recent temp child NULL recent child temp temp prev temp next NULL else ttemp recent child while ttemp next ttemp ttemp next if strcmp ttemp filename temp filename 0 return 1 ttemp next temp temp parent NULL temp child NULL temp prev ttemp temp next NULL return 1 int create temp initfile 0 cin temp filename cin temp content if recent child NULL temp parent recent temp child NULL recent child temp temp prev temp next NULL cout 文件建立成功 child while ttemp next ttemp ttemp next if strcmp ttemp filename temp filename 0 return 1 ttemp next temp temp parent NULL temp child NULL temp prev ttemp temp next NULL cout 文件建立成功 endl return 1 int dir int i 0 j 0 temp new fnode temp recent if temp root cout child NULL cout Total directors i files j child while temp if temp isdir cout filename endl i else cout filename next cout Total directors i files j filename if recent child NULL cout 文件不存在 child filename filename 0 cout child content child while temp next if strcmp temp next filename filename 0 cout next content endl return 1 cout 文件不存在 filename if recent child NULL cout 文件不存在 child filename filename 0 recent child isopen 1 设置文件标记为打开 cin recent child content recent child isopen 0 设置文件标记为关闭 cout 文件写入成功 child while temp next if strcmp temp next filename filename 0 recent child isopen 1 设置文件标记为打开 cin temp next content recent child isopen 0 设置文件标记为关闭 cout 文件写入成功 endl return 1 cout 文件不存在 topara if strcmp topara 0 int i while recent prev recent recent prev if recent parent recent recent parent i strlen para while para i if i 0 para i 0 else para i 1 0 else findpara topara return 1 int findpara char topara int i 0 int sign 1 精品文档 15欢迎下载 if strcmp topara 0 recent root strcpy para return 1 temp recent strcpy temppara para if topara 0 recent root child i strcpy para else if recent NULL if recent else printf 路径错误 n return 1 while ichild i if recent isdir recent recent child else printf 路径错误 n return 0 strcat para while topara i if strcmp recent filename recentpara 0 if recent isdir 0 strcpy para temppara recent temp printf 是文件不是目录 n return 0 strcat para recent filename if strcmp recent filename recentpara 0 recent NULL strcpy para temppara recent temp printf 输入路径错误 n return 0 return 1 int del char filename FILENAME LENGTH cin filename temp new fnode if recent child temp recent child while temp next if strcmp temp filename filename 0 cout 不存在该文件 endl 精品文档 17欢迎下载 return 0 else cout 不存在该文件 parent NULL temp prev next temp next if temp next temp next prev temp prev temp prev temp next NULL else if temp next temp next parent temp parent temp parent child temp next delete temp cout 文件已删除 endl bool chklogin char users char pwd int i for i 0 i 8 i if strcmp users usrarray i name 0 return false void help void cout 命 令 一 览 endl cout endl cout create 建立文件 endl cout read 读取文件 endl cout write 写入文件 支持多线程 endl cout del 删除文件 endl cout mkdir 建立目录

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论