对现代操作系统的思考

时间:2022-10-12 03:20:06

对现代操作系统的思考

文章编号:1672-5913(2011)21-0074-04 中图分类号:G642 文献标识码:A

基金项目:广东省大学生创新实验项目(1184510037);广东工业大学高教研究基金项目(2009C01)。

作者简介:张钢,男,讲师,研究方向为机器学习、数据挖掘、知识发现、高级计算机网络、操作系统。

摘 要:当前,高等院校的操作系统教学过程主要是基于传统的操作系统基本原理而进行的,与现代操作系统的发展不相适应,在教学过程中很难让学生理解当前操作系统发展的挑战和今后的发展方向。本文对现代操作系统的特性进行分析,阐述其在教学过程中的必要性和重要性,并介绍使用微软公司的Singularity项目进行操作系统教学的经验。实践表明,Singularity系统架构清晰简洁,很好地体现了现代操作系统的理念,适用于高等院校的操作系统教学。

关键词:现代操作系统;Singularity;教学实践

随着软件开发技术和计算机网络技术的发展,操作系统作为软件和应用的承载平台,承担着越来越重要的任务,也面临着越来越大的挑战。操作系统有将近40年的历史,虽然目前主流使用的操作系统功能强大,能够支持各种软件的运行,但远远达不到完美的程度,相反,随着计算机软件的日益复杂和网络化应用程度的提高,操作系统表现出越来越多的问题,主要表现在以下几个方面[1-2]。

1) 可靠性。现代操作系统十分脆弱,系统经过一段时间的使用之后速度变得越来越慢,使用一段时间之后就需要重装。对一些非专业用户而言,为了装一个软件而导致整个系统不能使用的情况很常见。

2) 安全性。病毒、木马等程序在操作系统的控制范围内得到运行,但它们却破坏了整个系统。

3) 系统配置问题。以Windows为例,DLL错误、注册表表项错误、Windows启动配置错误等问题很常见,操作系统本身不能把自身的配置保持在一个稳定且一致的状态。

4) 程序隔离问题。操作系统的内存管理中每个进程都有独立的运行空间,它们之间的通信只能通过特定的机制(管道、消息、共享数据区等)进行,但经常会出现一个程序的运行失败导致整个操作系统崩溃,或是某些特殊的程序(如木马程序)能跨越进程的数据空间非法访问其他进程的数据。

但与此同时,高等院校的操作系统教学仍然停留在以操作系统的五大管理功能(处理器管理、存储器管理、文件管理、设备管理、作业管理)为核心内容的教学上,主要进行操作系统理论和基本原理的教学。我们发现,现代操作系统的这些问题几乎不能从现有的教学内容中找到答案,在学习的过程中,学生一方面会认为这种理论学习与日常操作系统的使用脱节;另一方面学生可能会更加疑惑,这些常见问题是否是操作系统的基本原理本身有问题所导致的。

必须指出的是,传统的五大核心管理功能仍然是操作系统的核心,而所出现的问题实际上是源自过于复杂的软件环境和程序开发语言,操作系统为了满足应用的多样性,牺牲了很大部分的安全控制和系统整体性控制。

我们认为,在高等院校的操作系统教学中,在进行操作系统基本理论教学的同时,应该增加讲授复杂软件和网络环境下操作系统所面临困难的内容,以及现有的解决方案,这样做有以下两个方面的好处。

1) 加深学生对操作系统基本原理的理解,同时让理论与操作系统的日常使用问题衔接。必须指出,操作系统的基本理论是没有问题的,增加的讲授内容能够加深学生对基本理论的理解并能引起有深度的思考。

2) 高等院校同时也培养学生的科研能力,通过增加现代操作系统内容的讲授,让学生明白在当前复杂的软件和网络环境中操作系统所面临的困难以及可能的解决办法,可以培养学生研究操作系统的兴趣,并打下一定的理论基础。

因此,我们在操作系统的教学中引入了一个现代操作系统研究项目,通过分析该项目,向学生讲授现代操作系统对于所面临的困难有怎样的解决思路、当前已经做了哪些工作,以及将来的发展方向。同时,在该操作系统研究项目上利用其源代码,把整个操作系统的实验迁移到其框架中进行。

1 Singularity项目

Singularity项目[3]是微软公司的一个操作系统研究项目,旨在使用高级程序设计语言创建一个有良好健壮性与可靠性的操作系统。Singularity是一个研究性质的项目,只有非常简洁的核心代码适合进行教学和研究。Singularity最主要的优点在于程序并不直接编译成机器代码运行,而是先映射到操作系统的一个抽象指令集上,再在操作系统的控制下运行。图1展示了Singularity系统的结构。

