面向应用型本科的操作系统教学实践与探索
2017-01-01张丽晓
张丽晓,杨 平
(上海杉达学院 信息科学与技术学院,上海 201209)
面向应用型本科的操作系统教学实践与探索
张丽晓,杨 平
(上海杉达学院 信息科学与技术学院,上海 201209)
针对操作系统难学、难教的情况,面向应用型本科教学,提出在教学过程中融入多种教学方法,并一一阐述这些方法在教学中的实施办法和运用过程,最后说明加强实践环节的重要性并说明具体措施。
操作系统;应用型人才;关联;设计哲学
0 引 言
操作系统是计算机最核心的系统软件,管理着计算机的软硬件资源,是一款功能强大和设计复杂的程序。随着计算机硬件的发展以及用户需求的变化,操作系统呈现出越来越强大、越来越复杂的趋势。
对于计算机专业的学生来说,操作系统课程是专业核心课,操作系统的设计原理及实现技术是他们必须掌握的基础知识[1],然而,学生普遍认为操作系统课理论性强、概念抽象、知识点多而杂[25]。通过多年的探索,我们在教学过程中运用多种教学方法,试图通过学习操作系统课,让学生不仅可以了解隐藏在技术层面之后的原理,还可以通过认识和理解经典算法和成熟设计思想,增强自身的抽象思维、逻辑推理和实践动手能力[5],而严谨有序的思维能力是计算机专业学生需要加强的。
1 明确教学目标,组织教学内容,融入教学意图
面对如此强大和复杂的软件,操作系统课教什么或学生学什么?操作系统教学的意义不一定是教会学生编写一个自己的操作系统。操作系统太复杂,对于普通应用型本科的学生来说,他们没有能力实现一个全新的操作系统,设置这样的教学目标不适合。社会对应用型人才的要求是具有扎实的基础知识和实践能力以及一定的创新能力。计算机技术发展迅速,具体的技术可能会过时,因此操作系统课程的教学目标应该放在教授学生通用的知识,培养其将知识应用于实践的综合能力以及适应技术发展的能力,进而提高学生的创新能力[6]。
操作系统课程要讲授的内容是操作系统发展过程中保留下来的精华,体现了操作系统理论和技术中最核心、最令人鼓舞的创新内容。教师需要在授课中将发展中的精彩片段以及睿智的思想呈现在学生面前,让学生体会到成果的伟大,进而理解经典并从中汲取创新的智慧。
操作系统的设计其实蕴含着一种哲学——折中和平衡。算法在性能指标中寻求平衡,作业调度中的每种调度算法都有自己的优缺点,主要是根据实际需要选择合适的算法,有时还要在性能和复杂度之间寻求平衡;时间换空间与空间换时间的折中,虚拟存储器的实现是时间换空间,即将进程的一部分放在外存,从而在逻辑上增加可用的内存空间,但是执行过程中,将需要的程序或数据从外存调人内存将花费更多的时间。设计任何的工程系统,包括软件系统,都是一个权衡的过程,理解这种设计思想或哲学,可以用于解决实际工作问题。
操作系统的发展史就是操作系统的理论和技术不断创新的历史过程,计算机硬件的发展和用户不断变化的需求是操作系统发展的两大推动力,因此,教师在教学过程中要注重培养学生用发展的眼光看待事物,对新技术、新方向具有敏锐的观察力和判断力。例如,多核、多处理机的出现会导致操作系统向充分发挥多核、多处理机性能的方向发展;随着云计算产品的普及,相适应的云操作系统也会出现等。此规律推广到手机和其他智能设备也同样适用。如果学生能将这种发展的意识内化为自身素质的一部分,创新性的设计也将容易实现。此外,操作系统中的资源管理方式如独占资源虚拟化、采用调度的方式,并发、并行、锁等概念也能够在许多其他场合得到重用。
2 多种教学方法贯穿教学过程
操作系统自身的复杂性导致操作系统课程的概念和算法较多,教师在教学过程中不仅需要运用多种教学方法和教学手段,还要帮助学生对教学内容进行梳理。
2.1 一条红线
首先,告诉学生学习操作系统要掌握“一条红线”,即操作系统的任务是管理计算机资源、提高资源利用率和满足用户需求,这是贯穿整个系统的一条主线。整个操作系统的设计都是为了实现这一目标,如内存管理,首先要为运行的程序分配内存并保证其能正确运行,程序运行结束后回收内存;随着内存容量变大,在发现总是有剩余内存空间后,为了提高内存资源利用率,提出同时加载多个程序到内存,内存管理从单一存储分配方式发展为分区存储管理方式,之后发展为分页存储管理方式。这样,在保障用户能同时运行多个程序和提高资源利用率的同时,也提高了用户满意度。整个操作系统的发展史也体现了这一主线,随着硬件的发展,如内存越来越大、处理器速度越来越快,为了提高资源利用率,操作系统从单道发展到多道,交互需求使操作系统在批处理之后出现了分时系统等。
2.2 关联教学,理清关系
操作系统的设计原理和实现技术涉及数据结构、数据库、计算机组成原理等多门课程的知识,教师在讲授过程中将这些课程间的知识点关联起来,将使学生对知识融会贯通大有好处,也有利于学生从整体上理解操作系统的设计思想。实验设计可以结合已经学习的C语言和Java语言,如可利用Java语言中的线程创建、线程互斥和文件缓冲进行编程实验,不仅可以帮助验证和理解操作系统的概念,还能锻炼学生的编程能力,实现课程间的横向关联。此外,教师也应该向学生说明操作系统教材各个章节之间的关联,让学生在开始就有一个整体认识。操作系统的功能可以概括为四大管理(处理机管理、存储管理、设备管理和文件管理)和一个用户接口,大部分的教材基本上也是按照这5部分安排内容。四大管理功能与计算机系统的组成是对应的,计算机硬件主要包括处理机、内存和输人输出设备,而计算机软件的体现形式是文件,从计算机的组成部分着手,学生较容易记住操作系统的功能。
操作系统课程内容是一个有机整体,除了章节之间有关联外,知识点之间还有关联。在教学过程中,教师要注意将这些知识点串联起来,讲解后面的知识点时应该将前面学习的内容进行回顾。例如,关于进程的状态转换,进程的状态部分会介绍进程状态及状态间的转换条件;通过信号量进行同步和互斥时,P、V操作也提到进程在运行、阻塞及就绪状态之间的转换;进程调度算法部分,也会讲到进程运行的时间片到了之后进程状态会发生转换;在分页存储管理方式中,如果发生缺页,进程也会进行状态转换。
2.3 what ,why和 how
虽然操作系统非常复杂,但是在学习操作系统每一部分的过程中,学生如果能试着从解决“what,why和how”3个问题着手,就可以较容易地理清内容之间的关系,了解设计的来龙去脉并一步步深人理解操作系统的设计思想,如处理机调度部分,要依次弄清楚什么是处理机调度、为什么要进行处理机调度和怎么进行调度;再如存储器管理部分,为什么会出现分页存储管理方式、什么是分页存储管理方式以及这种存储管理方式是如何工作的。如果站在设计者的角度去学习和思考,对一些概念或算法的记忆不再只是单纯的死记硬背,那么学习也会更加容易。
2.4 寓教于乐,增强学生学习兴趣
学生在学习过程中,普遍认为操作系统理论性强、概念抽象,知识点和原理的讲授比较枯燥,因此激发学生的学习兴趣非常重要。教师可采用多种教学手段,如多媒体教学和板书相结合的方式,讲解时适当采用动态演示以加深学生学习的印象,对轮转调度算法、死锁问题、动态分区存储管理等内容可以采用动画形式;课堂上也可以用操作系统工具观察简单的操作系统现象,如运行和关闭一个程序查看任务管理器中进程的变化,观察线程列,进行虚拟内存的设置。
教师可在教学过程中利用类比,形象地讲解抽象的操作系统概念和算法。将操作系统的许多经典算法和原理与生活中的现实问题关联起来,能够加深学生对原理的理解[7];也可以提出类似的体验式教学方法,如调度算法可类比医院排队或银行排队。另外,进程的生命周期及状态可与人的生命周期及状态类比,人也有生老病死、顺利、挫折等不同状态;讲到最近最久未使用页面置换算法时,可举例说如果教室座位已满,有人要进来听课则需要请一个出去才行,选择哪个人出去好呢?可以选择长时间没有抬头听课的学生(相当于很长时间没有被访问的页面)出去,而这样往往也可以达到调动课堂气氛的效果;银行家算法中操作系统相当于银行家,申请资源的进程相当于向银行申请贷款的客户,同审批贷款类似,在分配资源前,操作系统同样要审核,以确定是否会影响系统安全。
2.5 循序渐进,遵循认知规律
教师可先从较简单的问题人手,待学生理解和掌握后再一步步增加问题的复杂度,这样学生往往容易接受,如生产者消费者问题,先讲解一个生产者、一个消费者、一个缓冲区时信号量应该怎么设置→一个生产者、一个消费者、多个缓冲区时信号量的设置→多个生产者、多个消费者、多个缓冲区时信号量的设置。
3 加强实践环节
实践的目的是提高学生动手能力及加深其对概念的理解,因此实验内容的设计要与教学内容相关联并与学生的能力相适应[8]。将操作系统实验分成5个层次,即了解操作系统、使用操作系统、操作系统编程、操作系统改进和操作系统设计,大部分的普通大学进行前3层的实验即可。
从辅助操作系统教学的角度,我们利用Windows和Linux两大主流操作系统作为实验平台,设计相关的实验项目,供学生理解操作系统的相关知识点;使用学生已经学过的C语言和Java语言实现实验内容,在Linux下使用C语言编程,在Windows下采用Java语言编程实现。实验内容丰富,难易结合,利用已学过的编程语言,既能巩固已有知识和加强学生的实践操作能力,又能提高学生的学习兴趣。
实践环节的具体实施采用翻转课堂方式[9],即指定自学材料(如课件、视频等)布置任务,由学生自主学习,学生充分理解实验目的并做好充分准备后再实施上机,这样得到的教学效果比实验课时由教师指定实验内容和实验步骤要好。
4 结 语
操作系统是非常重要的一门课,希望不同层次的学生在学习操作系统后,都能在多方面得到启发。在当今技术发展日新月异的时代,教师要根据普通应用型本科学生的特点及应用型人才的现实需求,选择讲授经典的设计和理念,并力图使学生在经典中汲取知识和创新。操作系统的概念多和理论抽象也是师生所共识的,采用多种教学方法激发学习兴趣也至关重要。
[1] 王敏, 申利民, 尤殿龙. 计算机密切型专业柔性培养模式的研究与实践[J]. 教学研究, 2013, 36(4): 4-7.
[2] 潘雷. 操作系统课程在应用型本科高校的教学改革与实践[J]. 软件工程师, 2015, 18(1): 43-44.
[3] 袁红丽, 李艳, 谢志英. 以计算思维为导向的计算机操作系统教学设计[J]. 计算机工程与科学, 2014, 36(增刊1): 205-207.
[4] 王海红. 操作系统原理课程关联教学方法研究[J]. 计算机教育, 2013(15): 8-12.
[5] 李翠霞, 谭营军. 应用型软件专业操作系统课程的教学探索[J]. 计算机教育, 2010(20): 69-71.
[6] 杨兴强, 刘祥鹏, 刘毅. 操作系统教学中的经典与创新[J]. 计算机教育, 2013(15): 22-25.
[7] 吴娅婷. 基于“操作系统”课程教学改革的研究[J]. 电脑知识与技术, 2010(3): 666-667.
[8] 邹恒明. 操作系统课程实验中的五重奏哲学[J]. 计算机教育, 2009(20): 109-112.
[9] 张其亮, 陈永生. 翻转课堂在操作系统实验教学中的应用研究[J]. 实验技术与管理, 2014, 31(12): 173-176.
(编辑:宋文婷)
1672-5913(2017)01-0099-03
G642
上海市民办高校重点项目(2016-SHNGE-01ZD)。
张丽晓,女,讲师,研究方向为程序设计、软件工程和操作系统,lxzhang@sandau.edu.cn。