软件课程设计II设计指引(windows环境)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

软件课程设计II设计指引(Windows环境)v08课程设计的目的操作系统是一门实践性很强的课程。如果只学习操作系统原理(概念)而不进行操作系统的具体设计实践,是很难真正掌握操作系统这门课程的精髓的。在学习和掌握操作系统原理(概念)的过程中,进行适当的操作系统设计实践活动,是操作系统本身的特点所决定的。因为学习掌握操作系统的昀好途径就是实践,通过实践就会发现操作系统中的概念并不那么抽象,它的结构也是可以通过不断的分析而理解的。通过操作系统原理(概念)的学习,我们知道:在现代计算机系统中,操作系统是计算机软件的核心,同时操作系统又具有概念抽象、结构复杂和难于掌握的特点,因此操作系统的确有一点类似于哲学。哲学原理是普遍适用的,在日常生活、学习和工作中正确运用哲学原理会给我们的生活、学习和工作带来益处。同样,在当今社会中,只要有人群的地方就有计算机,甚至没有人的地方也可以有计算机。有计算机的地方就有操作系统。从这个角度看,操作系统原理(概念)也是普遍适用、到处存在的。哲学原理是指导人们社会实践的。在计算机领域中,操作系统理论也是指导实践的。同时操作系统必须通过实践来学习,从实践的角度来看,操作系统也是某种“实践的自然哲学”。作为计算机软件的核心组成部分,操作系统是所有计算机软件的基础和平台,它向应用软件提供基本的开发和运行环境,应用软件的开发也只有充分利用操作系统提供的开发和运行环境,才能有效地实现自己的功能。计算机系统的昀终用户也需要了解操作系统的基本概念和操作方法,以便有效地利用计算机来完成自己的工作。本课程设计的目的,是通过利用操作系统直接提供的SystemCall或API函数,开发高效率的软件,以提高学生从事软件开发的综合能力。本软件课程设计综合了编程语言、数据结构、操作系统等多门课程,通过实验教学使学生能充分利用操作系统提供的功能,设计有效的解决方案,实施软件开发。同时通过熟悉操作系统的SystemCall或API,也使学生加深对操作系统有关概念的理解。本课程设计的内容涉及操作系统的安装与配置、进程(线程)的描述、控制与调度、存储管理、I/O管理和文件系统以及系统安全等方面的内容;Microsoft的Windows和公开源代码的Linux是当今广为使用的两种操作系统,因此学习、研究这两种操作系统对我们今后一段时间内的工作会有很大的帮助,因此我们有关操作系统的软件课程设计将分为两大部分,分别围绕这两种操作系统来实施。课程设计的核心任务本次课程设计的重点将围绕线程来进行。之所以这样做是出于以下因素的考虑。近年来,微处理器走“多核”之路,已经不仅是一个口号,而成为一个现实:2007年,通观市场上的各类电脑(个人电脑、服务器及笔记本电脑),采用岛和处理器已经成为铲平的主流。对于计算机专业的学生,尤其是那些对计算机学科本身有浓厚兴趣的学生,乃至利用计算机工具,希望能够高效率使用计算机系统解决其领域内工程问题的学生,面对“多处理器环境”开展系统软件和应用软件的开发工作,将是一种“常规”而不是一种“先进”工作。若干年前,大学开设涉及到“多处理器”内容的课程,常常都冠以“高级课程的”的帽子,言下之意,只要少数“优秀”的学生(研究生)学习就可以了,现在就不一样了,不学习这些所谓的“高级”课程,那么他(她)的知识体系就不完整,或者落后了。从软件角度讲,目前使用多处理器(多核)硬件资源的机制是“线程”。其实早在单核处理器时代,应用程序已经支持多线程技术。单核处理器上运行的多线程是串行执行的,即“并发”执行的,也就是多个线程交替执行,在同一个时刻只能有一个线程执行。而多核处理器上运行的线程是并行的,即多个线程在不同的“核(处理器)”上同时执行。并行计算是由运行在多个执行部件上的子任务合作来解决一个规模很大的计算问题的本材料仅能用于教学目的,著作权归邹建伟所有(email:zjwmail2000@163.com)。文中所涉及到的注册商标或商标以及其他知识产权,均归其所有人所有。1软件课程设计II设计指引(Windows环境)v08一种方法。并行计算能降低单个任务问题求解的时间(周转时间),增加问题求解规模,提高问题求解精度;此外,在多处理器(多核)上同时执行多个串行程序时,具有更高的可用性(便于实现容错)。并行计算在科学以及工程应用的计算模拟、商业应用的数据挖掘及事务处理等许多领域,已经产生了巨大的作用和影响力。多核处理器的成本优势以及并行化计算对于今后计算机应用发展开拓了一个新的领域,在并行计算平台上开发软件,并能过充分合理地使用多核资源,是今后程序员必须具备的基本素质。课程设计的要求1.认真、独立完成实践内容2.按时、按要求提交实践的原程序和操作系统实践报告3.实践成果形式:含有所有实践源程序代码和实践报告word文档的磁盘(光盘)一张、实践报告若干份,以及装载上述材料的纸制资料袋一个。4.资料袋封面:参见软件课程设计II成果资料封面5.实践报告格式要求:一、基本信息1.实践题目2.完成人(姓名、学号)3.报告日期二、实践内容简要描述1.实践目标2.实践内容三、实践报告主要内容1.设计思路2.主要数据结构3.主要代码结构4.主要代码分析四、实践结果1.基本数据(1)源程序代码行数(2)完成实践投入的时间(小时数):资料查阅时间、编程调试时间2.测试数据设计3.测试结果分析五、实践体会1.实践过程中遇到的问题及解决过程2.实践过程中产生的错误及原因分析3.实践体会和收获六、附件:参考文献PARTIWindows部分目的:1.了解Windows2000操作系统的基本结构;2.了解NTs操作系统执行体对象的概念;3.学会在Win32环境下,创建进程和线程;本材料仅能用于教学目的,著作权归邹建伟所有(email:zjwmail2000@163.com)。文中所涉及到的注册商标或商标以及其他知识产权,均归其所有人所有。2软件课程设计II设计指引(Windows环境)v084.学会在Win32环境下,采用不同的NT执行体对象解决临界区问题和有限缓冲区问题;5.实现P、V操作。相关操作系统理论知识:进程和线程;同步和互斥机制及实现方法;临界区;Dijkstra的信号量机制——利用二值信号量实现信号量的方法;背景知识:1.Windows2000/XP的构成图1Windows2000/XP的系统结构(该图引自Solomon和Russinovich的《InsideWindows2000》)图2Windows2000/XP的关键系统组件(该图引自Solomon和Russinovich的《InsideWindows2000》)本材料仅能用于教学目的,著作权归邹建伟所有(email:zjwmail2000@163.com)。文中所涉及到的注册商标或商标以及其他知识产权,均归其所有人所有。3软件课程设计II设计指引(Windows环境)v08用户态组件:¾系统支持进程(systemsupportprocess),不是Windows2000/XP服务,不由服务控制器启动。例如:登陆进程(WINLOGON)、会话管理器(SMSS)。¾服务进程(serviceprocess),Windows2000/XP的服务。例如:时间日志服务¾环境子系统(environmentsubsystems),它们向应用程序提供运行环境(操作系统功能调用接口)包括:Win32、POSIX和OS/21.2。¾应用程序(userapplications),五种类型:Win32、Windows3.1、MS-DOS、POSIX或OS/21.2。¾子系统动态链接库:调用层转换和映射。将文档化函数(公开的调用接口)转换为适当的Windows2000/XP内部系统调用。核心态组件:¾核心(kernel)包含了昀低级的操作系统功能,例如线程调度、中断和异常调度、多处理器同步等。同时它也提供了执行体(Executive)用来实现高级结构的一组例程和基本对象。核心对象包括控制对象和调度对象,功能是为执行体提供机制,帮助控制、处理并支持执行体对象的操作,以降低系统策略实现代价。控制对象包括核心进程对象、异步过程调用(APC,asynchronousprocedurecall)对象、延迟过程调用(DPC,deferredprocedurecall)对象和几个由I/O系统使用的对象,例如中断对象。调度对象负责同步操作并影响线程调度。调度程序对象包括核心线程、互斥体(Mutex)、事件(Event)、核心事件对、信号量(Semaphore)、定时器和可等待定时器。执行体利用核心函数来创建执行体对象实例,并且维护这些对象实例,同时构建更加复杂的、提供给用户模式应用使用的对象。执行体对象必须通过WindowsAPI来操作¾执行体包含基本的操作系统服务,例如内存管理器、进程和线程管理、安全控制、I/O、网络以及进程间的通信。执行体提供的功能性调用(5种类型的函数)包括①在用户态可以调用的函数。这些函数的接口在NTDLL.DLL中。通过Win32API或一些其他的环境子系统可以对它们进行访问;②在用户态可以调用的函数,但当前尚未文档化的子系统函数(未公开的函数);③在Windows2000DDK中已经公开并且文档化的核心态调用的函数;④在核心态组件中调用但没有文档化的函数。例如在执行体内部使用的内部支持例程;⑤组件内部的函数。¾硬件抽象层(HAL,HardwareAbstractionLayer)将内核、设备驱动程序以及执行体同硬件分隔开来,实现硬件映射。以适应多种硬件平台。¾设备驱动程序(DeviceDrivers)包括文件系统和硬件设备驱动程序等,其中硬件设备驱动程序将用户的I/O函数调用转换为对特定硬件设备的I/O请求。¾窗口和图形系统包含了实现图形用户界面(GUI,GraphicalUserInterface)的基本函数。¾核心态组件的功能:„线程安排和调度„陷阱处理和异常调度„中断处理和调度„多处理器同步„供执行体使用的基本内核对象„始终运行在核心态,代码精简,可移植性好。除了中断服务例程(ISR,interruptserviceroutine),正在运行的线程不能抢先内核。本材料仅能用于教学目的,著作权归邹建伟所有(email:zjwmail2000@163.com)。文中所涉及到的注册商标或商标以及其他知识产权,均归其所有人所有。4软件课程设计II设计指引(Windows环境)v08本材料仅能用于教学目的,著作权归邹建伟所有(email:zjwmail2000@163.com)。文中所涉及到的注册商标或商标以及其他知识产权,均归其所有人所有。52.Windows环境下的多线程编程在Windows环境下实现多线程编程的途径主要有三条:一是基于Win32API函数;二是基于MFC类库;三是使用.NETFramework提供的接口来实现。实现方式的多样化给Windows编程带来了很大的灵活性,但也使得多线程编程变得复杂。对于多线程的程序可以使用VisualStudio工具进行开发、调试,也可使用其它第三方工具。3.关于字符编码随着MicrosoftWindowsNTs在世界各地日渐流行,作为软件开发人员,将眼光投向全球市场显得越发重要。随着操作系统的国际化支持日益增强,为国际市场发布软件产品变得越来越容易,WindowsNTs为开发人员提供这方面的支持,帮助他们本地化自己的应用程序。本地化的问题就是处理不同字符集的问题。使用Unicode字符编码方案可以使解决本地化的问题变得容易,而WindowsNTs的内核支持Unicode(如WindowsVista内核支持Unicode5.0)。Unicode是1988年由Apple和Xerox共同建立的一项标准。1991年,成立了专门的协会来开发和推动Unicode。该协会由Apple、Compaq、Hewlett-Packard、IBM、Microsoft、Oracle、SiliconGraphics、Sybase、Unisys和Xerox等多家公司成,官方网站是组

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功