图1中的MSIL转换引擎是一个翻译器,把上层的用户程序、文件系统、驱动程序等应用相关的代码段转换为操作系统的抽象指令集,这种指令抽象层从底层限制了非法操作的执行。系统的运行核心以MSIL抽象指令集为基础编写,这从根本上解决了由于操作系统自身程序的运行而导致系统错误的这一矛盾[3]。

在进程通信方面,Singularity进行了限制,不直接允许基于共享内存的进程间信息交换,只能进行基于消息的信息交换,消息的传送通过通道(channel)进行,防止了跨进程的非法数据访问,这是很多系统安全问题的源头。

在进程管理方面,Singularity不允许在一个正在执行的进程中加载或生成额外的可运行代码,恶意程序无法以传统的方式执行。更为重要的是,系统尝试使用全局的抽象指令集映射,为系统提供一个整体且一致的配置方案,而不会产生配置的前后矛盾[4]。

内存管理方面,当前普遍采用的是段页式管理,即程序在内存中以逻辑上有意义的段进行组织,段内分页使内存的空间可以充分利用不会产生碎片[5]。Singularity采用了类似于Java语言的内存管理机制,即在堆上为进程和线程分配空间,并提供一个核心级的垃圾回收器进程,用于回收不再使用的空间。基于Java内存管理的可靠性与易用性,我们认为这种机制是有希望在操作系统的内存管理方面取得成功的。

Singularity系统结构清晰,而且基本不含有为了适应不同的软件配置而编写的代码,在教学中学生能够着眼于其核心部分,并能自行编写相应的管理程序,通过扩展接口能为操作系统增加功能特性。

Singularity是使用微软的Sing#语言编写的,它是C#语言的一种扩展,支持对程序行为的定义[6]。它具有对面向对象程序设计的完整支持,并能使用XML进行配置,与主流的程序开发技术相一致,有良好的文档支持,能在课堂上进行代码级的讲解,容易设计出课程相关的实验。

2 教学实践

我们在本校自动化学院网络工程系的操作系统课程内容中进行现代操作系统相关内容的教学实践,我们在2008和2009级网络信息专业的操作系统教学中进行尝试,主要包括教学内容和实验两方面的内容。

2.1 教学内容上的改进

课程原先设置了操作系统结构、进程管理、处理机调度、存储管理、设备管理、文件系统、操作系统产品介绍和安全管理这七个部分的内容,我们在各部分增加了Singularity相关的理论内容讲授。

在操作系统结构部分,我们在分层操作系统的结构设计基础上,增加了应用程序抽象层的介绍,这是Singularity中的一个重要特性,通过MSIL把应用程序的代码映射为一个统一的抽象指令集[7],操作系统本身的执行机制保证了该指令集的执行是绝对安全的,并通过例子讲解当前操作系统的不安全性和不可靠性的原因。增加了MSIL的映射机制的介绍,通过Singularity的实现,从代码级向学生展示如何构造一个可扩展的抽象指令集,并与Java语言的虚拟机机制进行比较。

在进程管理部分,加强了进程数据空间独立性的介绍,从数据通信的角度分析进程间通信的手段,分析哪些通信方式存在安全的隐患。介绍Singularity的进程管理机制,详细说明其禁止共享内存的方式进行消息通信的原因。

在处理机调度方面,引入了多处理机调度的介绍。随着CPU的多核化,多处理机调度将成为操作系统的一个重要内容。在介绍传统的处理机调度算法的同时,用流程图结合程序讲授这些算法的多处理机版本实现,并以Sing#语言[6]在Singularity中的程序实现作为课堂例子。

存储管理部分,在段式、页式和段页式管理的基础上,增加堆中分配空间和内存垃圾回收器的介绍,通过代码例子讲解在Singularity中如何实现内存空间的动态回收,并与Java的垃圾回收器进行对比。

在文件系统部分,分析Singularity的文件系统的代码实现,其实质是一个优化的B+树实现,并让学生懂得如何根据快速更新和查找的原理,创建适合自己使用的文件系统。

在操作系统产品介绍部分,着重介绍Windows系统以及它的配置管理,分析注册表和DLL中的配置错误出现的根本原因,进而介绍在Singularity中的系统配置的实现方案,主要让学生理解何为操作系统配置的一致性,要达到这种一致性需要怎样做。通过分析Singularity的代码抽象层和全局配置模块帮助学生解决这些问题。

在安全管理部分,着眼于操作系统自身的安全,讲授操作系统执行自身正常的操作应该能够保持稳定性这种理念,让学生理解安全性问题的根源在于软件环境的复杂性和当前操作系统实现对于执行效率的妥协,进一步分析MSIL抽象映射层对系统安全性的重要作用。

