指导书《操作系统课程设计》
操作系统课程设计-指导书

长沙学院课程设计指导书课程设计名称操作系统课程设计系(部)计算机科学与技术(盖章)专业软件工程班级09软件1-3班,09游戏1班2011年 5 月 25 日课程名称:操作系统课程设计课程编号:7020530510主笔人:何文德主审人:邓旭东一、课程设计的目的本课程是操作系统课程的重要组成部分,通过本课程的学习,使学生能更进一步地理解操作系统的设计和实现思路。
掌握操作系统主要原理和算法。
培养学生的实际运用操作系统原理分析解决问题的能力。
二、课程设计的题目1.进程管理仿真程序设计2.虚拟磁盘驱动程序设计三、设计内容(主要技术关键的分析、解决思路和方案比较等)(一)进程管理仿真程序设计1.基本要求:设计一个仿真程序,仿真进程管理的五大功能,包括创建进程,用新进程替换当前进程映像,进程状态转换,进程调度,上下文切换。
2.创新要求在基本要求达到后,可以进行创新设计。
3.设计方法和基本原理(1) 问题描述:系统由4种程序组成,它们是进程管理程序(kernel)、命令解释程序(commander)、系统信息程序( reporter)、用户程序(Application)。
系统内有3种进程(下称模拟进程),它们是:命令解释进程(commander),系统信息进程( reporter),用户进程(Application)。
Kernel程序首先运行。
Kernel启动后,创建commander进程。
Kernel程序根据需要创建reporter进程和Application进程。
Kernel负责维护6个数据结构,包括时间(Time), 处理器状态(CPUstate),进程表(PCBTable), 就绪队列(ReadyState),等待队列(BlockedState),运行进程(RunningState)。
系统采用时间轮转和优先级调度混合算法。
优先级以优先数表示,优先数越大则优先级越高。
调度时,就绪队列中优先数最大的进程优先运行,相同优先数进程按FIFO方式调度。
操作系统课程设计指导书

操作系统课程设计指导书计算机工程学院一、课程教学的目标(一)课程性质“操作系统基础”是计算机专业的核心专业课,“操作系统课程设计”是理解和巩固操作系统基本理论、原理和方法的重要的实践环节。
(二)课程的目的操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。
本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握多道程序设计基本技能。
二、教学内容基本要求及分配学时(一)课程设计的题目基于WINDOWS的多道程序设计(二)设计内容在windows98、windows2000操作系统下,使用的VC、VB、java或C等编程语言,采用多道程序设计技术编写一个游戏软件或解决一个简单的实际问题。
(三)设计的要求(1)经调试后程序能够正常运行,并体现多道程序的特点。
(2)本程序可运行在win98或winNT/2000操作系统下,可安装到任意路径下。
(3)采用多进程或多线程方式运行,尽量体现进程间的同步和互斥关系。
(四)参考软件外观设计参考“大炮打飞机”类的游戏软件。
(五)学时分配(1)基本任务简介、原理讲解 2学时(2)软件设计 4学时(3)上机编程、调试 24学时(4)检查考核 2学时三、主要教学环节(一)设计的步骤(1)需求分析:了解基本原理,确定软件的基本功能,查找相关资料,画出基本的数据流图;(2)总体设计:确定软件的总体结构、模块关系和总体流程;(3)详细设计:确定模块内部的流程和实现算法。
(4)上机编码和调试;(5)实际数据运行测试。
(二)设计的指导与答疑每小班30人,每小班至少配备一名指导教师跟综辅导答疑,解决技术难题。
(三)设计的考评教师根据设计报告、软件的运行演示和学生回答问题的情况评定成绩。
(1)设计报告规范、完整,概念原理论述清楚、软件设计结构合理,独立完成设计,软件运行正常,能够突出表现多道程序运行的特点,回答问题准确明了,可以评为优秀(A)。
操作系统课程设计指导书

操作系统课程设计指导书赵伟华梁红兵刘真2015年4月计算机学院第一章操作系统课程设计的内容与实施方法.............................................................. - 3 -1.1 操作系统课程设计总体要求............................................................................. - 3 -1.2 操作系统课程设计的内容................................................................................. - 3 -1.3 操作系统课程设计实施方案............................................................................. - 3 - 第二章基于DOS的多任务系统的实现........................................................................ - 5 -2.1 设计目的和内容要求......................................................................................... - 5 -2.2 线程描述.......................................................................................................... - 6 -2.3 线程的创建和撤消.......................................................................................... - 8 -2.4 线程调度设计................................................................................................ - 10 -2.5 基本实例程序的实现.................................................................................... - 23 -2.6 线程的阻塞和唤醒........................................................................................ - 26 -2.7 线程的同步与互斥........................................................................................... - 26 -2.8 利用消息缓冲队列通信机制实现线程间通信............................................... - 27 - 第三章简单文件系统的实现.................................................................................... - 32 -3.1 设计目的和内容要求......................................................................................... - 32 -3.2 预备知识............................................................................................................. - 33 -3.3实例系统的设计与实现...................................................................................... - 36 - 第四章:linux进程管理 .................................................................................................. - 47 -4.1 设计目的和内容要求......................................................................................... - 47 -一、设计目的.................................................................................................... - 47 -二、设计内容.................................................................................................... - 47 -三、思考............................................................................................................ - 48 -4.2 Linux基本使用: ............................................................................................ - 48 -一、进入Linux系统和退出Linux系统......................................................... - 48 -二、图形化界面................................................................................................ - 49 -三、常用命令.................................................................................................... - 50 -四、Linux的在线帮助man ............................................................................. - 73 -五、vi和vim编辑器 ....................................................................................... - 75 -六、Linux环境下C编程................................................................................. - 79 -七、gdb调试工具............................................................................................. - 81 -4.3 linux进程控制 ................................................................................................. - 84 -4.4 linux进程通信 ................................................................................................. - 92 -(一)Linux管道通信机制 ............................................................................... - 92 - (二)Linux消息队列通信机制 ....................................................................... - 97 - (三)linux共享内存通信............................................................................... - 104 -4.5 进程/线程同步(信号量).............................................................................. - 115 -(一)System V信号量 ..................................................................................... - 115 - (二)Posix信号量:........................................................................................ - 115 -操作系统课程设计指导书第一章操作系统课程设计的内容与实施方法1.1 操作系统课程设计总体要求1.遵守机房纪律,服从机房调度。
《操作系统》课程设计说明书

