文华学院。
2017 ~2018 学年度第 2 学期《操作系统课程设计》考查试卷(a卷)
课程性质:(必修使用范围:(本科)
考查时间:2024年3月2 日考查方式:( 开卷)
试题:要求:
独立完成,3000-(不含附件)。
一、课程设计任务及要求3
1.1设计任务3
1.2设计要求3
二、算法及数据结构3
2.1主要数据结构3
2.2用户管理模块5
2.2.1初始化用户函数5
2.2.2系统用户的输出函数6
2.2.3用户的查找函数6
2.3创建文件函数6
2.4删除文件函数8
2.5打开文件函数9
3.6读文件函数11
3.7写文件函数11
3.8关闭文件函数12
3.9显示文件函数13
3.9.1显示用户文件13
3.9.2显示已打开的文件13
三、程序设计与实现18
4.1 程序流程图18
4.2 程序说明18
4.3 实验结果19
四、参考文献21
六、收获、体会和建议22
七、附录源程序清单23
一、课程设计任务及要求。
1.1 设计任务。
设计、实现一个模拟的文件系统。
1.2 设计要求。
建立文件存储介质的管理机制。
建立目录(采用一级目录结构)
文件系统功能(显示目录、创建、删除、打开、关闭、读、写)
文件操作接口(显示目录、创建、删除、打开、关闭、读、写)
独立完成课程设计内容。
文本的课程设计报告,内容包括调试记录和程序清单(附注释)。
二、算法及数据结构。
2.1主要数据结构。
* *定义文件数据结构 */
typedef struct file
char file_name[20] ;
bool file_protect[3] ;
bool open_file_protect[3] ;仅在文件打开时有效
int read , write ; 定义为读写指针
int file_length ;
struct file *next ;
file ;
/* 用户与文件的映射 */
typedef struct x_map
char username[20] ;
file *file ;
struct x_map *next ;
map ;
* *定义主文件目录 */
typedef struct mfd
map *head , tail ;
mfd ;
* *打开文件目录 */
typedef struct afd
file *head , tail ;
int max_open ;
int current_open ;
afd ;
主文件目录(mfd)和用户文件目录(ufd)
打开文件目录(afd)
2.2用户管理模块。
2.2.1初始化用户函数
void inituser(mfd *mfd)
//初始化两个不同用户
for(int i = 1 ; i <=2 ; i++)
map *m ;
m = map*)malloc(sizeof(map))
if(m ==null)
exit(0) ;
cout<<"please input init user name :
cin>>m->username ;
m->file = null ; m->next = null ;
if(mfd->head ==null)
mfd->head = mfd->tail = m ;
else mfd->tail->next = m ;
mfd->tail = m ;
初始化两个不同用户,把输入用户的用户名下的目录指针、文件指针初始化。
2.2.2系统用户的输出函数。
void displayuser(mfd *mfd)
map *m = null ;
m = mfd->head;
cout<<"user :
while(m)
cout m = m->next ; cout<} 通过用户与文件关联映射的指针来输出已存在的用户数据。 2.2.3用户的查找函数。 map * queryuser(char username mfd *mfd) map *m = null ; m = mfd->head ; while(m) if(strcmp(username , m->username) =0) return m ; m = m->next ; return null ; 进行用户的查找,找到则返回用户映射指针。 2.3创建文件函数。 bool createfile(map *user , char file_name bool file_protect[3] ,int file_length) file *file ; file = file*)malloc(sizeof(file)) if(file ==null) return false ; /进行文件的初始化 strcpy(file->file_name , file_name) ; file->file_protect[0] =file_protect[0] ; file->file_protect[1] =file_protect[1] ; file->file_protect[2] =file_protect[2] ; file->file_length = file_length ; file->read = file->write = 0 ; file->next = null ; if(user->file ==null) user->file = file ; else file *op , preop = null ; op = user->file ; /查找是否存在同名文件 while(op) if(strcmp(op->file_name , file->file_name) =0) cout<<"the file name " preop = op ; op = op->next ; preop->next = file ; 输入文件名,文件权限及文件长度,将文件的名称、读写权限、长度等进行初始化,然后查找是否存在同名文件,存在同名文件时则输出该文件已存在并报错。 2.4删除文件函数。 bool deletefile(map *user , char file_name afd *afd) file *file = null , prefile = null , temp ; file = afd->head ; /在打开文件中查找 while(file) if(strcmp(file_name , file->file_name) =0) cout<<"return false ; file = file->next ; file = user->file ; /在文件中进行查找 while(file) if(strcmp(file_name , file->file_name) =0) if(file ==user->file) temp = file ; user->file = file->next ; else temp = file ; prefile->next = file->next ; 西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中... 课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟... 实验一进程管理。一 实验目的。1 开发一个函数,建立进程控制块和资源控制块结构,并实现相关数据结构的初始化。2 开发一系列操作,由进程调用这些操作,达到控制进程申请或释放各种资源的目的。通过实验理解进程的概念,进程的组成 pcb结构 进程的并发执行和操作系统进行进程管理的相关原语 主要是进程的创建 ...操作系统课程设计报告
操作系统课程设计报告
操作系统课程设计报告