增加程序运行的内在机理部分类容的讲授,分析Windows系统的程序运行方式,解释动态链接库的工作原理,并分析由于程序的动态加载组件或程序段所带来的风险,讲解Singularity系统在程序运行控制方面的机制。

2.2 实验内容的改进

本系的操作系统课程有相应的实验内容,由于理论教学中增加了Singularity的内容,同时考虑到Singularity有良好的编程界面和技术文档支持,我们尝试把整个操作系统的实验迁移动Singularity系统上进行。我们设置如下的实验。

1) Singularity基础实验。

让学生熟悉Singularity项目的基本结构,安装系统开发包和查阅技术文档的方法。

2) 进程间基于消息的通信实验。

实现channel方式的进程间通信实验,让学生掌握Singularity的进程间数据交换机制。

3) 进程数据空间的独立性验证实验。

设计特定的具有交叉数据空间访问行为的实验程序,以验证操作系统对于进程数据空间的独立性有完整的保护能力。

4) 处理机调度算法实验。

在Singularity SDK框架中实现经典的处理机调度算法,并编写基于泊松分布的概率程序进行验证。

5) 简单文件系统实验。

参照DOS系统的FAT文件系统,利用SDK所提供的功能实现一个简单的基于哈希表的文件系统。

6) MSIL抽象层实验。

通过SDK的接口方法展示把一个第三方编写的程序映射到操作系统抽象指令集的完整过程。

7) 操作系统命名空间实验.

在Singularity系统的开发框架中,我们在实验学时不变的情况下,大大扩充了操作系统的实验内容,原因在于Singularity提供了一个功能完善的SDK[8],学生在该框架中可以专注于只与操作系统核心相关的代码的编写,且这些代码都是以C#和XML为基础的,适合于实验教学。在以往的实验中,均使用C++语言进行实验,学生需要花费较多的精力编写一些与核心不相关的框架性代码,限制了实验的规模和深度。

3 结语

操作系统课程是高等院校计算机相关专业的重要教学内容,但传统的基于五大管理的操作系统理论教学已不能很好地适应当前操作系统的发展趋势,更难以回答复杂软件与网络环境下所出现的一系列操作系统应用上的问题。教学实践表明,引入Singularity到操作系统教学和实验中,提高了学生的学习兴趣,有一定的教学效果。

参考文献:

[1] Martin Abadi. Access control in a world of software diversity[C]//Proceedings of the 10th conference on Hot Topics in Operating Systems, 2005, Volume 10. Santa Fe, NM, USENIX Association: 22-25.

[2] Hunt G C, J R Larus. Broad new OS research: challenges and opportunities[C]//Proceedings of the 10th conference on Hot Topics in Operating Systems , 2005, Volume 10. Santa Fe, NM, USENIX Association: 15-19.

[3] Microsoft. Singularity Project[EB/OL]. [2011-09-12]. /os/singularity.

[4] Swift M M, B N Bershad. Improving the reliability of commodity operating systems[J]. ACM Trans. Comput. Syst, 2005, 23(1): 77-110.

[5] Chen H, N Li. Towards analyzing complex operating system access control configurations[C]//Proceeding of the 15th ACM symposium on Access control models and technologies, 2010, Pittsburgh, Pennsylvania, USA, ACM: 13-22.

[6] Barnett M, Leino, KRM,et al. The Spec# programming system: An overview[C]. In CASSIS 2004. LNCS, vol. 3362, 49C69.

[7] Chen H, Li N, Mao Z. Analyzing and Comparing the Protection Quality of Security Enhanced Operating Systems[C]. In NDSS, 2009: 11-16.

[8] Microsoft. Singularity SDK[EB/OL]. [2011-10-16]. /.

Thinking of Modern Operating System and Teaching Practice

ZHANG Gang , HE Xiaomin, ZHONG Ling , LIU Hongtao

(Faculty of Automation, Guangdong University of Technology, Guangzhou 510006,China)

Abstract: With the rapid development of software development and computer network technology, strict requirement for operating system is brought out on dependability, security, scalability, etc. However, the operating system course in university is still around traditional operating theoretical model and principles which is not suitable for development of modern operating system any more. In this teaching framework, students are not even able to understand the challenge and future of current operating system technology. In this paper, we first analyze features of modern operating system, and then present the necessity and importance of plugging such features in the teaching procedure. We adopt Singularity, an operating system research project from Microsoft in both teaching and experiments. An empirical study shows that Singularity is of simple but clear system architecture, and well achieves core concepts of modern operating system, that is suitable for operating system teaching in university.

Key words: modern operating system; Singularity; teaching practice

上一篇:基于能力培养的民办高校软件工程专业课程体系... 下一篇:教育转型形势下计算机网络课程教学改革实践