河南城建学院《操作系统》课程设计说明书设计题目:UNIX/Linux文件系统分析专业:计算机科学与技术指导教师:邵国金耿永军陈红军班级:0614082学号:061408261姓名:贠炳森同组人:叶矿辉、陈宇计算机科学与工程系2011年1月7日前言在现在计算机更新如此迅速的时代要学好计算机软件技术,特别是操作系统的学习,不仅要努力学好课本上的基础知识,还要经常在图书馆看些有关这方面的书籍,而更重要的是要有足够的实践经验,也要注重和同学的交流,经常尝试性的做些小的操作系统,对自己技术的提升会有很大的帮助。
同时,学习计算机操作系统技术,除了需要刻苦努力外,还需要掌握软件和操作系统的原理与设计技巧。
如何学习和掌握操作系统技术的原理与实际技巧呢?除了听课和读书之外,最好的方法恐怕就是在实践中练习。
例如,自己设计一个小型操作系统,多使用操作系统,多阅读和分析操作源代码等。
但由于我们的条件和学时有限,在理论学习过程中没有给同学们提供更多的实验机会。
本操作系统课程设计,是给同学提供一个集中实验的机会。
希望同学们通过该设计加深对所学习课程的理解。
本设计是基于课程中学到的UNIX系统调用,使用操作系统环境是Red Hat Linux 9,言语开发环境是Linux的GNU C或C++。
我做的课程设计是:Linux/Unix文件系统分析。
在Linux系统下,使用与文件相关的系统调用实现对物理设备文件的读写,参照Linux系统源代码以及Grub 系统的源代码,对不同介质上的FAT格式文件系统进行分析。
要求在Linux环境下设计出C语言程序,实现以下功能:1)分析UNIX SysV/Linux系统引导记录的作用;2)分析UNIX SysV/Linux的超级块及其结构,并建立相关数据结构,通过编程实现UNIX SysV/Linux文件系统内各部分的定位。
3)至少要实现对给定i节点文件的只读访问目录一.系统环境 (3)1.1硬件环境 (3)1.2软件环境 (3)二.设计目的及要求 (3)三.总体设计 (5)四.详细设计 (6)五.调试与测试 (6)六.设计中遇到的问题及解决方法 (6)七.Linux/Unix文件系统分析源程序清单 (7)7.1 头文件 (7)7.2 示例程序 (10)八.运行结果及分析 (16)8.1 linux文件系统读取 (16)8.2 UNIX文件系统读取 (18)九.心得体会 (19)十.参考文献 (20)Linux/Unix文件系统分析一.系统环境1.1硬件环境cpu为pentium4双线程技术,频率为2.8GHZ,内存为256MB。
操作系统课程设计任务书

《操作系统》课程实验指导书一、设计题目题目一:模拟实现页式虚拟存储管理页面置换算法题目二:模拟实现虚拟存储管理(请求分页存储管理)题目三:模拟实现可变分区存储管理题目四:模拟实现算法多级反馈队列进程调度算法题目五:模拟银行家算法二、设计目的《操作系统》课程实验是计算机类专业的集中实践性环节之一,是学习完《操作系统》课程后进行的一次全面的综合练习。
其目的在于加深对操作系统课程的理解,使学生更好地掌握操作系统的基本概念、基本原理、及基本功能,理解操作系统在计算机系统中的作用、地位和特点,具有分析实际操作系统,设计、构造和开发现代操作系统的基本能力,为今后从事的各种实际工作,如设计、分析和改进各种系统软件和应用软件提供必要的软件理论基础。
、设计内容设计内容一页式虚拟存储管理页面置换算法1.目的和要求在熟练掌握计算机虚拟存储技术的原理的基础上,利用一种程序设计语言模拟实现几种置换算法,一方面加深对原理的理解,另一方面提高学生通过编程根据已有原理解决实际问题的能力,为学生将来进行系统软件开发和针对实际问题提出高效的软件解决方案打下基础。
2.设计内容阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。
模拟实现页式虚拟存储管理的三种页面置换算法(OPT、FIFO和LRU),并通过比较性能得出结论。
前提:(1)页面分配采用固定分配局部置换。
(2)作业的页面走向和分得的物理块数预先指定。
可以从键盘输入也可以从文件读入。
(3)置换算法的置换过程输出可以在显示器上也可以存放在文件中,但必须清晰可读,便于检验。
3.设计环境Windows操作系统、VC++6.0C语言4.设计提示(1)基础知识存储管理是操作系统进行资源管理的一个重要功能。
现代操作系统广泛采用虚拟存储的技术对内存进行扩充。
实现虚拟存储的一个主要技术手段就是将辅存和主存统一管理,在二者之间进行对换,从而形成物理上两级而逻辑上一级的存储管理系统。
一个置换算法的好坏对这个逻辑上的单级虚存的性能起着极其重要的作用,而且会影响处理机的调度性能。
操作系统课程设计说明书

