操作系统课设选题 (1)

操作系统课设选题 (1)
操作系统课设选题 (1)

《操作系统课程设计》任务书

一、课程编号:070006

二、适用专业: 计算机科学与技术专业

三、课程设计学时和学分:学时2周, 1学分

四、《操作系统课程设计》的目的

《操作系统》是一门重要的专业基础课,是涉及较多硬件知识的计算机系统软件课程。在计算机软硬件课程的设置上,它起着承上启下的作用。操作系统对计算机系统资源实施管理,是所有其他软件与计算机硬件的唯一接口,所有用户在使用计算机时都要得到操作系统提供的服务。

操作系统课程设计的主要任务是研究计算机操作系统的基本原理和算法,掌握操作系统的进程管理、存储管理、文件管理和设备管理的基本原理与主要算法。目的是使学生掌握常用操作系统(如DOS、Windows或Linux)的一般管理方法,了解它是如何组织和运作的,对操作系统的核心概念和算法有一个透彻的理解,并对系统运行的机制有一个全面的掌握,从而充分理解系统调用与程序设计之间的关系。

五、课程设计的要求

1、要求学生已有先导课程《数据结构》和一门高级程序设计语言的基础。

2、在两周的课程设计环节,要求学生选择那些最典型的操作系统概念和机制,通过模拟实现的方式来体现操作系统的管理原理与算法,进而深刻理解操作系统的运行机制和数据结构。

3、人员、题目分配:各班分成小组,每组2人,每组一题,每班各题目都要选到。每个小组各成员合作完成课程设计,要求自行进行选题的设计、开发、调试与测试, 实现课程设计要求的系统功能。

4、具体课程设计要求:

1)写出本次课程设计,小组中2名成员的分工

2)写出操作系统设计各个阶段的详细设计报告;

3)能够实现课程设计目标,根据选题内容设计出软件的结构和功能,写出系统的主要功能和使用说明;

4)设计有效的测试方法与测试数据,提交可运行的软件系统:最终的软件对问题的描述应正确无误,运行稳定、可靠,界面友好;

5)对于不同算法的比较应提供直观的性能分析方法及数据,写入课程设计文档内;

6)根据以上内容,提交如下材料:a.源程序、b.执行程序、c.课程设计报告。以班级为单位集中上交刻录光盘,每组学生一个文件夹(文件夹命名方式:学生1学号_名字+学生2学号_名字),课程设计报告需提交纸质文稿。

7)开发环境与语言可自行选择,Visual VC++6.0、VB、Delphi7、PowerBuild9.0、Visual Studio .NET、GCC等.

8)每组2名同学共同进行10分钟的报告和答辩,讲解设计方案,演示系统运行。课程设计提交时间:周四全天、五上午8:00~17:50,要求当场进行系统演示,并提交一份完整的打印的文档。

六、成绩评定

通过进度检查、设计答辩和报告评审了解学生的设计水平,根据任务完成的情况,设计报告的质量,系统运行状态及平时讨论和设计的积极程度全面准确评定成绩。评定的主要参考依据有:

1、选题难度。

2、系统功能的完成程度(功能、界面、特色、编程量、可用性)。

3、设计报告的质量。

4、上机检查结果和答辩情况。

5、平时检查情况。

课程设计成绩将以五级制形式进行评定,其标准如下:

1、优秀:软件运行正确无误,稳定可靠,界面友好新颖(图形界面),有交互性,各种文档齐全、详细、准确。

2、良好:软件运行正确无误,稳定可靠,界面友好,各种文档齐全、准确。

3、中等:问题描述正确,界面尚可接受。各种文档齐全、准确。

4、及格:问题描述正确,各种文档齐备。

5、不及格:有下列问题之一:问题描述有误;文档不齐;软件运行有错误;没有按时完成;课程设计有抄袭或是雷同情况。

七、课程设计报告格式

见后面附页。

青岛理工大学

操作系统课程设计报告

院(系):计算机工程学院

专业:计算机科学与技术班级:__

学生姓名:__学号:

__

题目:_________

起迄日期:_ 2016.07.XX-2016.07.XX___

设计地点:现代教育中心303

指导教师:

2015—2016年度第 2 学期

完成日期: 2016 年 7 月 XX 日

封面填写说明:

●专业各个班级按实际专业填写:计算机科学与技术、软件工程、

网络工程;

●封面上分别列出小组内二名成员的姓名与学号;

●设计地点,按专业分别填写:计算303、软件305、网络307)

●指导教师:由各专业自行安排,1-2名老师指导一个班级

说明:

1.红色字说明,最终报告须删除这部分;

2.蓝色字的说明,是要用自己所做的具体内容替换的部分。

一、课程设计目的(标题宋体加粗四号)

正文(宋体五号),单倍行间距,段前段后均设置为0行。

进行操作系统课程设计主要是在学习操作系统课程的基础上,在完成操作系统各部分实验的基础上,对操作系统的整体进行一个模拟,通过实践加深对各个部分的管理功能的认识,还能进一步分析各个部分之间的联系,最后达到对完整系统的理解。同时,可以提高运用操作系统知识解决实际问题的能力;锻炼实际的编程能力、创新能力及团队组织、协作开发软件的能力;还能提高调查研究、查阅技术文献、资料以及编写软件设计文档的能力。

二、课程设计内容及小组成员分工

模拟一种多任务(或多用户)(多道)批处理操作系统(包含处理器管理、存储管理、文件管理、进程管理、设备管理、作业管理)。

描述小组各成员在本次课程设计

三、系统分析与设计

1、系统分析

即需求分析的内容,功能需求(系统实现的功能描述)与数据需求(有哪些输入,会生产哪些输出结果,以数据流图的形式表示出来)

设计中所用到的重要数据结构或抽象数据类型的说明,以及在关键算法中的作用。例如,在银行家算法通用演示程序中,available:系统中可用资源向量、max:每个进程对资源的最大需求、need(每个进程对资源的需求)……,这些数据结构就是属于重要数据结构。2、系统设计:

系统设计方案(概要设计)

3、模块设计:

即详细设计包括:各程序模块之间的层次(调用)关系、主程序和其他子模块的算法,以流程图的形式表示。

