《操作系统》的实践教学

点赞:25298 浏览:117645 近期更新时间:2024-03-10 作者:网友分享原创网站原创

摘 要:该文分析了目前《操作系统》课程开展实践教学的主要方法及存在的问题,提出以教学操作系统GeekOS构建实践教学平台,并采取逐步扩展GeekOS的方法,让学生实际参加操作系统功能的理解和扩展,使学生能更好地理解操作系统的理论知识,达到更好的教学效果.

关 键 词:操作系统;实践教学;教学操作系统;GeekOS

中图分类号:TP393文献标识码:A文章编号:1009-3044(2013)25-5697-04

1概述

《操作系统》课程是计算机及相关专业的核心基础课,该课程不仅要求学生较好地掌握理论基础,而且要求培养学生良好的课程实践能力.由于该课程的内容比较抽象、深奥,并且课程实验难做,实验效果不明显,所以,该课程的实践环节在很多学校成为摆设,有的学校干脆去掉实践环节.然而,实践教学又是本门课的重要组成部分,实践教学对于学生理解和掌握操作系统的基本原理和方法,为今后从事系统程序设计,并发程序设计,多用户环境应用程序设计打下坚实的基础.所以,本门课不但必须包含实践内容,而且还应该加强,使之能更好地辅助课堂教学.[1]

2《操作系统》实践环节的运作情况

当前,国内各高校因为自身师资力量、实验条件、学生程序编写能力的不同,对《操作系统》实践环节的处理方式不尽相同,有的要求学生实现一个比较完整的小型操作系统,该小型操作系统包含了一般操作系统的主要功能;有的要求师生共同剖析一个开源的操作系统,并试着更换一些功能模块,以体验这些模块的地位和作用;有的要求学生实现《操作系统》中的一些经典算法,如生产者-消费者问题、银行家算法等,以深入理解《操作系统》的原理.另外,各高校在人才培养方案中,《操作系统》实验教学学时一般占课程总学时的1/3至1/2,实践课时的多少,取决于高校对该门课的重视程度,以及实际的教学效果.[2]


经过对各高校《操作系统》实践教学的调查,《操作系统》实践部分的开设形式主要有以下四种:

2.1验证操作系统部分功能的实验

这种实验方式最简单,主要思路是,以某个实际的商业操作系统为实验环境,学生可以尝试执行操作系统提供的某些功能,能力更强的学生还可利用操作系统提供的系统调用函数编写、运行程序,以改进功能.通过这两种方式,学生可体验操作系统原理在实际商用操作系统中是如何工作的.

这种方式的特点是,学生不必编写操作系统功能实现的代码,对完全理解操作系统的内涵意义不大.

2.2模拟经典算法的实验

这是比较常见的一种实验方式.其执行过程是,由教师选取操作系统中的一些经典算法,如读者-写者问题,电梯算法,让学生使用其熟悉的编程语言(如:C语言、C++语言)来实现算法.

《操作系统》的实践教学参考属性评定
有关论文范文主题研究: 关于操作系统的论文范文集 大学生适用: 高校大学论文、研究生论文
相关参考文献下载数量: 53 写作解决问题: 写作技巧
毕业论文开题报告: 论文模板、论文设计 职称论文适用: 论文发表、职称评中级
所属大学生专业类别: 写作技巧 论文题目推荐度: 免费选题

该方式与程序设计课程的上机环节相似,这有助于学生理解《操作系统》的理论和技术,但是,这种方式由于缺乏训练学生对操作系统完全性的把握,达不到培养学生完整掌握操作系统的目的.

2.3替换实际操作系统的主要模块

这种方式对学生的编程能力要求较高.其执行过程是,以开源的操作系统为平台,要求学生选取其中的主要功能模块,并对其进行替换及扩展.然而,开源的操作系统一般比较庞大,结构环境复杂,对师生的要求很高,一般高校实施的效果不好,最终只有小部分学生达到实验目的,学生的受益面不大.[3]

2.4设计一个操作系统雏形

这种方式的执行过程是,教学中可选取一个包含简单内核的教学操作系统,让学生逐步改进、扩展其功能;或者干脆让学生设计一个全新的操作系统雏形,该雏形包含操作系统的基本内核功能,如处理机管理、进程管理、内存管理、设备管理、文件管理功能.

该方式与课程实验教学目标一致,理论上比较理想,但在实际的执行过程中,由于操作系统是一个大型的系统软件,其设计、结构相当复杂,因此这种方式实施起来难度很大.

3在教学操作系统GeekOS上完成实验教学

由于一般的商业操作系统设计复杂,结构庞大,学生规定课时内很难全面掌握,同时,这些操作系统已经非常成熟,差不多实现了全部功能,学生没有多少新的工作可做.所以,设计一个基于教学操作系统的实践教学平台显得尤为迫切和必要.

3.1教学操作系统的分类

