APP下载

基于龙芯多路处理器平台的操作系统实验课程改革

2017-06-24景维鹏雷海军杨昆杨烜董本志

计算机教育 2017年6期
关键词:实验

景维鹏 雷海军 杨昆 杨烜 董本志

摘 要:操作系统是计算机科学与技术专业重要的主干课程,随着微处理器技术的不断发展,如何在操作系统层次发挥多核处理器的性能成为近年来的研究热点。文章从操作系统原理实验课程出发,以龙芯多路处理器平台为载体,提出分层次的操作系统实验改革方案,阐述如何通过不同层次、不同考核目标的实践教学方案,强化学生的动手能力和系统层软件开发能力,对提高学生对操作系统运行机理理解有重要意义。

关键词:操作系统原理; 多核; 龙芯多路处理器; 实验

0 引 言

操作系统是计算机科学与技术专业必修的一门基础课程,其培养目标是使学生掌握操作系统的基本原理和系统级开发能力,并通過对操作系统运行机理的认知全面提高学生的计算机素养,使学生建立起对操作系统的直观认识,为今后从事相关工作打下坚实基础[1]。

操作系统实验教学不但需要学生理解操作系统的概念、原理与方法,还需要提高学生的系统编程能力,只有这样才能让学生真正理解操作系统的精髓[2]。传统的操作系统课程实验主要基于不同内核的开源系统完成[3],例如哥伦比亚大学使用Linux系统进行实验,MIT使用ATHENA开源系统作为实验平台[4],清华大学使用XV6(UNIXV6的X86版)的扩展设计型方案开展操作系统实验[5]。这些实验内容在一定程度上满足了学生对操作系统运行机理的理解,提高了学生对操作系统运行机理的认识。

然而,随着多核技术的不断发展,基于多处理器的分布式计算环境已经成为云计算和大数据平台的主流[6]。传统的单核或单CPU上的操作系统实验不能满足学生在多处理器环境下系统内核运行机制的认知需要。为了更直观地加深学生对这两部分知识的理解,需建立计算机组成原理、汇编语言、C语言、操作系统等连贯的知识体系。文献[7]对操作系统内核的伙伴算法提出改进,采用了反转的思想,但其方法过于繁琐,不适于课堂实验,实验结果无法通过直观的方式展现。文献[8]使用Heartbeat作为基础的心跳检测模型,但该方法不能直观反映进程迁移状况,实验效果不明显。龙芯多路处理器的实验系统是由龙芯3A处理器构成的4单元对称多处理平台,通过HT总线互联为CC-NUMA架构,可以模拟多路处理器平台。利用该实验平台,可以设计符合现有主流多处理环境的操作系统实验教学方案。

1 基于龙芯处理器的实验教学改革

1.1 由浅入深,多层次掌握Linux操作系统

在实验方案中我们选择Linux 2.6.30版的稳定内核作为实验环境的操作系统内核。由于大部分学生对Linux系统接触不多,更缺乏在Linux系统上独立开发程序的能力,因此要采用从浅入深、层层深入的实验教学模式。

(1)第一层次,熟练掌握Linux操作系统命令和Shell编程,设计Linux基础实验,在掌握Linux基本工作方式和使用方式的前提下,使学生熟练完成Tomcat、NFS、LVS、DNS、FTP等常用服务搭建,配置Hadoop、Spark、Storm集群,熟练撰写Shell脚本,提高学生在Linux应用层的开发能力。

(2)第二层次,熟练掌握Linux进程、线程的创建方式以及通信方式,熟练使用如fork、exec、wait等API函数,分析其运行机理。另外,利用多路处理器平台构建分布式并行计算环境,设计KMP算法的OpenMP实现和计算π值的OpenMP这两个设计性实验。两个实验既考查了学生的数学逻辑能力,又提高了学生的并行编程能力,同时加深了学生对进程、线程、内存管理的理解,使学生掌握并行计算、高性能计算等系统层开发技术,更好地理解和掌握进程通信的基本方法。