操作系统课程设计说明书课程设计说明书课程设计名称:操作系统题目:XXXXXXX年级:开发小组名称:小组自评成绩:小组负责人:课题组成员:姓名学号班级自评成绩分工签字课题开发日期:指导教师:1. 概述1、目的与意义题目:多道程序缓冲区协调操作设自行车生产线上有3只箱子(BOX ),箱中有N 个位置(N>=2),BOX1每个位置可存放下一个车架,BOX2每个位置可存放一个车轮,BOX3每个位置可存放下一台组装好的车。
有设有3个(类)工人,工人1不定地向箱1中放车架,工人2不定地向箱2中放车轮,工人3不定地从箱中1取出一个车架和箱2中取2个轮子,组装成一台自行车,并把它放到BOX3中。
任何一个时刻只能有1个工人对箱子操作。
有很多个搬运工(Carrier )不停地将BOX3取出运走。
其活动可分别可以抽象为图1。
采用多进程或多线程方式,运用同步和互斥机制,设计一个多道程序完成上述任务和操作。
提示:需要设计Worker1、Worker2、Worker3、Carrier 类线程基本功能要求:(1)提供良好图形界面,显示整个系统操作过程,可以暂停和继续系统的执行;(2) 可以设定各BOX 容量;(3) 可以设定PUT 、GET 、Move 操作的速度;(4) 实时显示每个BOX 中当前物品的数量,空闲空间的数量;(5) 实时显示线程、进程所处于等待(阻塞)状态的个数;(6)程序运行结束,显示汇总数据:总的运行时间;处理个物品的个数;平均每个BOX 中的物品个数。
(7)能够将每次的实验输入和实验结果存储起来,随时可查询。
意义:通过本次课设应对消费者生产者问题有一个更加透彻的了解,加深对于多线程下的互斥同步机制的理解。
2、主要完成的任务;1、数据的输入:包括文件输入和键盘输入。
输入工人数量可用资源数量以及BOX 的容量和工人的生产时间;2、数据的处理(多线程机制):根据可用资源计算生产最大车辆人员最佳分配比例以及根据输入安装生产线按照多线程方式运转;3、数据的输出:运行中实时显示BOX 中的物品数量和余量以及系统中线程阻塞的个数和名称,以及历史纪录。
操作系统课程设计任务指导书

《操作系统原理》课程设计--进程调度模拟程序一、课程设计目的《操作系统原理》是计算机科学与技术专业的一门专业核心课程,也是研究生入学考试中计算机专业综合中所涉及的内容。
该课程理论性强,纯粹的理论学习相对枯燥乏味,不易理解。
通过课程设计,可加强学生对原理知识的理解。
二、课程设计的任务和要求本次课程设计的题目是,时间片轮转调度算法的模拟实现。
要求在充分理解时间片轮转调度算法原理的基础上,编写一个可视化的算法模拟程序。
具体任务如下:1、根据需要,合理设计PCB(进程控制块)结构,以适用于时间片轮转调度算法;2、设计模拟指令格式,并以文件形式存储,程序能够读取文件并自动生成指令序列。
3、根据文件内容,建立模拟进程队列,并能采用时间片轮转调度算法对模拟进程进行调度。
任务要求:1、进程的个数,进程的内容(即进程的功能序列)来源于一个进程序列描述文件。
2、需将调度过程输出到一个运行日志文件。
3、开发平台及语言不限。
4、要求设计一个Windows可视化应用程序。
三、模拟程序的描述:模拟指令的格式:操作命令+操作时间● C :表示在CPU上计算●I :表示输入●O :表示输出●W :表示等待●H :表示进程结束操作时间代表该操作命令要执行多长时间。
这里假设I/O设备的数量没有限制,I和O设备都只有一类。
I,O,W三条指令实际上是不占有CPU的,执行这三条指令就应该将进程放入对应的等待队列(输入等待队列,输出等待队列,其他等待队列)。
例如,有一虚拟程序文件prc.txt描述如下:P1C10 // 在CPU上运算10个时间单位I20 // 输入,占用20个时间单位C40 // 在CPU上运算40个时间单位I30 // 输入,占用30个时间单位C20 // 在CPU上运算20个时间单位O30 // 输出,占用30个时间单位H00 // 进程结束P2I10C50O20H00P3C10I20W20 // 等待20个时间单位C40O10H00................四、实验报告要求除了编程实现设计的要求,在运行调试完成后,要书写出课程设计报告,总结归纳课设的各个方面,锻炼自己实践和总结报告的能力。
101《操作系统课程设计》指导书