教学操作系统有两大类:一类是针对RISC结构MIPS处理器的,例:Nachos;另一类是针对CISC结构的X86通用处理器的,例:Minix、GeekOS.

3.2GeekOS操作系统概述

最通用的处理器是CISC结构的X86通用处理器.它是一个用C语言开发的操作系统,学生可以在Linux或UNIX环境下对其进行功能扩充,也可以在Windows下使用Cygwin工具进行开发,且其针对进程、文件系统、存储管理等操作系统核心内容分别设计了7个难度逐渐增加的项目供选择.

3.3GeekOS的项目设计

GeekOS操作系统源文件geekos-0.3.0.zip可以从网上免费下载.GeekOS系统的源文件在src目录下,分7个项目:project0~project6.

3.3.1项目的结构

每个项目的文件结构都类似,以project0为例,主要有四个子文件夹:

1)build文件夹.包含系统编译后的可执行文件的文件,软盘镜像fd.img(project1等项目中还包含有磁盘镜像diskc.img),makefile项目管理文件.

2)Include文件夹.包含两个子目录,分别是geekos和libc,在geekos子目录中有kthread.h,keyboard.h等头文件,在libc中包含有GeekOS支持的C语言标准字符串函数头文件string.h.3)scripts文件夹.包含项目编译时用到的一些脚本文件.

4)src文件夹.包含系统内核源代码,用户修改GeekOS系统时要修改的源代码如main.c等都位于这个目录中,在User子文件夹中一般是用来存放用户的测试文件,在tools子目录中的代码是用来建立pfat测试文件系统的.

3.3.2七个项目的功能

project0:在该项目中,要求学生实现一个内核级的I/O进程,该进程能从键盘接收一个按钮,并显示在显示屏上.该项目的目的是让学生了理解GeekOS的编译、链接和运行,明白计算机系统是如何启动的.

project1:在该项目中,要求学生熟悉可执行链接文件(ELF)的格式,并通过编程程序来分析该文件,同时将分析结果送到加载器.该项目的目的是让学生理解ELF文件的结构,使学生掌握如何加载和运行可执行文件.

在提供的GeekOS内核系统的基础上,为学生设计了7个由易到难的设计项目用于GeekOS的改进.这些项目分别涵盖了操作系统内核的各个基本模块:系统启动,进程管理,存储管理,文件系统,访问控制以及进程间通信.7个项目都规定了改进的目标,并提供了一些设计指导性的意见,但没有提供源代码,所以学生首先必须熟悉GeekOS的基本工作原理,才能开展各个项目的设计与实现.

project2:在该项目中,要求学生编程来支持用户态进程,这种支持包括初始化用户态进程空间、初始化用户进程空间、切换用户进程、导入用户程序.该项目中,计算机存储分配方式还是采用段式分配.该项目实现后,学生就可以使用GeekOS提供的命令行解释器Shell运行一些命令来执行PFAT文件系统内的用户测试程序.

project3:在该项目中,要求学生改进GeekOS的调度程序,实现基于4级反馈队列的调度算法(初始GeekOS系统仅提供了FIFO进程调度算法),并实现信号量,支持进程间通信.

project4:在该项目中,要求学生编程实现分页虚拟存储管理,以替代前述项目中一直采用的段式存储管理.学生实现分页式虚存管理以后,系统在内存不足时,就可以将部分内存页面调出送到硬盘,以缓解内容压力,实现虚拟存储技术.

project5:在该项目中,要求学生实现GOS文件系统,该文件系统采用虚拟文件系统,可加载不同的文件系统,PFAT只读文件系统是默认加载的文件系统.该项目的目的是要实现一个多级目录的、可读写的文件系统.

project6:在该项目中,要求在文件系统中新增一个访问控制列表,并使用匿名半双工管道实现进程间通信.

以上7个项目,后几个项目实现难度比较大,所以在实际的教学中,可根据情况,要求学生必须实现project0,project1,project2,而project3至project3,对能力强的学生可以自行完成.

4《操作系统》实践环节的考核

《操作系统》实践环节的考核非常重要,好的考核将激励学生努力学习,达到实验效果,办法如下:

1)教师制定实验报告格式和要求,教师对学生完成的实验报告的作检查和评价;

2)对设计性实验,要求学生回答并作出评价,回答的问题主要有:阐述解决该问题的算法思想、所使用的数据结构是如何设计的、使用的测试用例是如何选取和设计的、算法性能怎么样.

3)对一些学生能实现的算法,要求学生上机演示,教师在其演示期间可提问并作评价:主要程序代码的含义,分析及解释运行结果.[4]

5结束语

本文讨论了《操作系统》课程实践环节的主要动作方式,并分析其利弊,然后提出了选用GeekOS教学操作系统作为实践平台来开展实践教学工作.在实际运作过程中,为达到较好的学习效果,可对学生实施分组,每组6个学生(好中差搭配),灵活调整学生要完成的任务.