1. 设计要求。
设计内容。
可从以下选做题目中任选一个作为课题,简单文件系统的实现为必做,课程设计中系统的设计和调试要求独立完成。
设计文档(每人一份)
设计文档包括设计要求、设计思想及流程、设计所涉及的主要数据结构、程序清单、设计心得、参考资料等。
2. 设计时间(16周答辩)
3. 开发系统、工具(仅供参考)
unix、linux、 c编译器、 j**a编译器、window 、vc++
4. 参考资料。
《计算机操作系统》
《unix操作系统设计》
《linux函数大全》
《c语言》
《j**a语言》
设计1 进程管理(选做)
1. 设计目的。
加深对进程概念的理解,明确进程和程序的区别;进一步认识并发执行的实质;实现linux中进程通信的两种方式:软中断和管道通信。
2. 设计内容。
1) 进程的创建和控制。
编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。每个进程在屏幕上显示一个字符,记录屏幕上的显示结果,并分析原因。
修改以编写的程序,将每个进程输出一个字符改为每个进程输出一句话。
2) 进程的软中断通信。
使用系统调用fork()创建两个子进程,使用系统调用。
signal()让父进程捕捉用alarm函数设置时钟的时间段终止时产生的信号,当捕捉到该信号后,父进程使用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后分别输出子进程被杀死信息后终止,父进程等待两个子进程终止后,输出父进程被杀死信息后终止程序。记录屏幕上的显示结果,并分析原因。
3) 进程的管道通信。
使用系统调用pipe()建立一个管道;两个子进程分别向管道写信息,父进程则从管道读出来自子进程的信息,显示在屏幕上。
记录屏幕上的显示结果,并分析原因。
3. 系统调用函数说明、参数值及定义。
1. fork()
创建一个新进程进程。
int fork()
其中返回int取值意义如下:
正确返回:在父进程中返回子进程的进程号,在子进程中返回0
错误返回:-1
2.lockf(int files,int function,long size)
用作锁定文件的某些段或者整个文件。
file:文件描述符;function:锁定和解锁,1表示锁定,0表示解锁;size:是锁定或解锁的字节数,若用0,表示从文件的当前位置到文件尾。
3.signal(int sig, (func) function)
进程控制软中断信号的处理。signal()会依照参数sig指定的信号编号来设置该信号的处理函数。
sig: sigalrm: alarm()函数设置的时钟的时间段终止时产生的信号。
其它信号略。
function:信号处理的一个函数地址。
4. kill(int pid,int sig)
向一个进程或一个进程组发信号,可以用来送参数sig指定的信号给参数pid指定的进程。
pid: pid>0 将信号传给进程号为pid的进程。
其它略。signumber: 送给进程号为pid进程指定信号量。
5. alarm(unsigned int seconds)
设置一个指定时间的计时器。
seconds: 设置时间秒数。
6. int pipe(int filedes[2])
filedes为整数数组名,在调用这个函数后,系统为通道分配的两个文件描述符将通过这个数组返回到用户进程中, filedes[1]是文件输出描述符, filedes[0]是文件输入描述符。
7. int wait(int *status)
暂停目前进程的执行,直到有信号到来或子进程的结束。子进程的结束状态指会由参数status返回,如果不在意结束状态时,则参数status可以设置成null
设计2 进程的同步与互斥(选做)
1. 设计目的。
分析进程争用资源的现象,学习解决进程互斥的方法。
2. 设计内容。
用程序实现生产者-消费者问题。
问题描述:
一个仓库可以存放k件物品。生产者每生产一件产品,将产品放入仓库,仓库满了就停止生产。消费者每次从仓库中去一件物品,然后进行消费,仓库空时就停止消费。
数据结构:
进程:producer - 生产者进程,consumer - 消费者进程
buffer: array [0..k-1] of integer;
in,out: 0..k-1;
in记录第一个空缓冲区,out记录第一个不空的缓冲区
s1,s2,mutex: semaphore;
s1控制缓冲区不满,s2控制缓冲区不空,mutex保护临界区;
初始化s1=k,s2=0,mutex=1
原语描述。
producer(生产者进程):
item_type item;
while (true)
consumer(消费者进程):
item_type item;
while (true)
3. 提示。
设计3 存储管理(选做)
1. 设计目的。
通过请求页式存储管理中页面置换算法设计,了解存储技术的特点,掌握请求页式存储管理的页面置换算法。
2. 设计内容。
将指令序列转换为用户虚存中的请求调用页面流。
1. 页面大小为1k
2. 用户内存容量为4页到40页。
3. 用户外存的容量为40k
在用户外存中,按每k存放10条指令,400条指令在外存中的存放方式为:
0-9条指令为第0页。
10-19条指令为第1页。
390-399条指令为第39页。
按以上方式,用户指令可组成40页。
通过随机数产生一个指令序列,共400个指令(0-399)
模拟请求页式存储管理中页面置换算法。
执行一条指令,首先在外存中查找所对应的页面和页面号,然后将此页面调入内存中,模拟并计算下列各述算法在不同内存容量下的命中率(页面有效次数/页面流的个数)
1) 先进先出的算法(fifo)
2) 最久未使用算法(lru)
3) 最佳淘汰算法(opt)
3. 提示。
随机指令的产生
rand() 或srand()
用户内存中页面控制结构采用链表。
页面控制结构
struct p_str
int pagenum页号 */
int count访问页面的次数 */
struct p_str next下一指针 */
p_str;
设计4 简单文件管理系统的实现(必做)
1. 设计目的。
设计实现一个简单的模拟文件管理系统,包括目录文件、普通文件、i结点和存储区,2. 设计内容(仅供参考)
1、 构造类似于linux的的目录结构。目录的层次可适当控制。
2、 在此模拟文件管理系统中可以实现的操作有:
改变目录:cd<目录名>,工作目录转移到指定的目录下。目录不存在时,给出错误信息。
创建文件:edit<文件名>,创建一个指定名字的新文件,即在目录中增加一项,不考虑文件的内容。对于重名文件给出错误信息。
删除文件:del<文件名>,当没在用户使用指定文件时,将其删除。文件不存在时给出错误信息。
显示目录:dir<目录名>,显示指定目录下的全部文件和第一级子目录,如果没有指定目录名,则显示当前目录下的相应内容。
创建目录:md<目录名>,在指定路径下创建指定的目录,如没有指定路径,则在当前目录下创建指定的目录。对于重名目录给出错误信息。
删除目录:rd<目录名>,删除指定目录及其下的全部文件和子目录。如果指定目录为空,可直接删除,否则给出用户提示是否删除。
其他说明:目录名>和<文件名>都支持全路径名和相对路径名。
文件名由目录结构中各级文件名分量排列构成,各分量间用“/”隔开。
输入exit命令可退出此模拟文件管理系统。
3. 提示与问题(仅供参考)
可以按如下方式定义相关的函数:
main主函数。
cdcomd改变目录功能处理。
editcomd创建文件功能处理。
delcomd删除文件功能处理。
rdcomd删除目录功能处理。
dircomd显示目录功能处理。
mdcomd创建目录功能处理。
init初始化文件树。
parsecommand接受输入的命令并将其分解成操作名和路径文件名。
executecommand():执行命令,根据参数paral,调用相应的功能处理模块;若输入命令有误,则报错。
findpath查找参数ph所指向的路径
findfilename():从参数para2中找到要建立或删除的子目录,文件名,并调用查找路径子函数把指针指向其父亲结点。
createfilenode():创建结点
getinput缓冲区安全输入子函数,如果输入超过缓冲区长度,则截取前[缓冲区长度-1]位,最后一位补“/0”
checkcommand():命令检查。
getdir获取当前目录名。
trim对命令进行格式处理,即去掉空格等。
文件系统采用二叉树存储结构,每个文件结点可采用如下结构:
struct filenode
char filename[filename_len]; 文件名/目录名。
int isdir目录文件识别标志。
int i_nlind文件的链接数。
int adr文件的地址。
struct filenode *parent,*child; /指向父亲的指针和指向左孩子的指针。
struct filenode *sibling_prev,*sibling_next;//指向前一个兄弟的指针//和指向后一个兄弟的指针。
操作系统课程设计
课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 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....