本小节内所有的图均要求用Visio或Word进行绘制,不允许用bmp或其他格式的图片。绘图内文字均采用宋体五号(如果图比较大,排版不好看的话,可以根据需要缩小字体),单倍行间距,段前段后均设置为0行。

四、系统测试与调试分析

1、系统测试

●测试方法:黑盒、白盒等

●测试技术:单元测试、功能测试、场景测试

●测试数据:有实际意义的一些测试用例,如下面所列的“读者-写者”问题的测试

用例描述。

●测试报告:必须包含最终测试结果:列出你的测试结果,包括输入和输出。

报告这部分的撰写统一采用黑盒测试的方法,用测试用例证明你所要设计的功能和算法

2、调试分析:

调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析等。

五、用户手册

1、使用平台是什么?下载网址?

2、是否需要安装?如需要安装,如何安装?

3、说明如何使用你编写的程序,详细列出每一步的具体操作步骤。这里可以有适当的运行结果抓图。

用户手册与开发过程无关,只与使用有关,必须是Step by Step的。

所有运行结果截图均要求有实际数据的内容,截图尺寸要求按页宽排版两张大小,且要求有每张图下面有规范的标题。如:图1:系统登录界面。

六、程序清单

列出主要/关键算法的程序清单,要求加上详细的程序注释(函数体/过程注释,与语句行注释)

七、参考文献

[1] 汤子瀛编著,《计算机操作系统(修订版)》,西安电子科技大学出版社,2001年

不少于5条,可以是书籍、论文、网络资料(给出网址)

八、课程设计评价(由任课教师填写)

附件1:由指导教师提供的题目

选题一:动态资源分配算法演示程序

1、设计目的:主要用于解决多种临界资源被多个独立执行的进程动态申请使用的安全算法。银行家算法采用矩阵存储资源的数据,通过对系统资源预分配后检查系统状态,以避免死锁的产生。

2、设计要求:

1)在程序中有专门的初始化模块,在每次运行时可以对资源种类、数目以及初始进程

数目进行设定,在资源分配过程中可以随时增加进程及其对资源的最大需求(运行时增加的进程Allocation的值不允许设定,自动设定为0)

2)可读取样例数据(要求存放在外部文件中)进行资源种类、数目与进程数的初始化

3)进程可随时申请资源,如果合理,可用系统资源能够满足其申请,系统将根据进程

的申请自动进行安全状态检测,如果不会使系统进入不安全状态,则予以分配,否则拒绝分配,并给出相应的警告。

4)进程满足所有资源分配后能够自行释放所持有的资源,退出资源竞争

5)要求进行安全性检查时按指定策略顺序进行,即按每个进程当前Need数由小至大进

行排序,如果Need数相同,则按序号由小至大进行排序;

6)在运行过程中可以增加进程,只需要提供其Max的值,,可以动态进行资源的申请。

7)具有一定的数据容错性

选题二:通用处理机调度演示程序

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

2、设计要求(多道、单处理机):

1)进程调度算法包括:时间片轮转算法、先来先服务算法、抢占式短作业优先算法、

非抢占式短作业优先算法、静态优先权优先调度算法、高响应比调度算法

2)每一个进程有一个PCB,其内容可以根据具体情况设定。

3)进程数、进入内存时间、要求服务时间、作业大小、优先级等均可以在界面上设定

4)可读取样例数据(要求存放在外部文件中)进行进程数、进入内存时间、时间片长

度、作业大小、进程优先级的初始化

5)可以在运行中显示各进程的状态:就绪、执行(由于不要求设置互斥资源与进程间

的同步关系,故只有两种状态)

6)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相

应的阻塞队列

7)有性能比较功能,可比较同一组数据在不同调度算法下的平均周转时间

8)具有一定的数据容错性

选题三:采用时间片轮转算法的进程调度程序

1、设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,且进程之间也存在着同步与互斥的关系,要求采用指定的调度策略,使系统中的进程有条不紊地工作,通过观察诸进程的运行过程,以巩固和加深处理机调度的概念。

2、设计要求(多道、单处理机):

1)每一个进程有一个PCB,其内容可以根据具体情况设定。

2)可以在界面设定的互斥资源(包括两种:输入设备与输出设备)的数目

3)进程数、进入内存时间、要求服务时间可以在界面上进行设定

4)进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如下:

进程的服务时间由三段组成:I2C10O5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出)

进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行

因此,进程间的同步与互斥关系、服务时间可以统一用四段表示为:I2C10O5W2

5)可以在运行中显示各进程的状态:就绪、阻塞、执行

6)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相

应的阻塞队列

7)具有一定的数据容错性

选题四:采用高响应比算法的进程调度程序

1、设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,且进程之间也存在着同步与互斥的关系,要求采用指定的调度策略,使系统中的进程有条不紊地工作,通过观察诸进程的运行过程,以巩固和加深处理机调度的概念。

2、设计要求(多道、单处理机):

1)每一个进程有一个PCB,其内容可以根据具体情况设定。

2)可以在界面设定的互斥资源(包括两种:输入设备与输出设备)的数目

3)进程数、进入内存时间、要求服务时间可以在界面上进行设定

4)进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如下:

进程的服务时间由三段组成:I2C10O5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出)

进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行

因此,进程间的同步与互斥关系、服务时间可以统一用四段表示为:I2C10O5W2

5)可以在运行中显示各进程的状态:就绪、阻塞、执行

6)采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相

应的阻塞队列

7)具有一定的数据容错性

选题五:采用非抢占式短作业优先算法的进程调度程序

1、设计目的:在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个,且进程之间也存在着同步与互斥的关系,要求采用指定的调度策略,使系统中的进程有条不紊地工作,通过观察诸进程的运行过程,以巩固和加深处理机调度的概念。

2、设计要求(多道、单处理机):

1)每一个进程有一个PCB,其内容可以根据具体情况设定。

2)可以在界面设定的互斥资源(包括两种:输入设备与输出设备)的数目

3)进程数、进入内存时间、要求服务时间可以在界面上进行设定

4)进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如下:

进程的服务时间由三段组成:I2C10O5(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出)

进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行

因此,进程间的同步与互斥关系、服务时间可以统一用四段表示为:I2C10O5W2

