操作系统与嵌入式系统实验教学的融合探索

计算机教育 / 2018年10月19日 12:18

手机

宫晓利+徐浩聪+张金+卢冶+刘哲理

(南开大学 计算机与控制工程学院,天津 300350)

摘 要:分析目前操作系统和嵌入式系统课程的实验教学过程中的问题与挑战,阐述两个课程各自特点以及知识的综合运用,提出以开源平台为基础同时结合配套设施资源的新型教学模式,说明具体教学改革方法。

关键词:操作系统;嵌入式系统;实验教学;开源平台;Tizen

0 引 言

操作系统课程是计算机学科的核心专业课之一[1]。操作系统中知识的学习兼具理论理解与实践运用,也是进一步学习其他课程的基础,在计算机专业教学中占有举足轻重的地位[2]。由于操作系统的概念抽象,涉及的代码量巨大且难以理解;在教学时间上处于三年级上学期,学生的编程开发经验不足,增加了教学的难度。

嵌入式系统是一门集软硬件技术于一体,涉及集成电路、计算机技术、自动控制等多种知识的综合课程。自21世纪初进入我国高校的教学体系以来,随着产业界的不断发展课程内容日渐丰富,成为计算机相关专业的一门重要课程。由于嵌入式系统的设计强调以“应用”为中心和导向,注重与产业结合以及在工程实践中的应用,这使得教学过程中存在理论性不足的问题,在实践教学中更容易变成按部就班的验证性实验,或是某商业产品的展示与应用。

将两门课程的内容衔接,特别是在实验教学中进行内容的调整融合,能够提高教学过程的系统性和连贯性。嵌入式系统中涉及硬件原理、嵌入式操作系统、嵌入式应用软件等多个组成部分,教学环节中要完成每部分知识的原理分析和系统验证,课时相对紧张。将操作系统实验课程的内容与之融合关联,既为操作系统中的原理找到了实践验证环境,又为嵌入式系统的实验课程补充了原理分析环节。

为了达到良好的教学效果,让学生对各类概念的理解达到融会贯通,在教学过程中往往建立一套系统的课程体系,操作系统作为先导必修课,后续配套 Unix/Linux 操作系统、嵌入式系统原理等专业选修课,并且每门课程都配有相应的实验实践教学。

1 操作系统与嵌入式系统教学中的新挑战

嵌入式系统、移动云计算、物联网等新兴产业的发展和新技术的应用,拓展了操作系统的范围。学生日常生活中使用的智能设备增多,不再局限于普通 PC 机的使用。依据 PC机的使用方式建立的渐进式学习方法需要随之相应扩充。操作系统的形式发生变化的同时,其内涵也随之发生一些变化。现代操作系统中,对进程、调度算法等概念的探讨相对弱化,而增强了对于外设、交互、实时性、能耗管理等方面的设计要求,这些新特性需要给学生形成清晰的认识和直观的感受。计算机操作系统作为计算机相关专业的基础课程,应沿着计算机产业走向,紧密结合最新技术,充实其教学内容[3]。

商业化产品宣传中使用的概念与嵌入式系统教学存在偏差。智能手机、平板电脑等产品更新换代迅速。在商业化宣传中,处理器核心、硬件平台、操作系统、应用界面等概念往往被混淆使用。这些商业产品以及配套软件开发的盛行,也使一部分学生对于嵌入式系统的理解局限于智能手机,而对于嵌入式软件的理解也局限于移动应用软件。嵌入式系统需要设计与产业结合的教学案例,更需要透过现象看本质,从技术和机理层面进行分析,并且与所学的基础课程和理论知识相对应,因而能够加深理解。

人才需求转向对已有系统框架的理解、定制和二次开发。随着产业环境的完善,人才需求不断扩大。对操作系统和嵌入式系统的教学要求不再满足于对原理的认知和简单应用,但也不需要从零开始独立构建一个完整的系统,而是需要在现有项目的基础上进行产品化定制和二次开发,特别是在开源软件项目的基础上进行改进。这需要学生在实际动手能力方面能够了解开源软件的管理方法,掌握资源获取和使用的方法,在实践中学会主流开源系统的原理、开发和部署的基本方法等。

传统的操作系统实践教学偏重局部的理论分析和简单模拟,而嵌入式系统实践教学则侧重应用导向,缺少原理分析。传统的操作系统实验教学为了强化原理性验证,大多通过局部模拟的方式,在虚拟环境中进行操作,缺少与实际使用的结合,使得很多算法和流程虽然经过实践仍然只能停留在概念狀态,缺少与实际使用系统的直接联系,导致学生兴趣降低。嵌入式系统的实验教学中,往往又将操作系统作为黑盒处理,进行简单定制或是直接使用。学生可以完成部署和验证,但仍然“不知其所以然”,没有收到应有的教学效果。

2 教学平台选型

