自己用一组数据手动执行程序;或和同学一起阅读自己的程序,以全面地了解该程序的逻辑。
1.2 报告的整理与形成
一、调试报告
包括的内容有问题是如何解决的,讨论与分析、改进设想、经验与体会、时空复杂度等。
二、源程序清单和结果
打印的源程序清单和测试结果附在设计报告的后面。源程序必须有注释,以及必要的测试数据和运行结果数据。注释提倡用英文描述。
三、文档及资料的形成
在程序开发过程中,逐步形成各种必要的文档及资料。
第二章 设计内容
2.1 文件系统的设计与实现
一、设计目的
通过设计一个小型文件系统,进一步掌握文件管理的方法和技术,使学生初步具有研究、设计、编制和调试操作系统模块的能力。
二、设计要求与提示
1.问题描述
在任一OS下,建立一个大文件,把它假想成一张盘,在其中实现一个简单的小型文件系统。
2.基本要求
该文件系统没有子目录机制,文件连续分配,不考虑换“盘”和分区。做一个简单的操作界面,提供五条简单的命令:dir、mkfile、type、copy、delfile,分别用于显示文件目录、建立文件、显示文件内容、复制和删除一个文件。
三、设计思想、环境说明和使用工具
1.设计思想
建立一个系统文件(模拟盘),并对此进行盘块的划分,第一个盘块存放文件目录,第二盘块存放盘块位示图,自第三个盘块开始存放各具体文件的内容,文件目录存放文件的名字,文件的扩展名,开始盘块号,所占用的盘块数目,文件的大小;盘块位示图用来标记盘块是否被占用。
2.环境说明 工具:C语言。
在WINDOWS环境下使用VC++进行编译及运行。
四、主要的数据结构
数据结构说明:
struct filename { //文件目录项结构体
char name[9]; //文件名 char ext[4]; //扩展名
int i; //文件所占用磁盘块的第一个磁盘块号
int Amount; //文件所占用磁盘块的块数 long int size; //文件大小 };
struct empty { //盘块结构体
int map[100]; //盘块位示图 };
int filenum; //文件数量
五、课程设计应提交的主要内容
1.写出实现文件管理的数据结构、算法和算法流程图。 2.打印出程序清单。
3.写出程序调试及运行情况。
4.写出课程设计出现的问题及解决的方法。 5.课程设计的体会。 6.自我评价与总结。
2.2 银行家算法的设计与实现
一、设计目的
通过银行家算法设计与实现,可以加深学生对死锁的理解,掌握死锁的预防、避免、检测和解除的基本原理,重点掌握死锁的避免方法—银行家算法。使学生初步具有研究、设计、编制和调试操作系统模块的能力。
二、设计要求
1.问题描述
系统在进行资源分配的过程中,允许进程动态的申请资源,为了避免发生死锁,在分配资源前要进行安全性检查,若此次分配不会导致系统进入不安全状态,便将资源分配给进程,否则,进程等待。
2.基本要求
设计一个进程动态请求资源的模拟系统,实现随机产生进程请求资源的数量;资源安全性检查算法;资源的分配算法;以及输出显示每次请求的结果和系统资源的状态。
三、设计思想、环境说明和使用工具
1.设计思想
输入当前进程资源的使用情况以及整个系统的资源使用情况,并进行初始化安全性检查;如果是不安全状态,重新初始化系统;否则,从等待队列中提取一个等待进程,使用银行家算法进行检测,输出当前系统的状态和安全序列;如果是安全状态,系统继续从等待队列中提取等待进程进行检查;如果是不安全状态,进程回到等待队列,系统从等待队列中提取等待进程进行检查。系统中申请资源的进程全部进入等待队列等候处理。
2.环境说明 工具:C语言。
在WINDOWS环境下使用VC++6.0进行开发。
四、主要的数据结构
数据结构说明:
#define MAX_RESOURCE_TYPE 10 //定义最大的系统资源类数
struct task_struct {
//进程控制块
int pid; //进程编号
int max[MAX_RESOURCE_TYPE]; //进程对资源的最大需求 int alloc[MAX_RESOURCE_TYPE]; //进程已经分配的资源 int request[MAX_RESOURCE_TYPE];//进程本次申请的资源数
};
等待队列采用链表结构进行设计。
五、课程设计应提交的主要内容
1.写出实现银行家算法的数据结构、算法和算法流程图。 2.打印出程序清单。
3.写出程序调试及运行情况。
4.写出系统设计中出现的问题及解决的方法。 5.课程设计的体会。 6.自我评价与总结。