5)可以在运行中显示各进程的状态:就绪、阻塞、执行

6) 采用可视化界面,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相

应的阻塞队列

7) 具有一定的数据容错性

选题六:采用最低松弛度优先调度的实时系统调度程序

1、设计目的:在实时系统中,要保证在指定的时间完成指定的任务,通常会采用抢占式的调度方式。要求采用指定的调度算法,使系统中的任务能够按时完成,通过观察中系统中的抢占点,以巩固和加深对实时系统调度算法的理解。

2、设计要求:

1) 每一个周期性实时任务必须指定周期长度与执行时间

2) 可以在界面安排周期性实时任务的个数与相关的指标值,又及要求仿真的时间长度

3) 系统可又对设定的任务条件进行检查,如果无法满足公式 的要求,则弹

出相应的错误提示,并重新进入任务安排界面 4) 可读取样例数据(要求存放在外部文件中)进行周期性实时任务数、周期长度、执

行时间的初始化

5) 采用可视化界面,数据载入后按最低松弛度算法进行调度,可以在运行中动态显示

各进程的状态:就绪、执行、完成

6) 系统上下文切换时,会暂停调度,显示就绪队列中各任务的松弛度,按任意键后自

动运行

7) 具有一定的数据容错性

选题七:用多进程同步方法演示“生产者-消费者”问题

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

2、说明:有界缓冲区内设有20个存储单元,放入取出的产品设定为1-20个整数。

3、设计要求:

1) 生产者和消费者进程的数目不固定,可在程序界面上设置

2) 生产者和消费者进程的数目在程序界面上可调,在运行时可随时单个增加与减少生

产者与消费者

3) 生产者的生产速度与消费者的消费速度均可在程序界面调节,在运行中,该值调整

后立即生效

4) 生产者生产的产品由随机函数决定

5) 多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码

6) 每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、

当前生产者与消费者的指针位置,以及生产者和消费者线程标识符

7) 采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓

冲区的状态

选题八:用多进程同步方法演示“桔子-苹果”问题

1、设计目的:通过研究Linux 的进程同步机制和信号量,实现特殊的生产者与消费者问题的并发控制。

2、说明:有两类生产者,一类负责生产桔子,一类负责生产苹果;有两类消费者,一类负责消费桔子,一类负责消费苹果;他们共享一个有20个存储单元的有界缓冲区,每个存储单元只能放入一种产品(桔子/苹果)。

3、设计要求:

1) 二类生产者与二类消费者数目均为20,即20个生产者负责生产桔子,20个生产者

负责生产苹果;20个消费者负责消费桔子,20个消费者负责消费苹果 11∑

=≤m i i

i P C

2)二类生产者的生产速度与二类消费者的消费速度均可独立在程序界面调节,在运行

中,该值调整后立即生效

3)多个生产者或多个消费者之间必须有共享对缓冲区进行操作的函数代码,同时需要

考虑算法的效率性

4)每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区的全部内容、

当前生产者与消费者的指针位置,以及生产者和消费者线程标识符

5)采用可视化界面,可在运行过程中随时暂停,查看当前生产者、消费者以及有界缓

冲区的状态

选题九:模拟二级文件管理系统

1、设计目的:通过研究Linux的文件系统结构,模拟设计一个简单的二级文件系统。

2、设计要求:

1)能够实现下列命令:

●Login 用户登录

●Dir 列文件目录

●Create 创建文件

●Delete 删除文件

●Open 打开文件

●Close 关闭文件

●Read 读文件

●Write 写文件

●Bit 显示外部存储空间的位示图(按16*16的形式显示)

2)系统能检查键入命令的正确性,出错时应能显示出错原因

3)列目录时要列出文件目录、文件名和文件长度,以及系统总容量,占用容量、空闲

容量(容量以字节为单位)

4)不允许对打开的文件执行重复打开操作或执行删除操作

5)外部存储空间的大小为256个Block,每个Block的大小为512字节,盘块号从1开

始编号

6)文件系统对外部存储空间采用连续分配的方式

7)控制块的大小为32字节,其中文件名字占8个字节,参照MS-DOS设计文件控制

块的数据结构;FAT由文件名、起始盘块号,长度、最后一块字节数四部分组成,占12个字节,磁盘的目录最大能存放256个目录项。目录固定放在外部存储器的1-6号盘块(12*256/512=6)。

选题十:通用请求分页调度算法演示程序

1、设计目的:用高级语言编写和调试一个内存分配程序,加深对内存分配算法的理解。

2、设计要求(多道):

1)演示实现下列四种请求分页存储管理方式的页面置换算法:

●先进先出的算法(FIFO)

●最佳置换算法(OPT)

●近期最久未使用算法(LRU)

●CLOCK置换算法

2)内存物理块数固定为20个,对多个作业采用固定分配局部置换的策略分配物理块

3)作业数量与作业大小(10-20页)可在界面进行设置

4)所有作业按RR算法进行调度,时间片长度为1秒

5)可为每个作业随机产生引用的页面串,也可以人工输入引用的页面串,页面串长度

20---100,要求必须包括作业所有的页面,可作为样例数据保存

6)可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、页面串长度

的初始化

7)要求对每种算法采用可视化界面,模拟内存分配和使用情况图,可在运行过程中随

时暂停,查看当前内存物理块使用情况。

8)有性能比较功能,可比较同一组数据在不同页面置换算法下的命中率

选题十一:采用CLOCK置换算法仿真请求分页系统

1、设计目的:用高级语言编写和调试一个内存分配程序,加深对内存分配算法的理解。

2、设计要求:

1)实现请求分页存储管理方式的页面置换算法:CLOCK算法

2)内存物理块数固定为20个,对多个作业采用可变分配局部置换的策略分配物理块

3)作业数量与作业大小(10-20页)可在界面进行设置

4)所有作业按RR算法进行调度,时间片长度为1秒

5)可为每个作业随机产生引用的页面串,也可以人工输入引用的页面串,页面串长度

20---100,要求必须包括作业所有的页面,可作为样例数据保存

6)可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、页面串长度

的初始化

7)要求采用可视化界面,模拟内存分配和使用情况图,可在运行过程中随时暂停,查

看当前内存物理块使用情况。

8)每次全部作业运行结束后,要求打印出访问命中率