《操作系统原理》课程设计参考2010年12月课设的目的操作系统是计算机专业的一门专业课,也是计算机专业考研课程,但操作系统比较抽象,有的同学一学期完了都还很难理解进程、内存管理等一些概念和原理,操作系统课程设计的目的就是通过设计的实验,让同学们真正理解进程的实现,内存管理的机制,达到理解概念,了解实现原理。
同时也进一步巩固程序设计与数据结构的实践技能,实现整个大学阶段实践技能不断线的目的。
课设的故事一个操作系统采用请求页式管理方式来管理内存。
当一个进程在运行中,随着进程的执行,它会不断的访问内存(代码执行、存取数据),这样就会提出内存访问请求。
操作系统会根据用户进程提出的访存请求,来做地址变换,从而访问到用户进程想要访问的代码或数据。
操作系统进行地址变换的过程中发现用户将要访问的地址所在的虚页还没有进入内存会自动将该虚页从磁盘中装入内存,再进行地址变换。
当然若新的页调入内存之前,该进程所能使用的最大内存块数已经用完的话,操作系统就会从该进程已经在内存的那些页中根据先进先出的原则来淘汰掉一个页,腾出空间给将要正要请求访问的页。
所以操作系统要记录每个进程的每个页面的状态,记录这些调入内存的页面的顺序,还要记录内存中各个块的使用情况。
这些都是操作系统必需动态维护的数据,是操作系统的信息基础。
现假设一个计算机系统有内存mKB,系统的页面大小为1KB,假设操作系统占用内存低端的n个块(n<m/5),剩余的内存空间采用“随机+顺序”的方式来获取未用内存块,以分配给块请求程序。
所谓“随机+顺序”的内存块分配方式就是用随机数来确定一个起始探测的开始块号,如果其已经被分配,则向下一块探测,如果还是已经分配,则继续下探,直到找到可用块,如果已经到内存的尾部则回到操作系统分界处继续下探。
操作系统采用固定可用块数的方式给每个进程使用和分配内存块,并且规定最大内存块数为x,当某个进程已经用完了它的最大内存块数后就要淘汰页面了。
《操作系统课程设计》指导书

设计目的:使学生熟悉存贮器管理系统的工作原理及设计方法;加深对所学各种存贮器管理方案的理解;
设计要求:要求采用一些常用的存贮器分配算法,设计一个存贮器管理模拟系统并调试运行。模拟环境应尽量接近真实。
设计四 SPOOLing系统设计
设计目的:通过设计一个简单的SPOOLing系统来模拟实际的SPOOLing输入/输出过程,以掌握这种有用的技术。
设计要求:
⑴设计一个支持n个用户的文件系统,每个用户可拥有多个文件;
⑵采用二级或二级以上的多级文件目录管理;
⑶对文件应设置存取控制保护方式,如“只能执行”、“允许读”、“允许写”等;
⑷系统的外部特征应接近于真实系统,可设置下述文件操作命令:建立文件、打开文件、关闭文件、删除文件、读文件、写文件、复制文件、查询目录。
1、课程设计的基本思想,系统的总体结构和各子模块的功能说明;
2、课程设计有关算法的描述,并画出有关算法流程图;
3、源程序中核心代码的说明。源代码要求在关键的位置有注释,增加程序的可读性。程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。
4、本课程设计的个人总结,主要包括以下内容:
《操作系统课程设计》指导书
———————————————————————————————— 作者:
———————————————————————————————— 日期:
ﻩ
操作系统课程设计指导书
李晓东 编
电子与信息工程学院计算机系
2012-9
ﻬ一、课程设计的目的和意义
本课程设计是学生在学完了《操作系统》课程后,培养学生程序设计能力的一个重要教学环节。课程设计为学生提供了一个动手、动脑并独立实践的机会,有助于学生将教材的理论知识和实践相结合,从而锻炼学生分析问题、解决问题的能力,提高学生实际编写程序的能力,为学生学习计算机专业的后续课程打下良好基础。
《操作系统》课程设计指导书

操作系统》课程设计指导书信息技术系0—0年六月课程设计任务(一):进程调度一、目的与要求1、目的进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。
木任务要求学生独立地用C语言(或其它程序设计语言)编写和调试一个简单的进程调度程序。
调度算法(如,简单轮转法和优先数法等)可任意选择或自行设计。
以加深对进程调度和各种调度算法的理解。
(1)设计一个有n个进程并行的进程调度程序。
每个进程由一个进程控制块(PCB)表示。
进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。
(2)调度程序可包含4〜5种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。
完成1种调度算法得基本分即60分,每增加1种加10分,满分100分。
(3)系统应能显示各进程状态和参数的变化情况,便于观察诸进程的调度过程二、示例1、题目本程序可选用优先数法或简单轮转法对五个进程进行调度。
每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态肌为了便于处理,程序进程的运行时间以时间片为单位计算。
各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。
进程控制块结构如下:PCB进程标识数链指针优先数/轮转时间片数占用CPU时间片数进程所需时间片数进程状态进程控制块链结构如下其中:RUN —当前运行进程指针;HEAD —进程就绪链链首指针;TAID —进程就绪链链尾指针。
2、算法与框图(1)优先数法。
进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。
每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。
接着比较现■ • • • ・• •• •• • •• • ■••• ••・•・•・••・ :•・・• ・• • ••••• •・• • •• • m• *• • ・••・••• ••••• ・*• • w ・・•■• ••••《操作系统》课程设计指导书行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。
操作系统课设指导书

