操作系统大作业题目与要求

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统大作业题目与要求

一、大作业要求:

1.学生根据自己实际情况自由选择题目,多人可选择同一题,每人选择的题目需独立完成,。

2.分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包括界面)、详细设计必要的算法,并最终显示结果。基于WINDOWS或LINUX操作系统都可以,用何种编程语言都有可以。

3.提交报告,包括设计要求、设计思想流程、设计所涉及的主要数据结构、程序清单、运行结果、设计心得、参考资料等。

4.严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。

5.所提交源程序应是能够运行通过的完整程序。

6.课程设计参考评分标准:

设计思想说明(10分);数据结构的说明(6分);各模块的算法流程图(10分);程序清单:注意加注释(包含关键字、方法、变量等),在每个模块前加注释;(共70分,其中书面源程序占35分,实验的检查结果、程序的运行情况占35分)体会,总结及体会建议(4分)。

二、设计题目

1.Windows多线程控制台程序

目的:学习和掌握如何编写Windows多线程控制台程序。通过编写程序,加深对进程和线程关系的理解,掌握多线程程序的执行和编写技巧。

设计要求:写一个单进程多线程的Windows控制台程序,该程序在一个进程内建立N个线程来执行指定的任务。N由命令行传递给系统。

Win32控制台程序中,主函数的格式如:

Void main(int argc,char *argv[]),可以获取命令行参数。

通过VC++“工程/设置”的C/C++属性页设置应用程序为“MTD”多线程。

利用win32 API CreateThread()来生成线程。

2.睡眠理发师问题

目的:了解信号量机制,了解并掌握进程同步和互斥机制,熟悉信号量的操作函数,利用信号量实现对共享资源的控制。

设计要求:

(1)编写程序实现理发师与顾客进程的同步。

问题描述:这是一种经典的IPC问题,理发店有一位理发师,一把理发椅和n把用来等候理发的椅子。如果没有顾客,则理发师在理发椅上睡觉,顾客理来时,如理发师闲则理发,否

则如有空椅则坐等,没有空椅则离开,编写程序实现理发师和顾客程序,实现进程控制,要求不能出现竞争。

(2)将(1)题中问题修改为有两位理发师,设计程序实现同步控制。

问题提示:可以用一个变量waitting来记录等候理发的顾客数,另使用三个信号量:用来记录等候理发的顾客数customers;用来记录理发师是否空闲的信号量barbers,一个用于互斥访问waitting变量的mutex.。

3.进程调度模拟程序

目的:深入掌握进程调度的概念原理和实现方法。

设计要求:编写一个进程调度程序,允许多个进程并行执行。

进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)、先来先服务算法、按时间片轮转调度算法,最终总结该算法的优缺点,写出设计体会。

每个进程有一个进程控制块(PCB)表示,进程控制块可以包含如下信息:

进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。

进程的优先数及需要的运行时间可以事先人为指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪W(wait)、运行R(run)或完成F(finish)三种状态之一。

4.进程调度模拟程序2

目的:深入掌握进程调度的概念原理和实现方法。

设计要求:编写一个进程调度程序,允许多个进程并行执行。

进程调度算法:采用最高优先数优先与按时间片轮转调度结合算法,最终总结该算法的优缺点,写出设计体会。

如果运行下个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进行已占用CPU时间还未达到所需要的运行时间,也就是进程还需要继续运行,此时应将进程的优先数减1(即降低一级),然后把它插入就绪队列等待CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。重复以上过程,直到所有进程都完成为止。

5.读者与写者问题(进程同步问题)

目的:了解进程同步的概念,理解信号量机制的原理,掌握运用信号量解决进程同步问题的方法,进而学会运用进程的同步与互斥。

设计要求:编程模拟读者与写者问题,要求显示结果。

问题描述:

(1)多个进程共享一个文件,其中只读文件的称之为读者,其余只写文件的称为写者。读

者可以同时读,但是写者只能独立写。

(2)对(1)修改,使得它对写者优先,即一旦有写者到,后续的读者都必须等待,而无论是否有读者在读文件。

6.模拟文件管理系统

目的:深入了解文件管理系统,初步掌握文件管理系统的实现方法。

设计要求:编写一程序,模拟一个简单的文件管理系统。树型结构,目录下可以是目录,也可以是文件。

在此文件管理系统,可实现的操作有:

改变目录:格式:cd <目录名>

显示目录:格式:dir[<目录名>]

创建目录:格式:md <目录名>

删除目录:格式:rd<目录名>

新建文件:格式:edit<文件名>

删除文件:格式:del<文件名>

退出文件系统:exit

实现参考:

(1)文件系统采用二叉树型存储结构,结点结构如下:

Struct FileNode

{

Char filename[FILENAME_LEN];//文件名/目录名

Int isdir ;//目录、文件的识别标志

Int i_nlink;//文件链接数

Int adr;//文件的地址

Struct FileNode *parent,*child;//指向父亲的指针和左孩子的指针

Struct FileNode *sibling_prev,*sibling_next;//指向前一个兄弟的指针和后一个兄弟的指针。

}

(2)目录名和文件名支持全路径名和相对路径名,路径名各分量间用“/”隔开

(3)功能具体描述:

改变目录:改变当前工作目录,目录不存在是给出出错信息

显示目录:显示指定目录下或当前目录下所有文件和一级目录(选做:带/s参数的dir命令,显示所有子目录)

创建目录:在指定路径或当前路径下创建指定目录。重名时给出出错信息。

相关文档
最新文档