选题十二:通用动态分区分配存储管理系统演示

1、设计目的:用高级语言编写和调试一个动态分区内存分配程序,加深对内存连续分配算法的理解。

2、设计要求:

1)演示实现下列三种动态分区分配算法

●循环首次适应算法

●最佳适应算法

●最坏适应算法

2)内存中有0-100M的空间为用户程序空间,最开始用户空间是空闲的

3)作业数量、作业大小、进入内存时间、运行时间需要通过界面进行输入

4)可读取样例数据(要求存放在外部文件中)进行作业数量、作业大小、进入内存时

间、运行时间的初始化

5)根据作业进入内存的时间,采用简单的先进先出原则进行从外存到内存的调度,作

业具有等待(从外存进入内存执行)、装入(在内存可执行)、结束(运行结束,退出内存)三种状态。(为了简化,不考虑CPU的调度与切换,运行时间为作业在内存中驻留的时间)

6)能够自动进行内存分配与回收,可根据需要自动进行紧凑与拼接操作,所有过程均

有动态图形变化的显示

7) 采用可视化界面,可随时暂停显示当前内存分配和使用情况图。

选题十三:设计内核同步原语

11、设计目的:掌握操作系统中信号量signal()与wait()的工作原理,和在Linux内核中增加系统调用函数的方法,了解对Linux内核重新进行编译、连接的过程。

1)要求设计三个原语实现操作系统中信号量signal()与wait()功能:Request()、

Release()和Broadcast()

2)Request()类似wait()操作,该原语允许多个进程因一个事件而阻塞,每次产生

阻塞时均会发出一个消息,“有多少个进程处于阻塞状态。”

3)Release()类似signal()操作,当一个进程产生这个事件的信号时,该原语会唤

醒处于阻塞队列中的第一个进程,并发出一个消息“进程XX解除了阻塞状态,尚有XX个进程处于阻塞状态。”;如果在信号产生时,没有进程因为这个事件阻塞,那么这个信号无效,不产生任何消息。

4)Broadcast()是类似一个广播操作,当一个进程产生这个事件的信号时,该原语会

唤醒处于阻塞队列中的所有进程,并发出一个消息“广播,所有进程解除了阻塞状态。”;如果在信号产生时,没有进程因为这个事件阻塞,那么这个信号无效,不产生任何消息。

5)编写一个测试程序,验证原语的正确性。

6)要求在实验报告中列出Linux内核的版本与编译过程

选题十四:采用“写优先”的策略演示“读者-写者”问题

1、设计目的:通过研究经典的进程进步问题,实现对读者-写者问题的并发控制。

2、说明:阅览室一次最多可以容纳20个人。

3、设计要求:

1)读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入

2)读者与写者均有二个以上,可在程序运行期间动态增加读者与写者

3)可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写

时间的初始化

4)要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、

读者等待队列、写者等待队列、读写时间、等待时间

5)读写策略为:读写互斥、写写互斥、写优先(只要写者到达,就阻塞后续的所有读

者,一旦阅览室无人,写者能最快进入阅览室;在写者未出阅读室之前,又有新的读者与写者到达,仍然是写者排在前面)

选题十五:采用“读写平等”的策略演示“读者-写者”问题

1、设计目的:通过研究经典的进程进步问题,实现对读者-写者问题的并发控制。

2、说明:阅览室一次最多可以容纳20个人。

3、设计要求:

1)读者与写者至少包括ID、进入内存时间、读写时间三项内容,可在界面上进行输入

2)读者与写者均有二个以上,可在程序运行期间动态增加读者与写者

3)可读取样例数据(要求存放在外部文件中),进行读者/写者、进入内存时间、读写

时间的初始化

4)要求将运行过程用可视化界面动态显示,可随时暂停,查看阅览室中读者/写者数目、

读者等待队列、写者等待队列、读写时间、等待时间

5)读写策略为:读写互斥、写写互斥、读写平等(严格按照读者与写者到达的顺序进

入阅览室,有写者到达,则阻塞后续到达的读者;有读者到达,则阻塞后续到达的写者)

选题十六:独占设备的分配与回收

1、设计目的:掌握独占设备的分配流程,会使用安全性算法检查设备分配是否安全

1)合理设计SDT、DCT、COCT、CHCT的数据结构

2)独占设备、控制器与通道的数目可在界面进行设置

3)进程申请使用独占设备时至少要求包括申请时间与使用时间

4)可读取样例数据(要求存放在外部文件中)进行独占设备、控制器与通道数目的初

始化,进行进程申请设备的初始化

5)点击开始运行后,系统自动根据初始设定的数据进行设备分配与回收,所有状态信

息需动态地显示出来:设备、控制器、通道数目,阻塞队列情况等

6)运行中可动态增加申请设备的进程,可随时暂停,查看当前状态

7)使用可视化界面进行演示

选题十七:模拟共享打印机的Spooling守护进程

1、设计目的:掌握采用Spooling技术解决独占设备的共享问题

2、设计要求:

1)daemon进程(守护进程)为一独立的进程模块,负责从输出井中取文件进行打印

2)请求打印进程的PCB至少包括:进程标识符、进程状态、信息块首地址、信息块长

度。进程状态有三种,包括:等待(输出井满,等待)、进入(打印数据已存入输出井)、结束(打印结束)

3)输出井为一有界存储空间,用一个一维char型数组表示,数组size为100,打印结

束后,相关空间可回收(可采用简单的连续分配,需有相应的数据结构)

4)请求打印进程的数目、打印内容既可从界面设置,也可以读取样例数据(要求存放

在外部的文件中),打印顺序由进程的先后顺序决定

5)运行过程中需动态显示出进程的状态与输出井的使用情况(用类似位示图的形式显

示出来)

6)在显示器上设定一输出区域,运行时实时输出打印结果:先是输出相应进程号的一

条打印提示消息,如“进程1打印结果:”,然后1秒钟输出一个单元的数据。打印结束后,请求进程状态置为结束

参考书籍:

[1] 操作系统教程与实验胡明庆,高巍,钟梅清华大学出版社2007.1

[2] 精通UNIX下C语言编程与项目实践朱云翔,胡平电子工业出版社2007.12