《操作系统》/《操作系统课程设计》课设指导书《操作系统》《操作系统课程设计》课设指导书计算机工程学院《操作系统》/《操作系统课程设计》课设指导书《操作系统》/《操作系统课程设计》课设项目指导书课设项目1 磁盘调度算法程序设计一、目的磁盘是经常使用的一种重要的外设,对磁盘数据的寻道时间的长短直接影响机器的整体运行速度,本设计要求用C语言(或高级语言)编写程序模拟实现磁盘调度的常用算法。
以加深对磁盘调度常用算法的理解和实现技巧。
二、课设要求1)、设计一个函数完成先来先服务的磁盘调度功能。
2)、设计一个函数完成最短寻道时间优先的磁盘调度功能。
3)、设计一个函数完成电梯算法的磁盘调度功能。
三、课设设备、环境奔腾以上计算机,装有Turbo C 2.0软件四、课设方法及步骤1、设计方法:根据设计任务书的要求,画出程序设计流程图,确定程序的功能,把整个程序根据功能要求分解为各个子程序,利用TC语言分编写程序代码,然后进行上机调试、修改、进行连接,测试,写出设计总结报告。
2、设计步骤:1)、自定义磁盘调度相关的数据结构。
2)、依据先来先服务算法(FCFS)、最短寻道优先算法(SSTF)、扫描(SCAN,也称电梯)算法的原理,编写对应函数,模拟系统的磁盘调度服务。
3)、为了更好地模拟和评价算法的性能,随机产生需寻道的磁道序列,磁道序列的首磁道为磁头的当前位置;在SCAN算法中,允许用户指定当前寻道方向。
4)、统计各算法总寻道次数和平均寻道距离;分析各算法性能,并作出评价。
5)、设计要求一人单独进行,独立完成设计,上机进行运行调试。
6)、写出课程设计报告书。
课设项目2 进程调度程序设计一、目的进程调度是处理机管理的核心内容。
本设计要求用C语言编写和调试一个简单的进程调度程序。
通过设计本可以加深理解有关进程控制块、进程队列的概念,并体会和了解最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先服务算法的具体实施办法。
操作系统课程设计指导

操作系统课程设计指导一、课程设计的目的操作系统是计算机系统的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效的工作。
《操作系统课程设计》是《操作系统》理论课的必要补充,是复习和检验所学课程的重要手段,本课程设计的目的是综合应用学生所学知识,通过实验环节,加深学生对操作系统基本原理和工作过程的理解,提高学生独立分析问题、解决问题的能力,增强学生的动手能力。
二、课程设计的要求1.分析设计内容,给出解决方案(要说明设计实现的原理,采用的数据结构)。
2.画出程序的基本结构框图和流程图。
3.对程序的每一部分要有详细的设计分析说明。
4.源代码格式要规范。
5.设计合适的测试用例,对得到的运行结果要有分析。
6.设计中遇到的问题,设计的心得体会。
7.按期提交完整的程序代码、可执行程序和课程设计报告。
三、课程设计题目选做3、4、6、8可以申请优秀。
1、吃水果问题桌上有一盘子,可以存放一个水果。
爸爸总是放苹果到盘子中,而妈妈总是放香蕉到盘子中;一个儿子专等吃盘中的香蕉,一个女儿专等吃盘中的苹果。
请用P,V操作实现上述问题的解。
分析:在本题中,爸爸、妈妈、儿子和女儿共用一个盘子,盘子一次只能放一个水果。
当盘子为空时,爸爸和妈妈都可以试着将一个水果放入盘中,但一次只能有一人成功放入水果。
若放入盘子中的是香蕉,则允许儿子吃,女儿必须等待;若放入盘子中的是苹果,则允许女儿吃,儿子必须等待。
在本题中,应设置3个信号量dish、apple、banaba,信号量dish表示盘子是否为空,其初值为1;信号量apple表示盘中是否有苹果,其初值为0;信号量banana表示盘中是否有香蕉,其初值为0。
进程之间的同步描述如下:Semaphore dish=1;Semaphore apple,banana=0;Main(){cobeginfather();mother();son();daughter();coend}Father() mather(){ {while(true) while(true){ {p(dish); p(dish);将苹果放入盘中;将香蕉放入盘中;v(apple); v(banana);} }} }Son() daughter(){ {while(true) while(true){ {p(banana); p(apple);从盘中取出香蕉;从盘中取出苹果;v(dish); v(dish);吃香蕉;吃苹果;} }} }2、司机与售票员问题设公共汽车上,司机和售票员的活动分别是:司机的活动:启动车辆;正常行车;到站停车。
操作系统课程设计任务指导书-Read

《操作系统课程设计任务指导书》山东建筑大学计算机科学与技术学院二○○七年十二月基本情况课程名称:操作系统课程设计相关课程:操作系统、数据结构适合专业:信息与计算技术设计周数:1周学分: 2学分开课学期:第 7 学期开课单位:计算机科学与技术学院一、课程设计的教学目的和任务1、使学生进一步理解和掌握操作系统课程中所学到的各种基本算法。
2、使学生深入理解经典操作系统各组成部分的基本原理。
3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。
4、使学生能用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
二、课程设计的主要内容1.分析。
根据设计题目的要求,充分地分析和理解问题。
2.设计。
根据题目所涉及的操作系统内容,认真设计解题算法。
参照平时课内所学知识,按照软件工程方法,确定设计方案。
3.编码。
把设计的结果进一步求精为程序设计语言程序。
同时加入一些注解和断言,使程序中逻辑概念清楚。
4.调试与测试。
根据题目内容,设计测试用例,使之能够充分证明课程设计完成的正确性。
5.总结分析。
总结设计中所遇到的问题以及所得到的经验,分析程序中是否存在可以完善、提高的部分,做出总结。
6.编写课程设计报告。
三、课程设计的基本教学要求1、巩固和加深对操作系统课程基本知识的理解,提高对所涉及的算法的掌握。
2、通过实际课程设计,掌握简单软件的分析方法和设计方法。
四、课程设计报告的规范课程设计报告要求规范书写。
应当包括如下部分:1、操作系统课程设计任务书2、问题定义与分析3、概要设计及流程图4、问题实现及代码5、测试6、结论7、参考文献五、注意事项1、学生必须仔细阅读课程设计任务书,认真主动完成课程设计的要求。
有问题及时主动通过各种方式与教师联系沟通。
2、学生要发挥自主学习的能力,充分利用时间,安排好课程设计的进度,并在课程设计过程中不断检查自己的计划完成情况,及时向教师汇报。
《计算机操作系统》课程设计指导书

