操作系统
课程设计报告
学    院:                         
班    级:                         
学生姓名:                         
学    号:                         
指导老师:                         
提交日期:                       
一、实验目的
本设计的目的是实现操作系统和相关系统软件的设计,其中涉及进程编程、I/O操作、存储管理、文件系统等操作系统概念。
二、实验要求
在任一OS下,建立一个大文件,把它假象成一张盘,在其中实现一个简单的模拟Linux文件系统。具体见附表
三、实验环境
  Windows  、VC
三、实验思想
1、整体思路
实验可分为三个大模块:文件组织结构、目录结构、磁盘空间管理。编写时,先定义重要的数据结构,整理好各个模块的思路,列出程序清单。接着编写一些对系统进行基本操作的函数,然后利用这些函数实现各种功能。
2、盘块大概分布 (分了128块,每块64字节)
盘块
0
1
2
3
4
5
6
…..
127
用途
FAT表
FAT表
根目录
数据
数据
数据
......
数据
盘块与盘块之间的链接,是利用FAT表项,(使用数组结构),并用它记录了所有盘块的使用信息。
优点:可以利用FAT信息,迅速查、打开各个目录,进行创建、修改文件。
3、目录组成
为了简单,构思目录时,每个目录只有8字节,每盘存放最多8个目录。其中,目录名、文件名最多只能为3字节,如果是文件的话,类型名也最多为2字节。区分目录名和文件名的方法是:设计一个属性项(1个字节),为8时表示纯目录,为4时表示文件目录。具体分布如下图:
用途
目录名或文件名
文件类型
属性
文件起始盘块
文件长度
大小
3(字节)
2
1
1
1
优点:属性可以区分纯目录、文件目录;文件起始盘块可以记录文件的存放位置;文件长度,,在读文件时控制指针,是否到了文件末尾。
缺点:为了简单,对文件名、目录名、类型名都作了限制。最大分别为:3,3,2字节。
说明:调试时,目录名、文件名、类型名一定不能超过限制,否则出现非预期的结果
4、FAT  、磁盘管理 
实验中,将磁盘分为128块,每块大小64字节。为了方便对空间管理,利用教材提到的方法,把每块的块号(指针)提取出来,形成FAT表:
盘块
0
1
2
3
4
5
6
7
。。。
下一盘块
-1
-1
4
9
0
7
8
-1
若某文件的一个盘块号为i ,则这个文件的下一个盘块为表中的第i项,其中0表示此盘块空闲,-1表示结束。
另一个重要的表是已打开文件表,用来记录打开或建立的内容,表如下:
文件路径名
文件属性
起始盘
文件长度
shell创建文件并写入内容
读指针
写指针
块号
块内地址
块号
块内地址
5、重要数据结构
用户结构:
typedef struct //用户定义
{
    Int  uid;
    char name[20];
    char password[20];
}user;
目录结构:
typedef struct //定义目录结构
{
    char name[3];//文件或目录名  为了简单只是取3字节
    char type[2];//文件类型名
    char attribute; //属性
    char address; //文件或目录的起始盘块号
    char length;  //文件长度 ,为了简单实验是用盘块为单位
}content;      //定义为目录结构
打开文件的数据结构:
typedef struct
{
    int dnum;//磁盘块的块号
    int bnum;//块内的第几个字节
}pointer;//读写指针结构
#define n 5  //定义打开文件的最大个数;
打开文件表项结构 :
typedef struct
{
    char name[20];//模拟绝对路径
    char attribute;//文件属性  1个字节
    int number;//文件的起始盘的块号
    int length ;//文件长度,字节为单位

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。