(3)第三个层次,针对多路处理器环境,优化Linux系统的内核模块,对Linux进程迁移和共享内存进行优化。实验引导学生自主阅读Linux源代码,并根据相关需求进行源代码的优化,提高学生阅读代码的能力,激发学生的自主创新能力。

通过上述的实验过程,可以大大激发学生的学习兴趣,使学生对开源软件、系统层开发有深入的理解,另外采用分组合作模式,也增强了学生团队协作的能力。第三个实验通过复杂的内核模块设计,引导学生走入内核开发的神秘殿堂,全面提高学生在多路处理器环境下进行系统层软件开发的能力。

1.2 化难为易,从主观和客观两方面进行引导

(1)在学习的主动性方面,要潜移默化地消除学生的畏难情绪,在第一层次上下功夫。该部分以讲解为主,通过大量的网络服务配置、Shell脚本编写,结合操作系统的原理性知识,布置大量的实践练习,并有意识地从应用及工程实践角度,用案例的方式对实验内容加以多角度描述,从而使学生明确实验目的并激发其学习兴趣。

(2)在客观上化难为易,分层次引导。从第一层次的操作系统应用层提高开发能力,第二层加强系统层进程、内存管理及并行程序设计,第三层内核模块实验通过设计性的进程迁移和内存优化内容培养学生的创新能力、独立分析问题、解决问题能力。表1为3个层次培养过程及目标。

(3)针对不同层次,设计完全不同的讲授方式,具体见表2,有针对性地分析并提出解决方案,以帮助学生全面提高自身能力。

另外,在整个实验的过程中,培养学生独立分析问题、解决问题的能力,尤其是在第二、第三层次,引导学生通过分析,自行寻找解决方案并验证。

3 改进的实验教学实例

本文使用的实验环境为龙芯多路处理器系统,包括4个处理器,每个处理单元包括一颗龙芯3A 四核处理器、 DDR2内存以及RTL8110千兆以太网卡芯片,实验平台见图1。

1)基于Linux并行程序设计。

实验目的是使学生掌握Linux系统上的进程管理、进程通信以及并行编程的基本理论和方法,使用OpenMP技术实现KMP字符串匹配算法,从而达到理解多核编程和KMP算法并行实现的目的。KMP算法是一种改进的字符串匹配算法。实验中假设文本是一个长度为n的数组T [1…n],模式串是一个长度为m≤n的数组P[1…m],字符串匹配是指找出文本串T中与模式串P所有精确匹配的子串的起始位置,KMP算法的时间复杂度为O(strlen(T)+strlen(P))。

实验要求学生能够在Linux下使用GCC编译器或make工具完成KMP算法,查找模式串P[1…m]在文本串T [1…n]中的所有匹配位置,并在龙芯实验平台上编译、运行、调试此OpenMP并行程序,观察不同处理器核数对性能的影响。对长度为100 000 000的文本串、长度为100的模式串进行匹配,期望运行结果至少达到表3的数值。

可以直观看到,程序开启1~4线程时,运行时间随线程数的增加同比例减小。增大运算规模,降低SMP模式下各内核访问主存I/O资源的时间比例,采用4~16线程运行本程序,运行时间同样随线程数的增加同比例减小。

另外,可使用OpenMP编程技术实现π值的计算,从而达到理解多核编程和并行分解法计算π值的目的。

本实验计算π值利用割圆法计算,如公式(1),公式每计算一项可以得到1.4位的十进制精度。在循环叠加的运算过程中,开设THREAD_NUMS数量的线程,以线程数为间隔,每个线程计算对应分量,最后累加所有分量,得到π值,并使π值满足设定的精确度。实验的运行结果见表4。

通过龙芯多路处理器平台,可以看到随着处理器路数的增多,其处理能力逐渐变强,大致随着线程数量以2的幂次方增长,整体运行时间呈等比例减小,预期实验结果见表4。以上两个实验可提高学生在Linux环境利用并行编程方式解决实际问题的能力。

2)共享内存优化。