《计算机操作系统》课程设计指导书湖南工业大学计算机与通信学院二O一三年九月《计算机操作系统》课程设计说明计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。
实践教学环节是必不可少的一个重要环节。
计算机操作系统课程设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。
要求学生在指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。
要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux 用户界面;掌握操作系统中进程管理概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想,了解设备管理的功能,了解文件系统的功能。
同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。
为了收到良好的实验效果,编写了这本课程设计指导书。
在指导书中,每一个课程设计任务按照该课程设计大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式引导学生有目的、有方向地完成课程设计任务,得出实验结果。
任课教师在课程设计前对课程设计的任务进行一定的分析和讲解,要求学生按照课程设计任务的具体要求提前做准备工作,如:查找资料等,做到有准备地上机。
进行课程设计时,指导教师应检查学生的预习情况,并对设计过程给予积极指导。
课程设计完毕后,学生应根据课程设计情况,实验数据及结果,完成课程设计报告,由学习委员统一收齐后交指导教师审阅评定。
任务1 进程管理演示一、课程设计目的加深对进程概念及进程管理各部分内容的理解;熟悉进程管理中主要数据结构的设计及进程调度算法、进程控制机构、同步机构及通讯机构的实施。
操作系统课程设计报告指导

- - -.. 操作系统课程设计指导一、本课程的教学目的及根本要求1、教学目的操作系统课程设计是操作系统课程的重要实践环节,是操作系统课程内实验的有益补充,它旨在培养学生的实践能力,促进理论与实践的结合。
要求学生通过上机编程,了解如何模拟操作系统原理的实现,从而加深对操作系统原理的领会,加深对操作系统实现方法的理解,与此同时使学生在程序设计方面也能够得到很大程度的提高。
操作系统虽然是理论性很强的课程,但是仅仅是课堂讲授是绝对不够的,操作系统课程设计即是课堂教学根底上的实践环节,其重要程度决不亚于课堂的知识传授。
本课程设计的目的和任务是在课堂教学的根底上,使学生对操作系统运行机制有一个全面的认识和理解,锻炼学生的抽象思维、逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。
促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。
先修课程:数据构造,操作系统。
2、教学根本要求要求学生通过上机编程,使学生对操作系统运行机制有一个全面的认识和理解,通过模拟文件系统及内存管理系统,锻炼学生的逻辑思维和实际动手能力,培养操作系统等大型系统程序的使用者、管理者、分析员和设计人才。
促进理论与实践的结合,使学生在系统程序设计方面能够得到很大程度的提高。
课程设计根本要求:1)掌握课堂教学内容,主要包括:(1)掌握操作系统四大资源管理的理论知识;(2)熟悉Linu*或UNI*文件系统的构造;(3)使用编程语言实现课程设计题目要求的功能。
2) 根据课程设计题目,按以下步骤进展:(1)问题分析,理解问题,明确设计要求;(2)根据要求进展概要设计和详细设计;(3)编码实现、上机调试,数据测试;(4)完成课程设计实习报告。
二、操作系统课程设计题目1、实现一个进程管理子系统【问题描述】在Linu*/UNI*/Windows下编制一个程序,模拟实现一个简单的进程管理子系统,它由进程建立模块、进程撤消模块、进程控制表组成,〔此外还可能包括选作的进程切换和调度模块〕。
操作系统课程设计指导书

③ 查用户文件目录ufd
未找到, 返回(文件名不对) 找到, 下一步
④ 将对应表目从ufd中删除 ⑤ 释放回收文件记录空间
⑥ 释放表目结点空间 free(*q2) , 返回
6 ) 写文件 pwrite()
算法思想: ① 输入文件名=〉 x
② 查打开文件表afd
未找到 , 返回(文件未打开) 找到, 下一步
② 若采用顺序文件结构 , 可用动态数组存放记录 上述两函数(读/写) 稍作修改即可
③ 根据上述算法思想编写 pread和pwrite函数
8) 其它程序模块(函数)
print1 () : 显示主目录 print2() : 显示当前用户的文件目录 print3 () : 显示文件内容
close() : 退出某用户操作时 , 关闭所有打开文件 (注意: 必要时复制打开文件的文件长度及文件
修改标志(0 →flag)
输出“文件已打开 ”提示串 , 返 回
注: 任何文件必须先打开后使用(包括读、写和查看显示)
4) 关闭文件p c l o s e ( )
算法思想: ① 输入文件名=〉 x ② 查打开文件表afd
未找到, 返回 找到, 下一步
③ 将对应文件表目从afd 链中删除
④ 判断修改标志flag
[3]
[4]
文件名 文件长度
Z1
0
…
Z2
n
afd
文件名 长度 修改标志
文件
Z5
m
姓名 性别
R1 R2
姓名 性别
… 第 一个记录
动态分配
Rn
静态分配
…
… 文件
初始化用户文件目录及打开文件表指针(NULL=> ufd,afd) 初始化主目录(空格串=>mfd[i].username, NULL=> mfd[i].next)
《操作系统》课程设计指导书