在综合考虑学时、课程设置和教具使用等多种因素的基础上,操作系统和嵌入式系统原有实践课程体系保留并适度压缩,并通过扩展实验进行衔接。其中,操作系统的基础知识环节借鉴美国麻省理工大学使用的原型操作系统 jos 的课程实验,并对其进行相应的简化,让学生完成对操作系统基本原理的理解与验证。嵌入式系统的实验使用基于uCLinux 操作系统的嵌入式开发板进行车载控制系统的模拟与开发,这里引入的扩展实验使用目前在部分智能移动产品中使用的Tizen操作系统平台,并在对该平台的移植部署过程中加入对操作系统各环节和运行状态的分析,通过直观感受提升学生的兴趣。

实验中使用Tizen开源系统为目标软件平台。Tizen是由 LiMo Foundation 和 Linux Foundation 两个开源 Linux 联盟联合发布,由三星电子、英特尔等产业巨头共同开发的一套完全开源的软件环境[4],能够提供对手机、平板电脑、车载电脑、智能家电等多种设备的支持。软件体系中包含引层、操作系统、文件系统、应用程序、开发工具等多种资源,可以获得平台的全部源代码,并配套有相应的开发文档的开发者社区,也有众多大学参与其中,提供了丰富的教学资源。Tizen 中选用的操作系统内核是 Linux,在操作系统的课程讲授中已进行了针对性的原理分析和代码解读;Tizen 的应用程序框架基本使用 C/C++编程语言实现,与学生所掌握的前继编程基础更加契合,这些都降低了学习的难度。

以Odroid-U3为实践教学的目标硬件平台。Odroid-U3是由Hardkernel公司设计的基于Samsung Exynos4412处理器的开发板,具有4个Cortex-A9架构的处理器核心,1.7GHz主 频,2G内存,并通过线缆外接的方式集成了显示屏、触摸屏、WiFi、蓝牙等外设,能够模拟主流的平板电脑、智能电视等设备。通过开发板的拆装使用,使学生了解日常使用的智能设备的模块组成和工作原理,并通过实验课程完成对该设备的启动、定制和后续开发。因为开发板的形式和功能与学生日常使用的智能设备类似,可以提高学生的学习兴趣并形成系统的认知,改善了单纯使用模拟器的抽象教学方法。作为实践操作的目标平台,目前教学小组已成功完成Tizen到 Odroid-U3 开发板移植工作,并准备了完整的移植过程分析资料和教学案例。

3 实践教学设计

实验在整个操作系统教学过程中举足轻重,也是加深学生概念、原理理解,反映学生学习效果的重要环节[2]。实验教学内容的设计,作为课堂教学和作业的补充,主要用于完成理论知识和抽象概念与开发应用实战的对接。在实验设计中,主要体现系统性较强的启动、进程管理、资源管理、文件系统等知识环节,并通过完成Tizen在目标开发板上的移植进行实践。通过对其中关键部分代码的阅读、分析、补全、重构等任务,加深知识理解和综合运用, 同时理解并掌握开源软件的开发管理模式。经过对实验内容的反复调整,与学生沟通反馈, 现在实验内容已基本稳定。

3.1 环境搭建和版本管理工具的使用

熟悉开发环境并完成实验环境中的工具安装部署,掌握其使用方法。本部分课程主要学习对开源软件管理和发布方法的学习,对版本管理的认识和对版本管理工具的使用。培养学生懂得如何获取开源软件成为参考资源,掌握阅读开源代码的方法,学会代码版本管理的方法和原则,这是软件工程开发中至关重要的规范化思想。Tizen 开源项目有多个子项目,多个版本分支共同管理和流转,并按照特定的结点发布与错误修正,是非常有代表性的软件工程项目管理的案例,可以加深学生的实践体验。

3.2 引导过程分析

截取引导程序片段,通过汇编语言编程实现对硬件的简易控制;通过对简易引导程序的分析和修改,实现对Tizen内核的引导;分析bootloader代码,学习操作系统的引导过程,并加深对内存空间管理、处理器模式转换、MMU等关键技术的理解。本部分实验内容需要先进行简单的ARM硬件知识和ARM汇编指令的学习,同时简单扩展关于可信计算与Trustzone硬件可信模块技术,开阔学生视野。

3.3 Tizen系统编译、分区管理与内容部署

介绍Tizen系统的整体编译管理框架,了解产品描述配置文件、多设备兼容代码管理、源代码间的依赖关系、脚本处理方法等产品级代码管理方法。通过对Tizen中涉及的各类程序和资源文件的分配,设计并完成对Tizen的系统存储分区和内容部署,学习不同文件系统之间的差异和操作系统中对不同文件系统的初始化和兼容加载方法,学习各类进程对存储的使用方法。由于Tizen平台源代码编译耗时约 4 小时,考虑到课程时间问题,仅对Tizen的平台管理和软件工具进行原理讲解和分析,并将编译结果供学生下载用于完成部署实验。

3.4 系统初始化流程分析

分析操作系统内核加载完成后,第一个进程的创建过程,并实现对配置文件的分析和修改。通过代码补全的方式完成对系统启动和进程运行环境创建过程的原理分析。通过对Tizen的分析,了解对现代智能设备复杂的初始化过程,分析配置脚本之间的依赖关系,系统的灵活性、兼容性设计等,并理解操作系统中的守护进程类服务的启动过程。

