c模拟linux进程管理课程设计,操作系统课程设计

一、设计目的

本课程设计是学生学习完《操作系统原理》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。

二、设计要求

从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:两人一组,每组从所给题目中任选一个(如自拟题目,需经指导教师同意),每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同;设计完成后,将所完成的工作交由指导教师检查;要求写出一份详细的设计报告。

三、设计内容

课题一、编制银行家算法通用程序,并检测所给状态的系统安全性。

1)银行家算法中的数据结构:

可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则表示系统中现有Rj

类资源K个。

最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。

分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给没一进程的资源数。如果Allocation[i,j]=K,则表示进程i当前已分得Rj类资源的数目为K。

需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

上述三个矩阵存在如下关系:

Need[i,j]= Max[i,j]- Allocation[i,j]

2)银行家算法

设Request[i]

是进程Pi的请求向量,如果Request[i,j]=K,表示进程Pi需要K个Rj类型的资源。当Pi发出资源请求后,系统按下述步骤进行检查:

如果Request[i,j]<=

Need[i,j],便转向步骤2;否则认为出错,因为它所需要的资源数已超过它所宣布的最大值。

课题二、处理机调度程序:选择一个调度算法,实现处理机调度。

设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。

设计要求:

1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。

2)可选择进程数量

3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现),进入子页面后输入进程数,(运行时间,优先数由随机函数产生),执行,显示结果。

课题三、用多进程同步方法解决生产者-消费者问题

设计目的:通过研究Linux 的进程机制和信号量实现生产者消费者问题的并发控制.

说明:有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1-20这20个整型数.

设计要求:(1)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者县城的标识符.(2)生产者和消费者各有两个以上.(3)多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码.

提示:(1) 有界缓冲区可用数组实现.

课题四、设计一个虚拟存储区和内存工作区,编程序演示下述算法的具体实现过程,并计算访问命中率:

要求设计主界面以灵活选择某算法,且以下算法都要实现

1、先进先出算法(FIFO)

2、最近最久未使用算法(LRU)

课题五、编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度:

要求设计主界面以灵活选择某算法,且以下算法都要实现

1、先来先服务算法(FCFS)

2、最短寻道时间优先算法(SSTF)

3、扫描算法(SCAN)

4、循环扫描算法(CSCAN)

课题六、编程模拟多进程共享临界资源:

要求产生3个进程:

1、两个进程模拟需要进入临界区的用户进程,当需要进入临界区时,显示:“进程x请求进入临界区…”,同时向管理进程提出申请;申请返回,表示进入了临界区。在临界区中等待一段随机时间,并显示:“进程x正在临界区…”;当时间结束,显示:“进程x退出临界区…”,同时向管理进程提出退出申请;当申请返回,显示:“进程x已退出临界区。”

2、一个进程作为原语的管理进程,接受其他进程的临界区进入请求:如果允许进入,则设置相应变量,然后返回;如果不允许进入,则进入循环等待,直到允许为止;

3、对临界区的访问应遵循空闲让进、忙则等待、有限等待、让权等待的准则。

4、进程间通信可以采用信号、消息传递、管道或网络通信方式。

课题七、为LINUX 设计一个简单的二级文件系统。要求做到以下几点:

1、可以实现下列几条命令(至少4条)。

Login 用户登录

Dir 列文件目录

Create 创建文件

Delete 删除文件

Open 打开文件

Close 关闭文件

Read 读文件

Write 写文件

2、列目录时要列出文件名、物理地址、保护码和文件长度。

3、源文件可以进行读写保护。

课题八、存储管理--动态分区分配算法的模拟:

要求设计主界面以灵活选择某算法,且以下算法都要实现:首次适应算法、循环首次适应算法、最佳适应算法;

课题九、编程演示三种存储管理方式的地址换算过程:

1、分页方式的地址换算

2、分段方式的地址换算

3、段页式的地址换算

要求演示正确、清晰,编程所用工具不限。

课题十、编写一个简单的命令解释器—模拟shell功能

基本要求

1、 可打开提示符,并获取用户输入的指令

2、 可解析指令

3、 可寻找命令文件

4、 可执行基本的命令

课题十一、实现系统状态监测工具

目的:实现程序,通过获取/proc文件系统所提供的系统信息,检查系统当前的各种状态信息。

要求:通过在命令行运行该程序,可获取以下信息:

1、 CPU类型、型号、内核版本等信息

2、 从系统启动至今的时间等

3、 内存总容量及当前可用内存量

4、 系统平均负载

5、 支持的文件系统类型

6、 系统正在使用的module信息

四、课程设计考核方式

课程设计成绩评定的依据有设计文档资料、具体实现设计方案的程序及课程设计考勤登记表,其中平时成绩占总成绩的20%。

优:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确,其中有总体设计思想的论述;程序完全实现设计方案,设计方案先进,软件可靠性好;

良:有完整的符合标准的文档,文档有条理、文笔通顺,格式正确;有完全实现设计方案的软件,设计方案较先进;

中:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案正确;

及格:有完整的符合标准的文档,有基本实现设计方案的软件,设计方案基本正确;

不及格:没有完整的符合标准的文档,软件没有基本实现设计方案,设计方案不正确。

提交的电子文档和软件必须是由学生自己独立完成,雷同者教师有权视其情况扣分或记零分。

五、提交的资料

1、文档:有关的分析设计文档要求使用计算机打印在学校统一制定的课程设计纸上,同时提交电子文档。

课程设计报告主要内容

(1)概述:设计主要完成的任务和解决的主要问题;

(2)设计的基本概念和原理;

(3)总体设计:实现的方法和主要技术路线;

(4)详细设计:使用主要控件、函数;

(5)完成的情况;

(6)简要的使用说明;

(7)总结:特色、经验、教训和感受;

(8)参考文献

2、软件:软件需提供加注释的源程序,并能正常运行。

注:对于分析设计中未能实现的部分需要加以说明。对于软件中所参考的部分模块或代码需要加以声明,并说明出处。

六、操作系统课程设计题目分组

学号 题目

1,6,11… 银行家算法

2,7,… 生产者-消费者问题

3,8,… 页面置换算法

4,9,… 进程调度模拟

5,10,… 简单文件系统

1. 页面置换算法

2. 生产者与消费者问题

3. 银行家算法源程序(C语言版)

4. 银行家算法(C++版)

5. 进程调度模拟

6. 简单文件系统

七、上机安排

17周 12.21-12.25

上午 8:30~11:15

A407

下午 2:40~ 5:30

A407

A407

B202

晚上

B202