《操作系统》课程设计指导书《操作系统》课程设计指导书信息技术系二0一0年六月课程设计任务(一):进程调度一、目的与要求1、目的进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。
本任务要求学生独立地用C 语言(或其它程序设计语言)编写和调试一个简单的进程调度程序。
调度算法(如,简单轮转法和优先数法等)可任意选择或自行设计。
以加深对进程调度和各种调度算法的理解。
2、要求(1)设计一个有n个进程并行的进程调度程序。
每个进程由一个进程控制块(PCB)表示。
进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。
(2)调度程序可包含4~5种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。
完成1种调度算法得基本分即60分,每增加1种加10分,满分100分。
(3)系统应能显示各进程状态和参数的变化情况,便于观察诸进程的调度过程二、示例1、题目本程序可选用优先数法或简单轮转法对五个进程进行调度。
每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。
为了便于处理,程序进程的运行时间以时间片为单位计算。
各进程的优先数或轮转时间片数、以及进程需要运行的时间片数,均由伪随机数发生器产生。
进程控制块结构如下:PCB其中:RUN—当前运行进程指针;HEAD—进程就绪链链首指针;TAID—进程就绪链链尾指针。
2、算法与框图(1)优先数法。
进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。
每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。
接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、课程设计基本步骤及进度安排
1. 学生分组(建议1-2人一组)、了解课程要求及熟悉任务一。(第9周)
2. 完成任务一的程序设计、编写与测试工作。(第10周)
3. 开始任务二的程序设计工作。(第11周)
4. 完成任务二的程序设计、编写与测试工作。(第12周)
5. 开始任务三的程序设计工作。(第13周)
课时4个学时。
任务二:程序模拟存储管理之“伙伴系统”算法
设计与编写程序实现动态内存管理之“伙伴系统”算法。初始内存的大小(必须是2 的幂)、申请内存的进程大小及次序等数据放在文本文件中。对于给定的输入文件,输 出进程申请与退出每步的内存分配状态。
课时4个学时。
任务三:老化算法模拟分页系统
设计与编写程序使用老化算法模拟一个分页系统。页面访问序列从文件(文本文 件)中读取。对于一个给定的输入文件,列出每1000个内存访问中发生缺页中断的数
设计内容:
1. 分析并执行“生产者-消费者问题” 示例演示程序(源代码清单:1-1)。
演示程序执行步骤:
1) 以“记事本”程序创建 pc.txt 文件,文件内容为:
其中,第 1 列为线程序号,第 2 列为线程类型(生产者还是消费者线程),第 3 列为等待时间, 第 4 列为运行时间。
2) 将文件 pc.txt 放在 C 盘根目录下 3) 运行生产程序,结果如下:
北理珠“操作系统”课题组
《操作系统课程设计指导书》
任务四:使用工具分析 Windows 之 NTFS 文件系统
2012-11
设计内容:
1. 学习 WinHex 工具软件的使用;
2. 利用 WinHex 工具对根目录下的文件进行删除、隐蔽、恢复、属性修改
及寻找其数据的存储位置;
3. 对非根目录下的文件进行上述(2)项的操作;
int id; char type; double waitt; double workt; }; HANDLE g_hMutex; HANDLE g_hFullSemaphore; HANDLE g_hEmptySemaphore; HANDLE h_Thread[MAX_THREAD_NUM]; ThreadInfo thread_info[MAX_THREAD_NUM]; using namespace std; //***********
北理珠“操作系统”课题组
《操作系统课程设计指导书》-源代码清单 1-1
【源代码清单 1-1】
#include <Windows.h> #include <conio.h> #include <stdlib.h> #include <fstream> #include <io.h> #include <string.h> #include <stdio.h> #include <iostream> #define PRODUCER 'P' #define CONSUMER 'C' #define MAX_BUFFER_NUM 10 #define MAX_THREAD_NUM 32 struct ThreadInfo{
《操作系统课程设计指导书》
附件5:
课程设计指导书
2012-11
一、课程设计目的
《操作系统》是计算机专业的一门专业基础课,主要内容是介绍操作系统
的原理和策略;《操作系统课程设计》是在学生学习完该课程以后(或学习过程
中)进行的设计性实验课程,目的是使学生加深理解操作系统中的策略与思想,
并能编程实现。
课程设计的项目中,包含了若干子项目,分别设计实现这些子项目和算法
2、 项目答辩成绩。每个题目均需要进行项目答辩,答辩时采取单人答辩
的方式,根据所做题目评委出题进行答辩。占总成绩的 30%。
3、 课程设计报告成绩。占总成绩的 50%。
4、 优秀率不超过 15%。
第 2 页 共 10 页
北理珠“操作系统”课题组
《操作系统课程设计指导书》
附录
2012-11
任务一:线程同步与互斥
2012-11
第 6 页 共 10 页
北理珠“操作系统”课题组
《操作系统课程设计指导书》
任务三:老化算法模拟分页系统
2012-11
设计内容:
1. 编写一个程序,它使用老化算法模拟一个分页系统。页帧的数量是参数。
页面的访问序列从文件中读取。对于一个给定的输入文件。列出每 1000
个内存访问中发生缺页中断的数目,它是可用页帧数的函数。(教材 P141,
void Producer(void *p){ DWORD m_waitt; DWORD m_workt; int m_id; m_id=((ThreadInfo *)(p))->id; m_waitt=(DWORD)(((ThreadInfo *)(p))->waitt *1000); m_workt=(DWORD)(((ThreadInfo *)(p))->workt *1000); Sleep(m_waitt); cout<<"生产者线程"<<m_id<<"生产产品"<<endl; WaitForSingleObject(g_hEmptySemaphore,INFINITE); WaitForSingleObject(g_hMutex,INFINITE); cout<<"生产者线程"<<m_id<<"将产品放入缓冲池中...生产者线程执行结束"<<endl; Sleep(m_waitt); ReleaseMutex(g_hMutex); ReleaseSemaphore(g_hFullSemaphore,1,NULL);
woman_leaves
man_leaves
设计要点与关键技术:
1. 线程的同步与互斥
2. 信号量上的 P、V 操作算法
3. 使用 Visual Studio2008 开发平台
第 4 页 共 10 页
北理珠“操作系统”课题组
《操作系统课程设计指导书》
任务二:程序模拟存储管理之“伙伴系统”
2012-11
令:当有一个女生在浴室里,那么其他女生可以进入,但是男生不行,反之亦
然。在每个浴室的门上有一个滑动指示符号,表示当前处于以下三种可能状态
之一:
空
有女生
有男生
用你偏好的程序设计语言编写下面过程(可以随意采用所希望的计数器和
同步技术):
woman_wants_to_enter
man_wants_to_enter
4. 利用工具移动某个文件的数据块。
也可在 FAT32 文件系统中进行上述操作
设计要点与关键技术:
1. 对 NTFS 或 FAT32 的组织结构的认识
NTFS 格式可参见《现代操作系统》(第 3 版)P509“11.8 Windows NT
文件系统”
2. 工具的使用熟练度
第 8 页 共 10 页
41 题)
2. 一个简单的典型测试数据:
分配的内存帧数:3
进程页访问序列:0、1、2、3、4、1、2、0、1、2、3、4、0、1、2、3
3. 按要求设计测试比较更大数据量的页面访问
设计要点与关键技术:
1. 老化算法的理解
2. 使用 Visual Studio2008 开发平台
第 7 页 共 10 页
设计内容:
1. 依据下图所示的算法或严蔚敏《数据结构(C 语言版)》P203 的内容编写
程序。
2. 测试数据依据下图并将其放在一个文本文件中。
第 5 页 共 10 页
北理珠“操作系统”课题组
《操作系统课程设计指导书》
设计要点与关键技术: 1. 动态内存管理之伙伴系统算法 2. 递归算法 3. 使用 Visual Studio2008 开发平台
2. 编程设计:(教材 P98 页 51 题)
假设一个大学为了卖弄其政治上的正确性,准备把美国最高法院的信条“平
第 3 页 共 10 页
北理珠“操作系统”课题组
《操作系统课程设计指导书》
2012-11
等但隔离其本身就是不平等”既运用在种族上也运用在性别上,从而结束校园
内长期使用的浴室按性别隔离的做法。但是,为了迁就传统习惯,学校颁布法
第 1 页 共 10 页
北理珠“操作系统”课题组
《操作系统课程设计指导书》
目。 课时4个学时。
2012-11
任务四:使用工具分析Windows之NTFS文件系统
使用WinHex工具分析当前操作系统(通常是Windows XP)的NTFS或FAT32文件系 统组织方式。(具体要求随后提供。)
课时2-4个课时。
策略,并用程序模拟运行。这种训练把知识获取和项目实践二者有机结合,增
强对课程内容的理解和掌握,并获得有关项目管理和团队合作等方面的训练和
经验。
二、课程设计主要内容及要求
任务一:线程同步与互斥
该任务依据对“生产者-消费者问题”示例演示代码(清单1-1)的分析,编写程序 实现男女共用浴室的情况下的同步与互斥(要求见《现代操作系统》习题51(P98)), 男女到达浴室的时间数据放在文本文件。对于给定的输入文件,观察测试输出结果的正 确性。
第 9 页 共 10 页
2012 -11 北理珠“操作系统”课题组
《操作系统课程设计指导书》
}
void READFILE(char *file){ int n=0; DWORD thread_ID; DWORD wait_for_all; g_hMutex=CreateMutex(NULL,FALSE,(LPCWSTR)"mutex"); g_hFullSemaphore=CreateSemaphore(NULL,0,10,(LPCWSTR)"full"); g_hEmptySemaphore=CreateSemaphore(NULL,10,10,(LPCWSTR)"empty"); ifstream inFile; inFile.open(file); while(inFile){ inFile>>thread_info[n].id; inFile>>thread_info[n].type; inFile>>thread_info[n].waitt; inFile>>thread_info[n].workt; n++; inFile.get(); } for(int i=0;i<n;i++){ if(thread_info[i].type==PRODUCER || thread_info[i].type=='P') h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Producer),&thread_info[i],0,&thread_ID); else h_Thread[i]=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(Consumer),&thread_info[i],0,&thread_ID); } wait_for_all=WaitForMultipleObjects(n,h_Thread,TRUE,-1); cout<<"所有线程执行完毕!";