操作系统课程设计

发布 2022-10-05 11:21:28 阅读 1840

一、课程设计的内容。

本课程设计要求设计一个模拟的多用户多级目录的文件系统。通过具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。

二、课程设计的要求与数据。

1. 在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个多用户多目录的文件系统。

2. 文件物理结构可采用显式链接或其他方法。

3. 磁盘空闲空间的管理可选择位示图或其他方法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,则可以将位示图合并到fat中。

4. 文件目录结构采用多用户多级目录结构,每个目录项包含文件名、物理地址、长度等信息,还可以通过目录项实现对文件的读和写的保护。目录组织方式可以不使用索引结点的方式,但使用索引结点,则难度系数为1.2。

5. 设计一个较实用的用户界面,方便用户使用。要求提供以下相关文件操作:

1)具有login (用户登录)

2)系统初始化(建文件卷、提供登录模块)

3)文件的创建: create

4)文件的打开:open

5)文件的读:read

6)文件的写:write

7)文件关闭:close

8)删除文件:delete

9)列出文件目录:dir

10)退出:logout

三、实验原理:

1.本系统初始化了十个用户,每个用户初始化五个文件,最多可拥有十个文件,所以每个用户在此基础上可为自己再创建五个文件,也可以在删除文件后再创建。

2.系统使用create,open,read,write,close,delete,dir和exit来创建文件,打开文件,读文件,写文件,关闭文件,删除文件和显示文件。

3.程序采用二级文件目录(即设置主目录[mfd])和用户文件目录(ued)。另外,为打开文件设置了运行文件目录(afd)。

4.为了便于实现,对文件的读写作了简化,在执行读写命令时,只需改读写指针,并不进行实际的读写操作。

5.算法与框图:

a、文件目录的检索使用了简单的线性搜索。

b、文件保护简单使用了三位保护码:允许读写执行、对应位为 1,对应位为0,则表示不允许读写、执行。

c、程序中使用的主要设计结构如下:

i 主文件目录和用户文件目录( mfd、ufd)

ii 打开文件目录( afd)(即运行文件目录)

三、程序流程图:

程序源**:

#include ""

#include <>

#include <>

#include <>

#define getpch(type) (type*)malloc(sizeof(type))

#define null 0

#define usernumber 10

#define userfnumber 10

#define userofnumber 5

struct fname;

struct afd {

char opname[10];/打开文件名 */

int flag;

char opfprotect[3];/打开保护码 */

int rwpoint;/*读写指针 */

afd[userofnumber];/用户打开的文件 */

typedef struct {

char fname[10];/用户文件名 */

int flag;/*文件存在标志 */

int fprotect[3];/文件保护码r\w\t */

int flength;

ufd,uf[userfnumber];/用户文件 */

struct mdf {

char uname[10];/用户名 */

uf udir;/*用户文件目录 */

ufd[usernumber];/用户 */

void intfsystem(){

int i,j,k,l;

strcpy(ufd[0].uname,"a");

strcpy(ufd[1].uname,"b");

strcpy(ufd[2].uname,"c");

strcpy(ufd[3].uname,"d");

strcpy(ufd[4].uname,"e");

strcpy(ufd[5].uname,"f");

strcpy(ufd[6].uname,"g");

strcpy(ufd[7].uname,"h");

strcpy(ufd[8].uname,"i");

strcpy(ufd[9].uname,"j");

for(i=0;i<10;i++)

for(k=0;k<5;k++)

do j=rand()%26; while(fnamea[j].flag);

strcpy(ufd[i].udir[k].fname,fnamea[j].fname);

fnamea[j].flag=1;

ufd[i].udir[k].flength=rand()%2048+1;

ufd[i].udir[k].flag=1;

ufd[i].udir[k].fprotect[0]=rand()%2;

ufd[i].udir[k].fprotect[1]=rand()%2;

ufd[i].udir[k].fprotect[2]=rand()%2;

for(j=0;j<26;j++)fnamea[j].flag=0;

for(l=0;l<5;l++)

strcpy(afd[i].opname,""

afd[l].flag=0;

afd[l].opfprotect[0]=0;

afd[l].opfprotect[1]=0;

afd[l].opfprotect[2]=0;

afd[l].rwpoint=0;

void printufd(int i){int k;

printf("主文件目录:",ufd[i].uname);

printf("用户名\t文件名\t可读可写可执行\t文件长度");

for(k=0;k<10;k++)

if(ufd[i].udir[k].flag)

printf("%s\t%s\t%d %d %d\t\t%db",ufd[i].uname,ufd[i].udir[k].

fname,ufd[i].udir[k].fprotect[0],ufd[i].

udir[k].fprotect[1],ufd[i].udir[k].

fprotect[2],ufd[i].udir[k].flength);

void printafd() int l;

printf("运行文件目录:");

printf("文件名\t可读可写可执行");

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 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....