基于系统能力培养的操作系统课程改革和建设
2016-12-29赵鹏刘慧婷姚晟纪霞
摘要:针对现有操作系统课程中存在的问题,分析本科国际课程指南CS2013,提出基于系统能力培养的操作系统课程改革和建设方案,包括改革教学手段、优化课程内容、强化课程间的纵向联系、建设多层实践教学体系以及培养学生的系统思维能力和软硬协同的计算机系统研究、开发和应用能力。
关键词:操作系统课程;系统能力;系统观;系统思维
1.背景
操作系统是计算机科学与技术、软件工程、网络工程等相关专业的专业核心课,在人才培养中占有重要的地位。操作系统课程的教学目标是让学生掌握操作系统的基本概念、整体结构和运行机制以及操作系统各功能模块实现中涉及的基本算法、方法和技术;通过课程教学进而培养学生具有较好的专业素养,包括系统思维的能力和工程思维的能力。所谓系统思维,即为简化对事物的认知,建立整体观的思维方法。
美国ACM协会和IEEE协会共同编著的本科国际课程指南CS2013m进一步强调了系统知识和系统能力的培养,调整和新增了4个知识域,分别是系统基础(SF)、并行和分布计算(PD)、基于平台的开发(PBD)以及信息保障和安全(IAS)。这4个知识域均涉及系统级内容。国内教育部计算机专业教学指导分委员会也曾经组织过对计算机专业学生能力培养和实践教学体系的研究。
目前,操作系统课程主要教授操作系统基本概念、基本理论和基本算法。学生对操作系统的理解主要还停留在基本概念的理解和基本算法的模拟仿真上,不能很好地建立操作系统的完整概念,缺乏系统观;对于操作系统的核心内容掌握不够,没有很好地建立知识点之间内容的横向关联以及与其他课程的纵向关联,因而学生的综合分析、设计和应用能力也较差。此外,系统性综合实践环节的缺乏也导致学生的实践动手能力较差。
2.基于系统能力培养的教学理念
系统能力是计算机专业学生区别于非专业学生的核心能力之一。相比较其他专业学生的计算机基础和应用能力,计算机专业学生的核心特点和需求是更强调计算机系统能力。在后PC时代,移动互联网、云计算、大数据中心、物联网等计算机应用都对系统能力提出了更高的需求。
系统能力培养是一件系统工程。系统能力培养内容体系需要精雕细琢,培养过程应渗透到教、学的所有环节。由于目前计算机专业教学对系统化方面的重视不够,因此培养的学生在系统能力方面存在一些问题。当前,计算机专业学生最重要的是加强系统能力培养。操作系统课程在系统能力培养方面占有重要的地位。
基于系统能力的培养首先应培养学生具有系统观。具有系统观的人才能够站在系统的高度考虑和解决应用问题,具有系统层面的认知和设计能力,包括对软件和硬件功能进行合理划分、对系统不同层次进行抽象和封装、对系统的整体性能进行分析和调优、对系统各层面的错误进行调试和修正、对用户程序进行准确的性能评估和优化、根据不同的应用要求合理构建系统框架等能力。
系统观教学旨在培养学生熟练运用所掌握的计算系统基本原理,开发及构建以计算技术为核心的应用系统,使学生的知识体系得以更新与扩展,系统设计创新能力同步得到强化与提升。
3.改革和建设内容
3.1改革教学手段,优化课程内容
操作系统课程涉及的知识点广,内容琐碎,学生反映需要记忆的内容很多。改革教学手段,变堆砌知识点为运用知识点,引导学生变死记硬背为理解运用。例如,在介绍信号量机制时,不是简单地介绍整型信号量、记录型信号量、AND型信号量和信号量集机制4种信号量机制;而是首先介绍信号量是一个工具,工具经历从简单到复杂的演化过程,一开始的工具简单粗陋,存在一些缺陷,为了克服缺陷,提出改进,产生新的工具,然后发现新的工具也存在局限性,进而继续改进,构建新的工具,不断反复,这样工具逐步完善。
在讲授知识点的同时,教师还要不断引导学生思考现有工具存在的问题,如何改进,然后介绍教材上的改进方法。对于同样一个工具,我们可以巧妙地利用工具某一个或者某些属性完成不同的任务,如利用信号量的哪些属性实现进程的互斥,实现进程间的前趋关系以及进程间的通讯。在介绍存储器管理中的高速缓存时,可以首先介绍日常生活中商场购物柜台和仓库的特点以及它们之间的关系,然后将柜台和仓库分别映射为高速缓存和内存,将购物时商品的流通情况类比数据访问时,数据在内存和高速缓存中的查询读取过程。这样精心设置授课内容,从学生熟悉的生活实例出发,将知识点连接融合,引发学生思考,从全局系统的角度理解运用,可以避免对孤立的知识点死记硬背。
3.2强化课程间的纵向联系
操作系统是计算机系统各类资源的大管家,涉及的知识面广,与其他课程内容有着广泛的联系。在授课过程中,教师可以深挖课程间知识点的联系,对课程内容进行纵向融合,培养学生从整体、系统的角度深刻理解计算机硬件和计算机软件。
例如,在讲授信号量的知识点时,教师可结合程序设计和数据结构课程,引导学生根据信号量的逻辑属性,在程序设计中选择相应的数据类型定义信号量,利用程序设计技巧实现抽象模型;在介绍存储管理中程序的链接和装入过程时,教师可以结合高级语言程序设计和编译原理,加深学生对程序执行过程的理解;在讲授缓存的工作原理时,可以给出以下实例:分析以下代码中循环2比循环1快多少?
第1个循环对数组中的每个元素都乘以3,而第2个循环对每隔16个元素的数据乘以3。学生根据以往的知识结构得出,第2个循环只做了第1个循环大约6%的计算量,因此第2个循环比第1个循环快15倍。然而,在现代计算机上,这两个for循环运行的时间差不多相等,这是为什么?
提出问题之后,我们引入缓存的工作原理,通过对工作原理的分析,进而讲授由于内存访问和性能,这两个循环几乎耗费相同时间。这些循环的运行时间主要由访问数组内存来决定,而不是整数乘法,并且硬件对这两个循环执行相同的主存储器访问。CPU并不是逐个字节地访问内存,而是以(典型的)64字节的块为单位取内存,称作缓存行(cache lines)。当程序读取一个特定的内存地址时,整个缓存行都被从主内存取到缓存中,并且此时读取同一个缓存行中的其他数值非常快。因为16个整数占用了64字节(一个缓存行),所以步长从1到16的for循环都必须访问相同数量的缓存行,即数组中的所有缓存行,但是如果步长是32,CPU只需要访问约1/2的缓存行;步长是64时,只有1/4。该实例的讲解过程中,既可讲授操作系统缓存的工作原理,又能引导学生从更深层次和更系统的角度看待和理解程序设计过程中遇到的问题,进而使学生逐步形成和建立系统观。
3.3建设多层实践教学体系
实践教学是系统能力培养的重要环节。学生主动参与课程实践,可以对所授知识点有更为直观、深入的认识,有助于提高学习兴趣,进而提高学习的主动性和积极性,从而形成积极思考、探索问题、提高解决问题的系统能力。现有的操作系统课程教育侧重理论讲授,虽然也设置操作系统实验,但是多为算法的简单模拟。为了提高学生的系统能力,加强实践教学,教师需要深入开展“系统”级别的实践训练,建设多层实践教学体系,在干中学,从观察系统到仿制系统,再到定制系统,最终进入创造系统,培养学生的系统能力,形成系统观。
构件级学习和训练是整体级学习和训练的基石。教师除了在实验课程内容安排上保留少量经典的验征性基础实验内容外,还应主要将基本技能融入综合实验中,增加综合与设计性实验,而在实验内容方面更注重于分析设计和编程能力的锻炼;将实践教学内容分为3个层次:基础验证性实验、综合实验和设计实验。安徽大学计算机科学与技术学院操作系统课程实践教学内容见表1。
4.结语
高素质的计算机专业人才必须具备良好的系统能力。为适应计算机行业的快速发展,培养满足社会需求的和具有良好计算机系统能力的专业人才,是当前计算机教育中亟须解决的核心问题之一。操作系统课程在学生系统能力培养中占有重要地位,笔者分析了基于系统能力培养的教育理念,根据操作系统课程特点提出基于系统能力培养的操作系统课程改革和建设方案,提高了学生对计算机系统整体的深入理解和解题能力,实现了培养具有良好系统能力的高素质计算机专业人才的目标。