操作系统-课程设计指导书.doc
《操作系统-课程设计指导书.doc》由会员分享,可在线阅读,更多相关《操作系统-课程设计指导书.doc(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统课程设计指导书操作系统课程设计指导书1. 操作系统课程设计1.1 课程的性质和目的“操作系统基础”是计算机专业的核心专业课,“操作系统课程设计”是理解和巩固操作系统基本理论、原理和方法的重要的实践环节。 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握多道程序设计基本技能。实验的目的:(1) 掌握进程和线程的概念;(2) 掌握进程控制原语或进程控制系统调用的使用;(3) 掌握多道程序设计
2、的基本理论、方法和技术;(4) 掌握相关语言进程控制的函数及win98或windows2000的进程控制的API函数和MFC的使用; (5) 培养学生多道程序设计的能力。1.2 课程的内容计算机操作系统是计算机系统中最不可缺少的、最常用的软件,也是核心的、最接近于计算机硬件的软件。计算机操作系统是计算机专业及其相关专业的主要的基础课程之一,其内容综合了各种操作系统的结构、设计思想、方法、技术和理论,其特点是内容繁多、概念抽象,因此造成理解困难、掌握不易。现代操作系统最为核心的概念是多道程序、进程和线程,它们对于操作系统的初学者掌握尤其不易。本课程设计的内容为“多道程序间的协同操作”,其指导思想
3、是通过这个课程设计掌握多道程序的基本要点,解决进程和线程概念的理解难点,以利用基本概念和原理的进行多道程序设计为重点,在有限的一周时间内,利用诸如VC+或Java掌握多道程序及其进程同步和互斥的设计的基本方法, 达到能用、会用、巧用的效果。1.3 学时分配和辅导 (1)基本任务简介、原理讲解 2学时 (2)软件设计 4学时 (3)上机编程、调试 24学时 (4)检查考核 2学时 每小班大约30人,每小班至少配备一名指导教师跟综辅导答疑,解决技术难题。要求指导教师熟悉多道程序间的协同操作、进程同步和互斥的原理,具有VC+或Java程序设计的经验。2课程设计的任务2.1 基本任务要求题目1:多道程
4、序缓冲区协调操作如下图所示,有10个PUT操作要不断循环地向Buffer1送数据,有一个Move操作要不断地将Buffer1的数据取到Buffer2,有20个GET操作要不断地从Buff2中取数据。BUFF1是10,BUFF2的容量是20, PUT、 MOVE、 GET每次操作一个数据,为了在操作的过程中要保证数据不丢失,每个Buffer每次只能接受一个PUT或一个Move或一个Get,多个操作不能同时操作同一BUFFER。设计一个多道程序完成上述操作。试用、原语协调PUT、 MOVE、GET的操作,并说明每个信号量的含义、初值和值的范围。Buffer2 Buffer1 PUT MOVE GE
5、T 图1 Buffer操作题目2:多道程序间协同操作(自拟) 学生自拟设计一个题目,可以是个游戏,可以解决一个简单的实际问题的解决,也可以是客观世界中事物处理的模拟,但要求能够反映多道程序间协同操作,采用多进程或多线程机制设计和运行,尽量体现进程间的同步和互斥关系。 2.2 开发环境、技术、工具和工期(1) 建议使用windowsXP、windows2000、Linux 或Unix操作系统,采用的编程语言为VC、VB、Java、Delphi、.NET或C+;(2) 采用多道程序设计技术实现;没有直接对thread and process 支持的语言,考虑使用API函数;(3) 一周之内完成。
6、2.3 基本功能要求(1) 显示Buffer的操作过程;(2) 可以确定Buffer的容量、PUT、GET、COPY操作的个数;(3) 自行确定放数据的速度,取数据的速度;(4) 实时显示每个Buffer中数据的个数,已放入Buffer的数据个数,已取的数据个数;(5) 程序运行结束,显示汇总数据:总的运行时间;Buffer中数据的个数;已放入BUFFER的数据个数;已放已取的数据个数;平均buffer中的数据个数。可以根据题目的基本要求进行丰富的创意和想象。2.4 运行要求(1) 经调试后程序能够正常运行,采用多进程或多线程方式运行,界面尽量体现多道程序的特点、进程间的同步和互斥关系。(2)
7、 本程序可运行在win98,XP、Win2000、Win2003、 Linux或Unix操作系统下,可安装到任意路径下。2.5 提交的材料(1) 提交软件安装盘;(2) 源程序;(3) 设计说明书(电子版):格式要求见4.10节描述;(4) 使用说明书(电子版):格式要求见4.10节描述。2.6评分和验收标准 2.6.1评分标准 (1) 软件演示及讲解 45分(2) 设计报告 35分(3) 使用手册 10分(4) 注释及良好的程序设计风格 10分2.6.2验收标准教师根据设计报告、软件的运行演示和学生回答问题的情况评定成绩。 (1)设计报告规范、完整,概念原理论述清楚、软件设计结构合理,独立完
8、成设计,软件运行正常,能够突出表现多道程序运行的特点,回答问题准确明了,可以评为优秀(A)。 (2)设计报告规范、完整,概念原理论述清楚、软件设计结构合理,独立完成、软件基本运行正常,能够表现多道程序运行的特点,回答问题正确,可以评为良(B)。 (3)设计报告规范、概念原理论述基本清楚、软件设计结构合理,基本独立完成,软件基本运行正常,基本能够表现多道程序运行的特点,回答问题部分正确,可以评为中良(C)。 (4)设计报告基本规范、概念原理论述基本清楚、软件设计结构基本合理,部分独立完成,软件基本可以运行,基本能够表现多道程序运行的特点,回答问题部分正确,可以评为及格(D)。 (5)设计报告不规
9、范、概念原理论述不清楚、软件设计结构不合理,大部分不能独立完成,软件基本不能运行,回答问题大部分不正确,可以评为不及格(E)。3设计的基本步骤(1) 需求分析查找相关技术资料,了解基本原理,根据题目要求创意软件的功能。.(2) 设计软件的界面程序运行界面要求使用中文或中英文对照.。(3) 总体设计 确定基本的技术路线:面向过程还是面向对象;确定软件的总体结构、模块关系、总体流程;确立要创立的进程或线程;确定开发要使用的语言环境;要解决的关键技术问题。(4) 详细设计确定要使用的进程操作的函数、原语、API,掌握它们的使用的参数和返回值。确定模块内部的流程和实现算法;确定要设计的过程、构件、类、
10、对象、函数和它们的参数。(5) 编码设计建立设计编程的环境;注意编程的风格的规范。(6) 实际数据运行测试 检查程序是否有错误; 检查界面是否美观; 检查操作是否方便; 检查提供的信息是否清晰; 检查性能是否稳定。4设计说明书内容要求4.1 概述 目的; 主要完成的任务; 使用的开发工具; 解决的主要问题。4.2 使用的基本概念和原理多道程序;进程;线程;同步和互斥的概念。4.3 总体设计 确定基本的技术路线:面向过程还是面向对象;确定软件的总体结构、模块关系、总体流程;确立要创立的进程或线程。4.4 详细设计确定要利用的进程操作的函数、原语、API,掌握它们的使用的参数和返回值,要给出具体的
11、名称和参数及其解释;确定模块内部的流程和实现算法;确定要设计的过程、构件、类、对象、函数和它们的参数,要给出具体的名称和参数及其解释。4.5 编码设计开发环境的设置和建立;程序设计时要注意的事项;关键构件/插件的特点和使用;主要程序的代码设计及注释;如果使用、原语协调PUT、 MOVE、GET的操作,说明每个信号量的含义、初值和值的范围;解决的技术难点、经常犯的错误。4.6 测试时出现过的问题及其解决方法4.7 总结 详细列出已经课程设计的完成情况; 未完成的部分;收获、经验、教训和感受等。4.8参考文献列出你所用的参考文献,包括Web上的资源。4.9 格式要求(1) 论文开本为A4,页边距为
12、设置:上下分别为3cm,左右分别为2.9cm和2.8cm;(2) 报告书标题用小2号黑体字,横向居中排放;(3) 1级标题用小3号黑体;(4) 2级标题用4号黑体;(5) 3级标题用小4号黑体;(6) 正文用5号宋体字,行间距为最小值18磅;(7) 各层次标题均不得置于页面的最后一行,即不允许“背题”;(8) 图下方要有图号和图名,表上方要有表号和表名;(9) 参考文献编写项目和顺序规定如下: 序号 作者.书名.出版地:出版者,出版年:引用部分起止页 序号 作者.文章名.学术刊物名,年,卷(期):引用部分起止页表1 层次代号及说明层次名称示例说明全文标题 XXXX名居中排,章序用阿拉伯数字1级
13、标题1 题序顶格书写,与标题间空一字,下面阐述内容另起一段 2级标题1.1 3级标题1.1.1 5 用户使用说明书5.1 基本功能5.2 需要运行的环境5.3 安装5.4 运行5.5 操作6 技术指导6.1 进程与线程进程是一个可执行的程序,由私有虚拟地址空间、代码、数据和其他操作系统资源进程组成。一个应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程。动态性是进程最基本的特性。线程是操作系统分时调度分配CPU时间的基本实体,是进程的一个实体,是被系统独立调度和分派的基本单位,线程基本上不拥有自己的资源,只拥有一点点在运行中必不可少的资源(如程序计数器、一组寄存器和栈
14、),但它可与同属于一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程;同一进程中的多个线程之间可以并发执行。 由于创建新进程必须加载代码,而线程要执行的代码已经被映射到进程的地址空间,所以创建、执行线程的速度比进程更快。一个进程的所有线程共享进程的地址空间和全局变量,所以简化了线程之间的通讯。6.2 VC+相关函数6.2.1 Win32的进程与线程处理因为MFC没有提供类处理进程,所以直接使用了Win32 API函数。1. 进程的创建调用CreateProcess函数创建新的进程,运行指定的程序。CreateProcess的原型如下: BOOL CreateProce
15、ss( LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInforma
16、tion);其中:lpApplicationName指向包含了要运行模块名字的字符串;lpCommandLine指向命令行字符串;lpProcessAttributes描述进程的安全性属性; lpThreadAttributes描述进程初始线程(主线程)的安全性属性;bInHeritHandles表示子进程(被创建的进程)是否可以继承父进程的句柄。可以继承的句柄有线程句柄、有名或无名管道、互斥对象、事件、信号量、映像文件、普通文件和通讯端口等;还有一些句柄不能被继承,如内存句柄、DLL实例句柄、GDI句柄、URER句柄等等。子进程继承的句柄由父进程通过命令行方式或者进程间通讯(IPC)方式由父
17、进程传递给它。dwCreationFlags表示创建进程的优先级类别和进程的类型。创建进程的类型分控制台进程、调试进程等;优先级类别用来控制进程的优先级别,分为Idle、Normal、High、Real_time四个类别。lpEnviroment指向环境变量块,环境变量可以被子进程继承。lpCurrentDirectory指向表示当前目录的字符串,当前目录可以继承。lpStartupInfo指向StartupInfo结构,控制进程的主窗口的出现方式。lpProcessInformation指向PROCESS_INFORMATION结构,用来存储返回的进程信息。从其参数可以看出创建一个新的进程需
18、要指定的信息。若进程创建成功的话,返回一个进程信息结构类型的指针。进程信息结构如下:typedef struct _PROCESS_INFORMATION HANDLE hProcess; HANDLE hThread; DWORD dwProcessId; DWORD dwThreadId; PROCESS_INFORMATION; 进程信息结构包括进程句柄,主线程句柄,进程ID,主线程ID。2. 进程的终止进程在以下情况下终止:(1) 调用ExitProcess结束进程;(2) 进程的主线程返回,隐含地调用ExitProcess导致进程结束;(3) 进程的最后一个线程终止;(4) 调用Te
19、rminateProcess终止进程;(5) 当要结束一个GDI进程时,发送WM_QUIT消息给主窗口,当然也可以从它的任一线程调用ExitProcess。3. 线程的创建 使用CreateThread函数创建线程,CreateThread的原型如下:HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThread
20、Id);其中:lpThreadAttributes表示创建线程的安全属性;dwStackSize指定线程栈的尺寸,如果为0则与进程主线程栈相同;lpStartAddress指定线程开始运行的地址;lpParameter表示传递给线程的32位的参数;dwCreateFlages表示是否创建后挂起线程(取值CREATE_SUSPEND),ResumeThread继续执行;lpThreadId用来存放返回的线程ID。4. 线程的优先级别 进程的每个优先级类包含了五个线程的优先级水平。在进程的优先级类确定之后,可以改变线程的优先级水平。用SetPriorityClass设置进程优先级类,用SetThr
21、eadPriority设置线程优先级水平。Normal级的线程可以被除了Idle级以外的任意线程抢占。5. 线程的终止 以下情况终止一个线程:(1) 调用了ExitThread函数; (2) 线程函数返回:主线程返回导致ExitProcess被调用,其它线程返回导致ExitThread被调用; (3) 调用ExitProcess导致进程的所有线程终止; (4) 调用TerminateThread终止一个线程; (5) 调用TerminateProcess终止一个进程时,导致其所有线程的终止。 当用TerminateProcess或者TerminateThread终止进程或线程时,DLL的入口函
22、数DllMain不会被执行(如果有DLL的话)。6. 线程局部存储 如果希望每个线程都可以有线程局部(Thread local)的静态存储数据,可以使用TLS线程局部存储技术。TLS为进程分配一个TLS索引,进程的每个线程通过这个索引存取自己的数据变量的拷贝。TLS对DLL是非常有用的。当一个新的进程使用DLL时,在DLL入口函数DllMain中使用TlsAlloc分配TLS索引,TLS索引就作为进程私有的全局变量被保存;当该进程的新的线程使用DLL时(Attahced to DLL),DllMain给它分配动态内存并且使用TlsSetValue把线程私有的数据按索引保存。DLL函数可以使用T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 指导书
限制150内