[3] visual C# 高级编程范例谭桂华等清华大学出版社2004.5

等等

操作系统课程设计报告书

题目1 连续动态内存管理模拟实现 1.1 题目的主要研究内容及预期达到的目标 (1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。 (2)实现内存分配和回收功能。 1.2 题目研究的工作基础或实验条件 (1)硬件环境:PC机 (2)软件环境:Windows XP,Visual C++ 6.0 1.3 设计思想 首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。 循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。 最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。 1.4 流程图 内存分配流程图,如图1-1所示。

图1-1 内存分配流程图内存回收流程图,如1-2所示。

图1-2 内存回收流程图 1.5 主要程序代码 (1)分配内存 void allocate(char z,float l) { int i,k; float ad; k=-1; for(i=0;i= l && free_table[i].flag == 1) if(k==-1 || free_table[i].length

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

操作系统课程设计磁盘调度报告

题目:磁盘调度 一.设计目的 本课程设计是学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,我们更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强了动手能力。 二.课程设计内容和要求 编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度,要求设计主界面以灵活选择某算法,且以下算法都要实现: 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 三.算法及数据结构 3.1算法的总体思想 设备的动态分配算法与进程调度相似,也是基于一定的分配策略的。常用的分配策略有先请求先分配、优先级高者先分配等策略。在多道程序系统中,低效率通常是由于磁盘类旋转设备使用不当造成的。操作系统中,对磁盘的访问要求来自多方面,常常需要排队。这时,对众多的访问要求按一定的次序响应,会直接影响磁盘的工作效率,进而影响系统的性能。访问磁盘的时间因子由3部分构成,它们是查找(查找磁道)时间、等待(旋转等待扇区)时间和数据传输时间,其中查找时间是决定因素。因此,磁盘调度算法先考虑优化查找策略,需要时再优化旋转等待策略。 平均寻道长度(L)为所有磁道所需移动距离之和除以总的所需访问的磁道数(N),即: L=(M1+M2+……+Mi+……+MN)/N 其中Mi为所需访问的磁道号所需移动的磁道数。 启动磁盘执行输入输出操作时,要把移动臂移动到指定的柱面,再等待指定扇区的旋转到磁头位置下,然后让指定的磁头进行读写,完成信息传送。因此,执行一次输入输出所花的时间有: 寻找时间——磁头在移动臂带动下移动到指定柱面所花的时间。 延迟时间——指定扇区旋转到磁头下所需的时间。 传送时间——由磁头进程读写完成信息传送的时间。 其中传送信息所花的时间,是在硬件设计就固定的。而寻找时间和延迟时间是与信息在磁盘上的位置有关。 为了减少移动臂进行移动花费的时间,每个文件的信息不是按盘面上的磁道顺序存放满一个盘面后,再放到下一个盘面上。而是按柱面存放,同一柱面上的各磁道被放满信息后,再放到下一个柱面上。所以各磁盘的编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序。 3.2算法实现

操作系统课程设计报告

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级: 13软件工程1班 提交时间: 2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。

二、环境条件 系统: WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。

(4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课设

课程设计报告课程名称:计算机操作系统 专业班级: 学号: 姓名: 指导教师: 报告日期: 计算机科学与技术学院

目录

1 实验目的 ·掌握Linux操作系统的使用方法; ·了解Linux系统内核代码结构; ·掌握实例操作系统的实现方法; 2 实验环境 本次课程设计采用的操作系统环境是windows8、Ubuntu双系统,Ubuntu系统版本号为14.04,内核版本号为linux 3.13.0;采用的编程环境为CodeBlocks IDE和QtCreator。 3 实验内容 3.1 实验一 掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。 (1)编写一个C程序,其内容为实现文件拷贝的功能。 (2)编写一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库(GTK/Qt)。 3.2 实验二 掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用,另编写一个应用程序,调用新增加的系统调用。实现的功能是:文件拷贝。 3.3 实验三 掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动程序,其功能可以简单。(实现字符设备的驱动) 3.4 实验四(选做) 了解和掌握/proc文件系统的特点和使用方法 (1)了解/proc文件的特点和使用方法; (2)监控系统状态,显示系统中若干部件使用状态; (3)用图形界面实现系统监控状态; 3.5 实验五(选做) 设计并实现一个模拟的文件系统。

多用户的多级目录的文件系统设计。多用户、多级目录、login(用户登录)、系统初始化(建文件卷,提供登录模块)、文件的创建、文件的打开、文件的读写、文件关闭、删除文件、创建目录(建立子目录)、改变当前目录、列出文件目录、退出。 4 设计与实现 4.1 实验一 4.1.1 实验要求 掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。 4.1.2 具体实现 本实验内容是用CodeBlocks IDE实现的,该软件整合了函数库和编译器,因此使用起来非常方便。 (1)编写一个C程序,其内容为实现文件拷贝的功能。 在windows操作系统上实现的文件拷贝功能一般使用fopen、fread、fwrite三个来自标准C函数库的函数执行对文件的打开、读、写操作,而本次实验要求使用Linux 系统的系统调用open、read、write实现上述三个操作。 用到的主要头文件如下: stdio.h——标准输入输出头文件 string.h——字符串处理相关头文件 unistd.h——Linux系统调用头文件,比如read、write fcntl.h——包含open系统调用 errno.h——包含一些调试错误时用到的变量 具体实现思路: 打开两个文件(分别是源文件和目标文件,可以是任意字符流形式存储的文件,包括文本文件、照片等),调用read函数读取源文件的内容,将read的返回值作为while循环的判断条件,当返回值大于0(即还未读取完毕源文件中的内容)时,调用write执行向目标文件写的操作,否则跳出循环,表示源文件已经被拷贝到目标文件,然后调用close关闭源文件和目标文件。 代码编写完成后,在CodeBlocks上编译运行即可。程序运行之前,桌面上只有“教程.docx”,运行之后,桌面上新建了“教程副本.docx”,并且“教程.docx”中的内容被复制到了“教程副本.docx”,程序运行结果如下所示:

华中科技大学计算机学院操作系统课程设计报告[1]

华中科技大学 嵌入式操作系统课程设计实验报告 院系: 计算机科学与技术学院 专业: 班级: 姓名: 指导老师: 报告时间: 计算机科学与技术学院

目录 1.课程设计目的 (3) 2.课程设计环境搭建 (3) 3.内容一:熟悉和理解Linux编程环境 3.1 内容要求 (5) 3.2 设计过程及实现 (5) 4.内容二:掌握添加系统调用的方法 4.1 内容要求 (9) 4.2 设计过程及实现 (9) 5.内容三:掌握添加设备驱动程序的方法 5.1 内容要求 (17) 5.2 设计过程及实现 (17) 6.内容四:理解和分析/proc文件 6.1 内容要求 (22) 6.2 设计过程及实现 (22)

1 课程设计目的 (1)掌握Linux操作系统的使用方法; (2)了解Linux系统内核代码结构; (3)掌握实例操作系统的实现方法。 2 课程设计环境搭建 (1)windows 7上,利用虚拟机软件VMware软件搭建的linux平台:◎Ubuntu 11.10 (安装包:ubuntu-11.10-desktop-i386) ◎内核:linux-headers-3.0.0-12-generic (2)更改root登录: 在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法: ◎开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端: 初始化/修改root密码 sudo passwd root 用vi编辑器修改这个文件: sudo vi /etc/lightdm/lightdm.conf 在文件最后加入这么一行代码: greeter-show-manual-login=true 然后保存退出,sudo reboot 重启系统。之后就可以输入root用户登录。(3)在添加系统调用中用到的其他内核包: ◎下载和当前实验环境最为接近的系统版本(这点很重要) 使用apt-get install linux-source-3.0.0 命令, ◎下载结果是linux-source-3.0.0.tar.bz2 ◎解压命令:tar –xjvf linux-source-3.0.0.tar.bz2 –C /usr/src ◎解压后,在/usr/src目录下得到内核文件夹linux-source-3.0.0

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

centos操作系统课程设计报告

操作系统课程设计告 学院:计算机科学与技术 姓名 班级: 学号: 姓名: 学号: 班级:

一、实验目的 (2) 二、实验任务 (2) 三、实验步骤 (3) (一)安装Linux系统 (3) (二)重新编译内核 (6) (三)重新启动新内核 (7) (四)编译驱动程序 (8) 四.心得体会 (19)

一、实验目的 1.掌握linux系统安装的方法 2.掌握linux Kernel的编译过程 3.掌握系统引导管理器Grub的使用 4.学会编写简单的模块化的字符设备驱动程序 二、实验任务 1.在虚拟机下安装某一Linux的发行版(推荐CentOS)或者直接安装linux的一款系统 2.从内核官网https://www.360docs.net/doc/7f12479940.html,下载某一新的内核版本,并进行编译 3.设置系统引导管理器(推荐Grub),使得系统可以从新内核启动

4.编写一个简单的模块化字符设备驱动程序,动态地装载和卸载以模块形式存在的字符设备驱动程序。同时,学会对所编写的字符设备驱动程序进行测试,最终了解Linux操作系统是如何管理字符设备的 基本要求: (1)编写初始化和注销函数:scull_init() 和 scull_exit(); (2)编写5个基本的设备接口函数,包括scull_open(),scull_write(),scull_read(),scull_ioctl() (3)和scull_release(); (4)一个测试程序来测试所编写的字符设备驱动程序。 三、实验步骤 (一)安装Linux系统 1.安装虚拟机:VMware workstation 10

2.新建虚拟机 (1)导入安装程序光盘映像文件(导入Ubuntu 14.04压缩文件) (2)设置Ubuntu安装信息

操作系统课程设计实验报告

河北大学工商学院 课程设计 题目:操作系统课程设计 学部信息学部 学科门类电气信息 专业计算机 学号2011482370 姓名耿雪涛 指导教师朱亮 2013 年6月19日

主要内容 一、设计目的 通过模拟操作系统的实现,加深对操作系统工作原理理解,进一步了解操作系统的实现方法,并可练习合作完成系统的团队精神和提高程序设计能力。 二、设计思想 实现一个模拟操作系统,使用VB、VC、CB等windows环境下的程序设计语言,以借助这些语言环境来模拟硬件的一些并行工作。模拟采用多道程序设计方法的单用户操作系统,该操作系统包括进程管理、存储管理、设备管理、文件管理和用户接口四部分。 设计模板如下图: 注:本人主要涉及设备管理模块

三、设计要求 设备管理主要包括设备的分配和回收。 ⑴模拟系统中有A、B、C三种独占型设备,A设备1个,B设备2个,C设备2个。 ⑵采用死锁的预防方法来处理申请独占设备可能造成的死锁。 ⑶屏幕显示 注:屏幕显示要求包括:每个设备是否被使用,哪个进程在使用该设备,哪些进程在等待使用该设备。 设备管理模块详细设计 一、设备管理的任务 I/O设备是按照用户的请求,控制设备的各种操作,用于完成I/O 设备与内存之间的数据交换(包括设备的分配与回收,设备的驱动管理等),最终完成用户的I/O请求,并且I/O设备为用户提供了使用外部设备的接口,可以满足用户的需求。 二、设备管理函数的详细描述 1、检查设备是否可用(主要代码) public bool JudgeDevice(DeviceType type) { bool str = false; switch (type) { case DeviceType.a: {

操作系统课设

课 程 设 计 20 ——20 学年 第 学期 课程名称 操作系统 学 院 计算机科学与技术学院 专 业 班 级 姓 名 指导教师

课程设计任务书 题目: 系统调用 初始条件: 学习了高级语言程序设计、汇编语言、数据结构、计算机组成原理课程,掌握了一种计算机高级语言。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 学习在Linux中产生一个系统调用以及怎样通过往Linux内核中增加一个新函数从而在该内核空间中实现对用户空间的读写。这个函数的功能是返回当前 的系统时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 时间安排: 指导教师签名: 20 年月日系主任(或责任教师)签名:年月日

目录 1.简介 (1) 1.1实验环境 (1) 1.2 Linux系统及内核 (1) 1.3 Linux系统调用 (2) 2.实验原理及详细步骤流程 (3) 2.1.实验原理和思路 (3) 2.2.详细步骤 (3) 2.2.1.环境搭建及前期准备 (3) 2.2.2.内核文件修改 (4) 2.2.3.编译并切换内核 (5) 2.2.4.测试新系统调用 (6) 3.过程分析及实验结果 (7) 2.1 过程分析 (7) 2.2.运行结果 (9) 4.调试记录 (9) 5.自我评价与总结 (10) 6.参考文献 (11) 评分表 (12)

一.简介 1.1.实验环境 1.2. Linux系统及内核 Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux是一个一体化内核(monolithic kernel)系统。"内核"指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。 操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,Linux内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给Linux内核,调用相应的的Linux内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序。

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件 系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景

计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。 2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下: 钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<

操作系统课程设计报告

课程设计报告课程名称:操作系统原理 院系:计算机科学与技术 专业班级: CS140 ____ __ 学号: U201414_____ 姓名: ______ ___ 指导教师: _______ __ 完成时间: 2017年3月11日_

目录 1实验目的 (2) 2实验环境 (2) 3实验内容 (2) 3.1实验一 (2) 3.2实验二 (2) 3.3实验三 (3) 3.4实验四 (3) 3.5实验五(选做) (3) 4设计与实现 (3) 4.1实验一 (3) 4.2实验二 (6) 4.3实验三 (9) 4.4实验四 (11) 5心得体会 (14)

1 实验目的 ·掌握Linux操作系统的使用方法; ·了解Linux系统内核代码结构; ·掌握实例操作系统的实现方法; 2 实验环境 本次课程设计采用的操作系统环境是windows10、Ubuntu双系统,Ubuntu系统版本号为16.04,内核版本号为linux 4.4.4;前两个实验在当前Ubuntu环境下完成,后两个实验在win10下虚拟机VirtualBox的Ubuntu 15.10(内核为linux4.2.0-42)中完成。 3 实验内容 3.1 实验一 要求熟悉和理解Linux下的编程环境。 (1)编写一个C程序,用fread、fwrite等库函数实现文件拷贝功能。 (2)编写一个C程序,使用基于文本的终端图形编程库(curses)或图形界面(QT/GTK),分窗口显示三个并发进程的运行(一个窗口实时显示当前时间,一个窗口实时监测CPU的利用率,一个窗口做1到100的累加求和,刷新周期分别为1秒,2秒和3秒)。 3.2 实验二 要求掌握添加系统调用的方法,采用编译内核方法,添加一个新的系统调用,实现文件拷贝的功能,另外编写一个应用程序,测试新增加的系统调用。

操作系统课程设计

操作系统课程设计 Prepared on 22 November 2020

湖南科技大学计算机科学与工程学院 操作系统课程设计报告 学号: ******** 姓名:* * 班级: *** 指导老师: *** 完成时间: ****.**.** 目录 实验一 Windows进程管理 实验二 Linux进程管理 实验三互斥与同步 实验四银行家算法的模拟与实现 实验五内存管理 实验六磁盘调度 实验七进程间通信 实验一 Windows进程管理 一、实验目的 1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。 2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。

3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。 二、实验内容和步骤 (1)编写基本的 Win32 Consol Application 步骤1:登录进入 Windows 系统,启动 VC++ 。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择 “Win32 ConsolApplication”,然后在“Project name”处输入工程名,在“Location” 处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”,然后在“File” 处输入 C/C++源程序的文件名。 步骤4:将清单 1-1 所示的程序清单复制到新创建的 C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的 debug 子目录,执行编译好的可 (2)创建进程 本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程 ID和它在进程列表中的位置。 步骤1:创建一个“Win32 Consol Application”工程,然后拷贝清单 1-2 中的程序编译成可执行文件。 步骤2:在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。 步骤3:在“命令提示符”窗口加入参数重新运行生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。 (3)父子进程的简单通信及终止进程

操作系统课程设计报告

东莞理工学院 操作系统课程设计报告 学院:计算机学院 专业班级:13软件工程1班 提交时间:2015/9/14 指导教师评阅意见: . 项目名称:进程与线程管理功能 一、设计目的 用语言来模拟进程和线程管理系统,加深对进程和线程的理解,掌握对进程和线程各种状态和管理的算法原理。 二、环境条件

系统:WindowsXP、VMWare、Ubuntu Linux 语言:C/C++ 开发工具:gcc/g++、Visual C++ 6.0 三、设计内容 1. 项目背景 计算机的硬件资源有限,为了提高内存的利用率和系统的吞吐量,就要根据某种算法来管理进程和线程的状态从而达到目的。 进程与线程管理功能完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 进程与线程管理功能 基本要求:完成基于优先级的抢占式线程调度功能,完成进程虚拟内存管理功能。 提高要求:(增加1项就予以加分) (1) 实现多种线程调度算法; (2)通过“公共信箱”进行通信的机制,规定每一封信的大小为128字节,实现两个用户进程之间通过这个“公共信箱”进行通信。 (3) 实现多用户进程并发的虚拟内存管理功能。 (4) 实现用户进程间通信功能,并用生产者/消费者问题测试进程间通信功能的正确性。 (5) 实现改进型Clock页面置换算法。 (6) 实现Cache功能,采用FIFO替换算法。

2. 扩展内容 实现多种线程调度算法:时间片轮转调度算法 四、人员分工 优先级调度算法:钟德新,莫友芝 时间片轮转调度算法:张德华,袁马龙 设计报告由小组队员共同完成。小组成员设计的代码分工如下:钟德新编写的代码:void Prinft(){ PCB *p; system("cls");//清屏 p=run; //运行队列 if(p!=NULL) { p->next=NULL; } cout<<"当前正在运行的进程:"<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<next; } cout<procname<<"\t\t"<pri<<"\t"<needOftime<<"\t\t"<runtime<<"\t\t"<state<

华科操作系统课设报告

华中科技大学操作系统课程设计实验报告 专业:计算机科学与技术 班级:1101 姓名:许阳 学号:U201014241

一、实验目的 掌握Linux操作系统的使用方法; 了解Linux系统内核代码结构; 掌握实例操作系统的实现方法。 二、实验要求 1、掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux 下的编程环境。 ●编一个C程序,其内容为实现文件拷贝的功能; ●编一个C程序,其内容为分窗口同时显示三个并发进程的运行结 果。要求用到Linux下的图形库。 2、掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用。 另编写一个应用程序,调用新增加的系统调用。 实现的功能是:文件拷贝; 3、掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动 程序,其功能可以简单。 实现字符设备的驱动; 4、了解和掌握/proc文件系统的特点和使用方法 ●了解/proc文件的特点和使用方法 ●监控系统状态,显示系统中若干部件使用情况 ●用图形界面实现系统监控状态。 5、设计并实现一个模拟的文件系统(选作) 三、实验一 1、编一个C程序,其内容为实现文件拷贝的功能 要实现文件拷贝功能,主要用到的函数是open、write、read。 以前在windows下写C语言打开文件常用的fopen,此时不能用,因为fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不 同的内核api ;所以应该直接使用linux中的系统函数open。 主要用到的头文件: Unistd.h \\包含了许多Linux系统服务的函数原型,如:read、write Fcntl.h \\定义了很多宏和open,fcntl函数原型 Stdio.h \\标准输入输出头文件 sys/types.h \\此头文件包含适当时应使用的多个基本派生类型sys/stat.h \\包含了获取文件属性的一些函数 errno.h \\用于调试错误代码是所需要的一些errno变量 string.h \\包含了处理字符串的一些函数

操作系统-课程设计

课程设计说明书(操作系统) 题目:进程调度 院系:计算机科学与工程学院 专业班级:信息安全13-2 学号:20133029xx 学生姓名:xx 指导教师:xx 2015年12月15日

安徽理工大学课程设计(论文)任务书计算机科学与工程学院

安徽理工大学课程设计(论文)成绩评定表

摘要 现代计算机系统中,进程是资源分配和独立运行的基本单位,是操作系统的核心概念。因而,进程就成为理解操作系统如何实现系统管理的最基本,也是最重要的概念。进程调度是进程管理过程的主要组成部分,是必然要发生的事件。 在现代操作系统中,进程的并发机制在绝大多数时候,会产生不断变化的进程就绪队列和阻塞队列。处于执行态的进程无论是正常或非正常终止、或转换为阻塞状态,都会引发从就绪队列中,由进程调度选择一个进程进占CPU。 进程调度的核心是进程调度的算法.在本课程设计中,用良好清晰的界面向用户展示了进程调度中的时间片轮转调度算法。在最终实现的成果中,用户可指定需要模拟的进程数,CPU时间片和进程的最大执行时间,并且选择需要演示的算法,界面将会动态的显示进程调度过程及各个队列的变化。通过此进程调度模拟系统,用户可以对时间片轮转调度算法有进一步以及直观的了解。 关键词:进程,调度,PCB,时间片轮转

目录 1.设计目的 (6) 2.设计思路 (6) 3.设计过程 (8) 3.1流程图 (8) 3.2算法 (8) 3.3数据结构 (10) 3.4源代码 (10) 4.实验结果及分析 (20) 4.1 使用说明 (20) 4.2程序演示 (20) 5.实验总结 (24) 6.参考文献 (24)

操作系统课程设计报告

操作系统课程设计实验报告 实验名称:进程控制 姓名/学号: 一、实验目的 学习、理解和掌握Linux与windows的进行控制系统调用的功能,熟悉主要的几个系统调用命令的格式和如何利用系统调用命令进行编程。通过学习,理解如何创建一个进程、改变进程执行的程序、进程和线程终止以及父子进程的同步等,从而提高对进程和线程控制系统调用的编程能力。 二、实验内容 设计并实现Unix的“time”命令。“mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并记录程序运行的时间。 三、实验环境 CPU: Inter ×2 2.10GHz RAM: 3.00GB Windows 7 旗舰版 Linux Ubuntu 10.04 编译: VS2010 四、程序设计与实现 4.1进程控制系统的调用 4.1.1 windows进程控制调用程序中使用的数据结构及主要符号说明 SYSTEMTIME starttime,endtime; //进程开始时间和结束时间 PROCESS_INFORMATION pi //该结构返回有关新进程及 //其主线程的信息 STARTUPINFO si //该结构用于指定新进程的主窗口特性4.1.2 linux进程控制调用程序中使用的数据结构及主要符号说明 struct timeval starttime,endtime //进程开始时间和结束时间 pid_t pid //进程标志符

4.2 程序流程图 图1 windows进程控制调用图2 linux进程控制调用程序运行流程图程序运行流程图 五、实验结果和分析 5.1 windows实验结果和分析

操作系统课程设计报告

; 一、概述 课程设计目的、意义: 课程设计目的使学生熟悉文件管理系统的设计方法;加深对所学各种文件操作的了解及其操作方法的特点。通过模拟文件系统的实现,深入理解操作系统中文件系统的理论知识, 加深对教材中的重要算法的理解。同时通过编程实现这些算法,更好地掌握操作系统的原理及实现方法,提高综合运用各专业课知识的能力。 主要任务: 模拟文件系统设计是设计和实现一个简单的文件系统。内容包括: 1.建立文件存储介质的管理机制 2.建立目录(采用一级目录结构) 3.文件系统功能(显示目录、创建、删除、打开、关闭、读、写) ~ 4.文件操作接口(显示目录、创建、删除、打开、关闭、读、写) 二、系统设计 课程设计的系统设计: 本系统模拟一个文件管理系统,要完成对文件的基本操作,文件的基本操作有文件、文件夹的打开、新建、删除和读取写入文件,创建更改目录,列出目录内容等信息。系统建立了文件目录树,存储文件系统中的所有文

件。对于用户名下的文件,用文件目录树的分枝来存贮。采用命令行操作界面很直观,也方便用户进行操作,用户只要按照操作界面所显示的命令来操作就行了。 整体设计框架: 系统初始化界面是由创建用户存储空间,管理文件,退出系统三个模块组成。用户创建由创建用户存储空间,进入目录,删除用户存储空间,显示所有用户存储空间,等模块组成。然后各个模块再由一些小模块组成。其中创建文件,打开关闭文件,读写文件等文件操作模块包括在进入目录模块里面。 三、系统实现 课程设计主要内容的实现程序代码: 《 #include <> #include <> #include <> typedef struct file{ char name[10]; struct file *next; }File; typedef struct content{ ! char name[10]; File *file;

相关文档
最新文档