0 引言
由于操作系统本身具有理论性强、内容涉及面广、概念较为抽象以及需要多门前导专业基础课程支撑等特点,因此对教师而言,授课难度较大,而对学生来说,则难以掌握课程要领,甚至部分学生在学完之后感到收效甚微。与此同时,随着信息技术的发展,计算平台正在发生显著变化,移动计算终端环境所占的市场份额也越来越大。据国际数据公司(International DataCorporation,IDC)2013年第三季度发布的报告显示,目前69%的用户使用移动设备访问互联网,而配置在这些移动设备上的基础软件——操作系统也快速发生着变革。IDC的报告显示,移动设备中装配的操作系统Android占据统治地位,比例高达81.0%。这些数字表明,面向Android操作系统的产业链很长,而这个产业链对优秀工程师的需求也非常旺盛。
根据教育部“卓越工程师教育培养计划”(以下简称“卓越计划”)的目标,“卓越计划”要强化培养学生的工程能力和创新能力,培养一大批能适应及支撑产业发展、具有创新能力和国际竞争力的卓越工程师。该计划的主要目标和改革措施需通过专业培养方案的制定和具体实施方可实现,其中面向卓越工程师后备人才培养的课程体系和教学内容改革属于核心内容。
在此背景下,我们以河南工业大学的两个“卓越计划”教学班共63名学生为教改实验对象,使用Android操作系统实施操作系统的课程设计改革。在这个课程设计中,指导学生分组完成Android系统下的5个编程项目,分别涵盖操作系统5个重要概念,即调用与进程、同步、调度、虚拟内存和文件系统,旨在通过该课程设计增强学生对操作系统重要概念和原理的理解,锻炼学生的工程实践能力。
1 使用Android实施课程设计的背景
1.1 教学现状
随着信息技术的快速发展,操作系统在社会信息化进程中的地位日益凸显。与此同时,操作系统相关的新概念、新技术亦不断涌现。相比较而言,目前操作系统课程的教学存在一些问题:操作系统的发展日新月异,而国内采用的一些教材内容较为陈旧,只能反映经典内容,应用实例多以类Unix为主,与主流市场应用存在距离,无法体现当代操作系统的发展状况和态势,不能满足社会发展对人才的培养需求。此外,传统实验通常是对操作系统实现方法和原理的模拟或验证,缺少设计性、综合性实验,忽略对学生创新能力和工程实践能力的培养,导致出现与卓越人才培养目标脱节的现象。
因此,教师在讲授操作系统课程时,一方面应思考如何在课程教学中体现最新的操作系统原理与方法,另一方面还应让学生有机会亲自动手完善操作系统的内核,体会操作系统的原理,同时注重强化学生的工程实践能力,提高学生解决实际问题的工程实践能力。
1.2 使用Android系统的优越性与必要性
操作系统是逻辑上紧密配合的整体,学生若想有效地把握操作系统全貌,需具备较强的软件工程意识和工程素质,而工程意识和工程素质的培养需要学生通过自己动手编程完成一些具有特定功能的项目,积累编程经验,这是融会贯通计算机科学知识非常重要的一个环节。因此,在操作系统课程设计的实践环节中,让学生自主编写一些内核程序,对帮助学生体会操作系统核心概念有重要意义。使用Android系统实践操作系统课程设计的先进性和必要性有以下几个方面。
(1)作为一个稳定成熟的操作系统,Android系统能使学生体验一个真实的操作系统。编写操作系统内核可以令学生原来掌握的操作系统概念与原理不再是空中楼阁,而这正是一些基于教学型(即裁剪版)的模拟操作系统所不具备的。
(2)Android系统是一个基于Linux内核的开源操作系统,学生可借助前期学到的Linux知识和文档,还可获取源代码等丰富的资料,因此学习的门槛不是太高。
(3)作为一个商业操作系统,Android系统不需要普通用户和学习者维护,其不断的开发与改善有利于学生了解操作系统开发的最新理念。
(4)随着Android系统在移动设备应用中的日益普及,学生对使用该系统具有浓厚兴趣,而学习好这个操作系统对日后开展基于Android系统的应用程序开发大有益处。
2 Android系统课程设计的实施
2.1 课程设计的内容
为了方便使用Android实施操作系统教学,我们使用哥伦比亚大学提出的Android虚拟实验室的教学环境,我们同时使用模拟的和实际的移动设备配置开发环境。在虚拟设备环境下,学生可在自己的电脑上直接使用或部署Android的开发环境。这就要求学生能读懂和理解AndroidLinux的组件功能,在教师的指导下修改或添加一些功能组件。在整个课程设计过程中,学生需要完成5个有关Android内核编程小项目,分别涵盖操作系统的5个重要概念:①基于Android设备独特进程层次的系统调用与进程;②基于全局资源(如共享传感器)的进程同步;③虚拟内存;④使用自动位置定位的文件系统;⑤基于开放Android系统的单应用程序调度模型。
2.2 虚拟实验室的构建
在操作系统课程设计中,能便捷地使用合适的开发工具非常重要,为此,在Android操作系统的虚拟实验室里,我们为学生提供已配置好环境的VMware虚拟机,其中预先安装了学生完成上述5个项目所必需的Android和Linux开发工具。这套工具既包括真实移动设备的启动〔boot〕和测试程序、Android SDK开发工具包(包括Android模拟器)、创建虚拟设备工具、GUI调试工具等,又包括交叉编译的工具链、Android环境中的Bionic C言语开发库等。此外,我们还提供交叉编译环境的使用指南和设备以及模拟器的详细使用说明。
尽管各种平台均提供Android开发工具,但是出于教学上的方便,我们提供上述预制的开发工具包,这是出于如下原因:①减轻学生的系统管理与配置负担,避免学生在有限的教学时间内迷失于具体的配置细节,避免出现“只见树叶不见森林”的教学情况。②配置好的虚拟平台可为(无意)破坏开发工具安装或系统安装失败的学生提供系统安全保护。对学生来说,如果经历系统配置或安装失败,他们只需重启预制好的VMware工作站,就可得到原来的编程环境。此外,VMware强大的截图功能可以记录学生的学习过程,便于他们体验实验环节。③通过提供简单、标准化的Makefile、shell脚本和用户层的开发工具,预制好的虚拟平台可避免交叉编译带来的不便,可令学生将更多的精力用于操作系统概念及原理的学习与理解。
Android SDK主要用来开发用户层的GUI应用程序,不是针对Android的内核而设计,因此一些编译器及Android实时运行库的预先配置是有必要的,更重要的是标准化的环境能够允许学生使用简单的Makefile文件编译调试程序,简化了Linux内核交叉编译的指令。取代在shell环境下通过手动输入的参数,利用手机3D方位感知模型,使用定制的Android模拟器程序OpenIntents,可加速将方向或加速度等数据输入到模拟器中,大大简化学生的输入过程。
3 课程设计任务的完成
我们将学生分成12个小组,每组约5人,让学生通过预制好的Android虚拟实验室合作完成课程设计。课程设计包括5个有关Android内核的编程小项目,其中,部分项目要求学生能读懂并能修改简单的程序块,而部分项目仅要求学生编写简单的用户空间测试程序,学生不必编译整个Android代码或者GUI应用程序(这是后续专门的Android应用程序开发课程所专注的)。这5个课程设计(作业)对应于5个操作系统的重要概念,有所不同的是它们的某些特性具有Android或移动设备所专有的特征,这5个课程设计分别对应的概念是系统调用与进程、同步、调度、虚拟内存和文件系统,这5个概念与Android相关的主题分别对应为zygote进程与Java工作线程、设备传感器、显示优先调度、通过写时拷贝(copy-on-write)共享内存实现的多进程工作集以及定位感知的文件系统。
操作系统课程设计的任务安排也是有条理的,不仅要让学生在课程设计早期理解操作系统原理,而且在课程设计后期的程序设计实践中添加Android系统独有的特征,加深对这些重要概念的理解。举例来说,在课程设计初期要求学生理解Android进程树,关注为什么所有的GUI程序都是进程zygote的子进程。zygote本意为受精卵,其他后生细胞均由受精卵分裂而成,其用在Android系统中表示其他子进程由zygote进程“孕育”而生。这和Linux中的fork进程的命名有异曲同工之处,fork本意为叉子,叉子外形是一柄而多齿,因此fork父进程也有父生多子寓意。此类形象的比拟教学便于学生理解一些晦涩的操作系统概念,而亲自动手实践则可加深学生对该概念的理解。zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器,每当系统要求执行一个Android应用程序,zygote进程就会fork出一个子进程执行该应用程序。
在课程设计的后期安排上,利用zygote进程节省系统内存(RA2d)可加强学生对进程间内存共享机制的理解。对于一些只读(read-only)系统库,当操作系统需要一个新的虚拟机实例时,zygote复制自身使得所有虚拟机的实例都与zygote共享一块内存区域,从而大大节省了内存开销。
同步是现代多任务操作系统的一个重要概念。移动设备中有大量的传感器,基于Android系统的智能终端通过传感器感知用户信息,这就不可避免地涉及对某些资源的竞争使用。在Android系统中,学生可通过执行一个新的同步原语——orientation event(方向事件)理解同步的概念。执行该原语可让多个进程阻塞执行(挂起),直到移动设备处于某个特定方向。在编程实践中,我们要求学生完成一个趣味性小任务:在手机屏幕没有面朝桌面放好之前,某个进程必须被阻塞执行。为了完成这个小任务,学生要在用户空间写一个守护进程(daemon),这个进程使用标准的Android硬件抽象库,然后通过系统调用(system call)向内核空间传递数据。方向事件的完成需要如下3个新的系统调用来支持:orientevt open(方向事件开),orientevt close(方向事件关),orientevt wait(方向事件等待)。这个守护进程将设备的方位信息作为一个信号源(signal),以唤醒(wakeup)被阻塞的进程。学生通过编写几个简单的小程序就可测试这个新的系统调用接口。程序功能顺利完成带来的成就感极大提高了学生参与的热情。
最后,在课程设计的答辩环节中,我们设计出多个简单的有关操作系统的概念性问题,除了要求学生给出问题答案,还要求学生解释这些概念与原理如何体现在Android这个特定的移动设备操作系统中。
4 教学效果的验证
对于河南工业大学两个“卓越”工程班的63名学生,我们使用Android系统作为载体,实施操作系统课程设计教学改革。尽管在实施过程中面临诸多困难,但是绝大多数学生的整体评价是正面的,取得了一定的改革成效。课程设计完毕后,我们设计了一个问卷调查,以了解学生对这种新模式下操作系统课程设计的评价,见表1。
由表1可看出,大部分学生认为Android操作系统课程设计有益于理解操作系统原理,可以增强基于Android系统的项目动手编程能力,但是我们也收到一些负面反馈,如部分学生认为Android设备模拟器运行速度太慢,调试Android嵌入式内核的过程过于复杂,不容易掌握。此外,在日常生活和学习中,学生接触更多的还是桌面操作系统(如Windows等)。因此,相比较而言,学生对类Linux系统的Android系统相对陌生,这种生疏感也使得部分学生对日后开展类似Android课程设计持否定或中立态度,这个比例达到20.64%。实际上,负面反馈的问题正是我们教学的薄弱环节,也是我们下一步教学改革需要重点考虑的方向之一。
5 结语
为了适应操作系统理论与技术的快速发展,在河南工业大学“卓越人才”培养计划指导下,我们开展了Android平台下操作系统课程设计的教学改革,增强了学生对操作系统原理的理解,提高了学生的工程实践能力。卓越工程师的培养主要通过相应课程体系的实施实现,因此有针对性地对大学生课程体系进行改革至关重要,但我们也认识到学生工程动手能力培养不是立竿见影的,它是一项复杂艰巨的系统工程。若要达到熟练地使用Android系统编程,学生还需要具备良好的C/C++、Linux程序设计及数据结构等课程的知识储备[第一论文网专业提供专业写作论文的服务,欢迎光临]。针对“卓越工程”计划的要求,在以后的教学实践过程中,我们仍需坚持不懈地探索课程教学改革之路,力争全面提高工程人才的培养质量。
参考文献:
[1]刘琦.操作系统教学改革的思考与研究[J].中国科技信息,2011(18):155-156.
[2]杨柳,胡志刚,李玺,等.CDIO的“操作系统”教学改革探讨与实践[J].计算机教育,2009(14):24-26.
.http:∥?containerld- prUS24442013.
[4]林健.面向“卓越工程师”培养的课程体系和教学内容改革[J].高等工程教育研究,2011(5):1-9.
. ACM SIGOPS Operating Systems Review,2012,46(2):80-86.
[6]Cox R,Frey C,Yu X,et 6,a simple Unix-like teaching operating system[EB/OL].[2013-09-05].http:∥. .
[7]徐惠,郭荣祥,周建美.基于计算机专业学生创新能力培养的课堂教学改革[J].计算机教育,2009(21):86-89.
[8]姚红岩,谭丹丹.面向卓越软件工程师培养的操作系统教学策略[J].计算机教育,2013(15):31-35.
[9]Andrus J,Nieh ng operating systems using android[C],/Proceedings of the 43rd ACM Technical Symposium on Computer Science York:ACM,2012:613-61 8.
本文选自《计算机教育》2014年第8期,版权归原作者和期刊所有,如有异议,请联系第一论文网QQ712086967,我们将在第一时间处理。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。