3.5 遥控键盘项目开发

通过蓝牙建立实验开发板与学生自己的智能手机之间的数据传输通道,通过在手机上点击相应的按钮在开发板端产生虚拟键盘事件。这一项目的开发,需要综合运用内核驱动、网络传输、系统调用、系统服务管理等多个模块的系统知识。该实验项目同时还扩展了移动应用开发、网络编程、应用协议设计、服务管理、界面优化等多方面内容,耗时约 8 周交由学生课下完成,并向学生提供部分参考代码。

这一系列的实验设计涵盖了操作系统中的引导、初始化、进程、存储、IO、中断等多个复杂知识点,并通过真机实践的方式,以学生日常生活所熟悉的系统完成教学,提高了学生的学习积极性。

4 教学实践效果与改进计划

教学实践改革分两次推行。第一次进行了小范围试点尝试,2015年1—6月,从已完成操作系统课程学习的学生中选出11名志愿者参加,由教师进行小班授课和指导,每位学生独立承担实验。经过一个学期的学习,有9名同学成功完成了所有实验环节,编程能力和解决系统问题的能力有了明显提升。

第二次实践改革尝试在2015 年9—12月进行,面向正在学习操作系统课程的学生。由于实验设备有限并且课程压力较重,改为5人一组承担实验任务,全班共分为9组,在完成jos移植的同时完成Tizen移植任务。学生对此实验表现了极大的热情,投入大量的课余时间,整个开发过程持续到2016年2月寒假结束才完成,有4组学生完成了移植工作。由于学生的时间精力不足且实验平台的版本变迁,实驗效果受到了一定的影响。

针对发现的问题,教学组进行了针对性修改:重新修正了课程资料中的错误;建立了校内资源镜像;调整实验任务的发放时间点,与操作系统的理论讲授课程相对应,并在课上进行针对性的案例教学;建立针对实验任务的在线问答系统,供学生进行讨论交流,并按照时间节点投放问题的正确答案。以上修改和系统建设已经完成,在 2016年9月开始的实践教学中收到了更好的效果。

5 教学实践问题分析

(1)开源软件版本差异,随时更新引起的变化。活跃的开源软件随时发生变化,不活跃的开源软件能从开源社区中消失,这使得教学过程中容易出现授课内容与代码不对应或者无法获取资源等问题。为了保证教学的连续性,需要建立教学中的开源代码镜像,随时更新维护,并在学生实验过程中明确版本和开发状态,以确保实验顺利进行。

(2)产品特征影响教学案例典型性。在产品化的过程中存在一些技术整合和混杂,随着开发的代码和模型逐渐复杂,使得难以在商业化系统中找到非常贴切的教学用模型。同时编程方法和兼容性的变化也使代码变得复杂,分析讲解时过于复杂。这需要选择合适的版本和资料进行教学,并需要教学人员随时跟进开源软件的进展,如果能够讲解代码更迭的过程,收到的教学效果会更好。

6 结 语

通过在课程体系的实验教学中加入大型开源项目和开源平台的分析,帮助学生加深对操作系统类课程概念的理解,并掌握嵌入式系统的原理和开发方法。通过在学生熟悉的平板电脑开发平台上进行定制开发,帮助学生理解操作系统的作用和在产业环境中的应用,提高了学生的积极性,收到了良好的教学效果。

基金项目:教育部高等学校博士学科点专项科研基金资助课题(20130031120028);天津市应用基础与前沿技术研究计划(14JCQNJC00700, 16JCYBJC15200);计算机体系结构国家重点实验室开放课题(CARCH201504, CARCH201604)。本次教学活动得到了天津三星电子有限公司的资助。

第一作者简介:宫晓利,男,讲师,研究方向为嵌入式系统、移动云计算、物联网,gongxiaoli@nankai.edu.cn。

參考文献:

[1]陆亿红, 黄德才. 操作系统教学方法的若干思考[J]. 计算机教育, 2011(5): 80-82.

[2]王宇英, 谷建华, 周兴社, 等. 操作系统教学探索及其在嵌入式教学中的实践[J]. 计算机教育, 2011(11): 98-101.

[3]张伟娜. 以云计算为导向的计算机操作系统教学研究[J]. 软件, 2014(7): 85-88.

[4]Linux Foundation. TizenProject[EB/OL]. [2016-11-09]. https://www.tizen.org/blogs/tsg/2013/tizen-2.2.1-platform-release.

[5]冯红伟, 王鹏. 操作系统教学与实验设计研究[J]. 实验室研究与探索, 2007(12): 251-253.

[6]潘登, 陈启军. 面向卓越人才培养的嵌入式系统教学改革[J]. 计算机教育, 2013(13): 1-5.

[7]李文生, 邓春健, 吕燚. 案例驱动的嵌入式系统教学改革探索[J]. 计算机教育, 2011(2): 22-25.

(编辑:郭田珍)

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。