为了更好地提高学生在分布式环境下数据处理分析的能力,在系统层对操作系统内存管理进行优化是目前提高性能的主要因素。因此,在实验中应采用延迟策略或其他策略进行算法优化Buddy的实例,能培养学生使用相关的阅读代码工具(如Sourceinsight等)进行辅助阅读代码。同时应重点分析内存管理模块的代码,提升学生对系统的理解。运用学过的数据结构和算法基础对伙伴算法进行优化,提升了学生整体的数据结构和算法设计能力,从而真正使学生对操作系统的内存管理机制有深入的理解。

3)进程迁移优化。

本实验要求针对现有的故障检测技术进行分析,对已有应用层检测方法进行改进,使故障检测技术能够在单独的网络协议层运行,将原有的进程迁移算法做进一步的优化,利用Linux内核的dev_add_pack函数将心跳检测器接收函数注册到数据链路层,得到新的算法。改进算法可以让源节点直接将地址空间传送到目的节点,不经过文件服务器。在发送缺页时,直接向源节点请求调页,一旦整个地址空间传送到目的节点,将彻底消除对源节点的剩余依赖性;同时,引入一个virtual进程,负责进程迁移通信的处理。

本实验同样需要阅读Linux源代码,并在故障检测模块和进程迁移模块中进行相关算法的优化,主要提升学生用科学的思想进行问题分析,并根据相关文献进行算法的优化,最终提高学生综合解决问题的能力。

4)Linux内核的定制。

在源代码中针对以上两个模块进行优化后,需要重新编译优化后的内核,以此构建一个能够满足应用的新Linux内核。该部分首先需要学生能够掌握Linux内核启动的顺序,学生可根据自身能力选择是否进入源代码阅读Linux的启动流程;然后,通过相关指令生成配置文件,同時根据自己的需要对内核进行定制;最后通过编译,生成自己定制成功的操作系统。

在实验中,学生需要自主寻找内核编译过程的方式,理解操作系统运行原理,并通过前面学到的Linux命令执行编译,这样可以提高学生活学活用的能力,将理论知识与实际操作相结合,增强自主学习的能力。

5 结 语

该实验改革方案在东北林业大学计算机科学技术专业2013级、2014级进行了推广教学,实验内容得到不断地丰富和完善。学生通过3个层次的训练,在操作系统考试中成绩普遍有所提高。在今后的教学实践中我们还会进行一些优化和调整,如加强模拟实验专题与实际环境的相似度,利用龙芯多路处理器平台在设备管理和系统调用的实验方面进行一些新的尝试,以便更加全面地覆盖操作系统理论知识。

参考文献:

[1] 孙述和, 谢青松, 董付国. 操作系统实验教学研究与探索[J]. 计算机教育, 2010(1): 93-96.

[2] 邹恒明. 操作系统课程实验中的五重奏哲学[J]. 计算机教育, 2009(20): 109-112.

[3] 卢国潇. 无线自组织网络路由协议测试平台研究[D]. 成都: 电子科技大学, 2014.

[4] 阎巍, 严俊文. 美国知名大学本科“操作系统”课程设置情况的对比和分析[J]. 教学研究与教材建设, 2009(14): 20.

[5] 谢谦, 蔡坤, 沈夏炯. 一种面向应用的操作系统实验设置[J].计算机教育, 2012(20): 107-110.

[6] 张玉宏, 张玉, 程红霞. 操作系统课程设计的实践教学尝试[J].计算机教育, 2015(14): 19-20.

[7] 徐超群. 高可用集群系统关键技术的研究与实现[D]. 南京: 南京航空航天大学, 2014.

[8] Heekwon P, Jongmoo C, Donghee L. Inverse buddy for enhancing memory allocation/deallocation performance on multi-coreSystems[EB/OL]. [2017-01-19]. http://ieeexplore.ieee.org/document/6714431/?arnumber=6714431.

.

(编辑:孙怡铭)

猜你喜欢

实验
有趣的太空实验
磁悬浮实验
色彩实验
有趣的泡沫小实验
反泡泡小实验
声波实验
关于植物的小实验
高中生物学实验中常用的实验材料
化学实验
最酷的太空实验