基于 Linux 的操作系统和网络课程实验室

作者:Richard Chapman

本文介绍了我们在安装和使用基于 Linux 操作系统的教学实验室的经验。该实验室是奥本大学计算机科学与工程系本科操作系统和网络教育的平台。我们有意使实验室的软件和硬件环境非常多样化,但 Linux 一直是实验室的主力。选择 Linux 的主要原因是其支持的硬件范围广泛、内核的复杂性以及源代码和文档的可用性。我们认为“动手”经验是计算机科学教育的重要组成部分,并且当前大多数课程在教授系统问题时过于依赖模拟。

系统编程教学

我们构建这个实验室的主要动机是为了在系统编程的实践经验方面不让我们的学生吃亏。我们最希望避免的缺点是

  • 过时的技术——一位优秀的系统编程讲师必须熟悉最先进的技术,更重要的是,实践现状。一位称职的讲师应该了解诸如内存速度和大小、磁盘驱动器性能、网络标准和 CPU 性能等信息。这些东西变化很快,而且我们常常束手无策,说“我将教授基本概念,但不会沾手实现细节。”当应用于系统编程时,这种想法从根本上是错误的,因为什么可行,什么不可行,从根本上取决于经济和技术,这使得某些解决方案可行,而另一些则不可行。

  • 过度依赖模拟——系统编程本质上是一项繁琐的工作。机器可能会崩溃;设备驱动程序可能会挂起系统甚至网络;硬件可能会因不良编程或错误接线而损坏。存在学生可能使用系统实验室破解其他系统的风险。编写不佳的网络软件可能会导致对网络其他合法用户的意外拒绝服务。

  • 所有这些使得在当今典型的大学计算环境中(由联网的 Windows PC 和商用 Unix 工作站组成)很难容纳专门的系统实验室。系统管理员不希望将他们网络的一部分置于风险之中,而这部分几乎总是处于损坏状态。

  • 因此,系统编程课程通常完全依赖于模拟器的使用,以便为学生提供一些系统编程经验。这种方法的问题在于,现实世界不是在模拟器上运行的。模拟增加了一个额外的复杂性层次,新手必须掌握,并且还使新手与以下事实隔绝:开发工具可能很原始或根本不存在,并且设计人员通常也负责构建设计工具。学生需要学习构建自己的工具,利用他们拥有的能力来实现他们在开发新系统时所需的目标。

  • 厌恶团队练习——我们在奥本大学计算机科学与工程系经常向我们的行业联系人询问:“我们应该教给学生什么来让他们为在贵公司工作做好准备?” 不可避免地,我们被告知重要的技能包括团队合作和大型系统经验。由于评估团队绩效以及管理基于团队的项目所涉及的人际关系问题存在固有的困难,因此大多数大学练习都倾向于基于小型甚至玩具系统的个人活动。也许根本的障碍可能是不愿意摆脱传统的讲座和考试教学方法。教授们有一个通常用来指代团队合作的术语——作弊。

  • 安全问题——一个不争的事实是,并非所有大学生都能像信任员工那样被信任。如上所述,必须设置一些保护措施,以防止黑客攻击干扰其他学生或大学工作人员的工作。此外,必须采取物理预防措施,防止公共使用的设备被盗。不幸的是,这些担忧似乎直接针对任何试图为学生提供“真实”系统编程经验的尝试,为此他们可能需要 root 权限,并且为此他们通常需要访问机器内部。

图 1。

对我们来说,一个专门用于系统编程课程的实验室,在通用硬件上运行 Linux,并在一定程度上与主校区网络隔离,似乎是解决大多数这些缺点的好方法。

实验室配置

该实验室于 1995 年夏末开始,配备了六台运行 Red Hat Linux 1.0 版本的 Pentium 90 机器。我们努力只购买支持 Linux 的硬件:IDE 磁盘驱动器和 CD-ROM、SCSI 磁带备份和文件服务器、ATI Mach 32 显卡、SVGA 显示器。硬件不兼容导致了一些延迟,因为我们试图证明 Linux 作为教学计算平台可以与商用 Unix 竞争。这些延迟似乎已经成为过去,这既归功于我们对 Linux 越来越熟悉,也归功于 Linux 开发社区的不懈努力。

最初,“运行 Unix 的 PC 实验室”被认为有点像跳舞的熊:人们印象深刻的不是它工作得很好,而是它竟然能工作。教师们惊讶地发现,我们可以在 2000 美元的盒子上运行与他们在 4000-8000 美元的 Unix 工作站上运行的工具基本相同的工具集。从文档准备到编译器编写等任务的基准测试和实践经验很快表明,这些机器上的性能与工作站上实现的性能相当。此外,所有操作系统源代码都可用,并且可以直接联系开发人员(通常通过电子邮件提供非常有用的建议)这一事实也是一个很大的优点。这些机器在 1995 年秋季经历了一个试运行期,在此期间,任何感兴趣的学生或教职员工都可以访问,但这些机器没有被用作任何正式课程工作的一部分。

图 2

扩展

在试运行期间,我们尝试将几乎所有能找到的外围设备连接到我们的 Linux 系统,并尝试在各种处理器上安装 Linux。

最初的六台机器配置用于在 1996 年春季学期支持系统管理课程,每个团队约有六名学生分配到一台机器。学生安装了 Linux,配置了网络,通过网络挂载了文件系统,安装了设备,开发了设备驱动程序,并进行了小的内核修改。越来越清楚的是,如果机器更多,实验室可以成为我们大多数(如果不是全部)系统课程的平台。

大约在同一时间,我们从一个大型工程学院实验室升级后报废的大量 386 和 486 机器中收集了一些机器,虽然我们发现了很多损坏的计算机,但我们还是能够构建大约 10 到 20 个工作系统,所有系统都能够运行 Linux。我们想要一个多样化的环境,硬件充足(即使不总是最先进的)。这些较旧的机器提供了一个平台,可以自由使用,而无需担心任何对黑客攻击感兴趣的学生造成的损坏。其中一个项目包括连接一个彩色 Connectix QuickCam,它将实验室的图片导出到万维网和一个文件服务器,从而以低成本提供安全性和便利性。

图 3

根据我们的初步结果,我们向国家科学基金会 (NSF) 教学实验室改进计划提交了一份提案,以扩展该实验室,并将其用作我们本科操作系统和网络教育的主要平台。NSF 同意提供 44,512 美元用于购买设备,前提是奥本大学提供相应的 44,512 美元。总计 89,024 美元用于购买以下物品

  • 十六台额外的基于英特尔的计算机

  • 快速以太网卡、电缆和集线器

  • 网络分析仪

  • 多媒体设备

  • 打印机

我们目前正在购买这些设备,并基于 Linux 内核开发操作系统和网络入门课程的课程。

对于操作系统入门课程,我们目前使用在加州大学伯克利分校开发的 Nachos 教学操作系统。我们从功能非常有限的内核开始,要求学生以各种方式扩展调度、文件系统、进程管理和网络。该操作系统在 MIPS R2/3000 处理器模拟器上运行,该模拟器在 SPARCstation 上的 Solaris 之上运行。我们希望通过使用 Linux 来删除大部分这些软件层。我们计划使用 Linux 专用教材(例如 Beck 等人编写的 Linux Kernel Internals)来补充我们传统教科书 Galvin 和 Silberschatz 编写的 Operating Systems Concepts

图 4

系统管理课程

目前正在使用该实验室教授 Unix 系统管理课程。在第二天上课时,学生们被要求在表格中选择一个位置,该表格的行反映了系统管理员的任务,列反映了实验室中可用的硬件平台。这些行被称为“兴趣小组”,列被称为“团队”。表格的兴趣小组是

  • 硬件组——负责硬件安装、维护、升级。

  • 软件组——负责系统软件的软件安装、维护和升级。

  • 网络组——专注于网络硬件和软件。

  • 备份和安全组——负责实验室安全的预防和监控。

  • 文档组——负责处理系统适当文档的维护。为团队选择文档组位置的人也被赋予了团队的领导角色。

上述 Pentium 处理器系统和两台较旧的 SPARC 处理器是提供给学生团队的硬件平台。此外,每个团队都可以选择在他们的机器上管理的操作系统,但需视许可证可用性而定。对于 Pentium 处理器,学生可以选择适用于 386 或 Linux 的 Solaris。Solaris 或 SPARC-Linux 可用于 Sun 系统。一个团队对将 Windows NT 集成到实验室中表示出浓厚的兴趣,并且由于有一个 NT 许可证可用,因此同意该团队可以支持 NT,只要可以在他们的系统上完成课堂作业即可。

图 5

课堂作业有三种形式:用户作业、团队作业和兴趣小组作业。由于每个团队都要在另一个团队的平台上提供帐户,因此每个团队都成为另一个团队的用户群。因此,个人用户作业变成了团队作业。例如,输入包含 Java applet 的 HTML 页面的用户作业变成了在他们的系统上安装 Web 服务器和 Java 编译器的团队作业。

兴趣小组作业是那些改变或重新配置实验室基本功能的作业。例如,在实验室中创建两个子网、为实验室机器创建备份系统、监控和保护实验室是兴趣小组共同完成分配任务的职责。

最后,为了解决分布式系统管理问题,所有团队都被分配了为实验室安装、提供和管理文件和打印服务的责任。Iomega Jaz 驱动器被配置为实验室中要作为 NFS 和打印服务器的机器的启动盘。该机器还配置了另外两个 SCSI 硬盘、一个磁带驱动器和一个打印机。每个团队都检出一个 Jaz 磁盘,并在其磁盘上构建了一个操作系统。唯一在使用可移动磁盘时遇到问题的团队是 Windows NT 团队,该团队发现(根据设计)Microsoft Windows 应用程序不能有驻留在可移动驱动器上的页面文件。

最初,为文件服务器提供了一个工作系统,但偶尔一个团队的 Jaz 磁盘会成为实验室的工作系统。如果发现问题,初始系统可以轻松恢复所需的服务,并且可以责成团队在不中断服务的情况下修复问题。通过分配诸如在 Java 磁盘系统上重建内核之类的问题,可以轻松实现最大程度的混乱。

安全问题

由于奥本大学工程网络服务组担心学生拥有连接到校园网络的机器的 root 访问权限,因此 Linux 机器被隔离在子网中,通过安全路由器连接到主要的工程学院网络,该路由器知道连接到每个端口的机器的地址,并且仅将数据包路由到指定的接收机器。我们通过锁定房间来物理保护机器,只要部门内没有带薪员工(不一定在同一房间),我们就将连接到警报箱的光纤电缆穿过所有机器外壳。我们很快发现这条电缆令人沮丧,因为它需要在每次需要更换硬件时都得到部门的单个系统管理员的协助(这在前几个月里每天发生几次)。尽管采取了这些预防措施,但我们还是在那一季度丢失了两台机器的主板和磁盘驱动器。我们未能意识到,与我们传统上用于学术研究和教学的工程工作站、小型计算机和并行机器相比,本实验室中使用的那种通用硬件对盗窃更具吸引力。此外,不断需要访问 PC 外壳内部的硬件意味着有更多机会断开警报。在系统实验室中,似乎存在着使实验室成为良好的开发环境与使其安全防范不诚实学生之间的根本矛盾——如果要完成任何工作,就不能简单地锁定每根电缆、螺母和螺栓。另一方面,如果没有充分安全性的证据,很难获得保险单。

我们当前的安全方法是多方面的

  • 光纤电缆穿过机器外壳

  • 每个计算机外壳上都有一把锁——钥匙在工作时间内随时可用

  • 一台数码相机,连接到一台 486 机器,用于拍摄照片,将照片发送到非常安全的房间中的文件服务器,并将最新的照片提供给实验室的网页,网址为 http://dn102af.cse.eng.auburn.edu/~root/labimage.html

  • 当部门工作人员不在时锁定实验室

任何单独的措施当然都可以被规避,当然,有针对性的努力可以击败任何安全系统。到目前为止,该系统似乎提供了一种可靠的防盗威慑,而又不会过多地干扰生产力。

经验教训

对于我们的许多学生来说,他们在我们实验室的经历证明是他们第一次在学术上处理计算机内部。因此,我们发现自己既在教授一种思维方式,也在教授与主题相关的特定技术。调试系统的常见任务,例如将问题隔离到硬件配置、BIOS 设置、操作系统内核或应用程序,对于初学者来说是新的领域。这个实验室让他们有机会在真实的环境中获得信心。

学生们对我们的方法提出的一个批评是,“现实世界主要运行 Microsoft Windows——为什么你们不教我们关于 Windows 的知识?” 虽然当人们关注市场份额时,他们的说法确实有效,并且任何声称自己全面发展的计算机科学家都必须适应市场的需求,但是,使用商业软件提供我们所提供的经验存在重大障碍。商业操作系统的两个最大障碍是缺乏源代码以及软件开发人员缺乏易于获得的技术支持。想要探索文件系统中几种不同页面替换策略之间性能差异的学生可以使用 Linux 和 PC 比使用我们所知的任何其他操作系统和计算机更容易做到这一点。

我们学到的另一个教训是,借助当今的大型磁盘驱动器以及可移动盒式硬盘驱动器的使用,许多操作系统有可能(或多或少)在同一台机器上共存,并且各种平台可以通过本地网络进行通信。我们认为这让我们的学生体验到了现实世界系统管理的复杂性(尽管除非我们让他们佩戴寻呼机并在所有时间寻呼他们,否则他们不会真正知道那是什么样的)。

参考文献

总的来说,我们发现这种基于 Linux 的方法比我们以前的方法有所改进,并计划继续使用它。我们收到了使用过该实验室的学生的非常积极的初步反馈,并期待听到它是否对我们的毕业生在“现实世界”中有所帮助。

A Linux-based Lab for Operating Systems and Network Courses
Richard Chapman 是奥本大学计算机科学与工程系的教员。他的其他兴趣包括硬件/软件协同设计、形式化方法和计算历史。自 Red Hat v1.0 发布以来,他就一直参与 Linux。他过去常常在业余时间修复 1970 年代早期的微型计算机——现在他希望自己有业余时间。他通过电子邮件 chapman@eng.auburn.edu 接收邮件。

A Linux-based Lab for Operating Systems and Network Courses
W.H. Carlisle 是奥本大学计算机科学与工程系的副教授。他从埃默里大学获得学士、硕士和博士学位。他的研究兴趣在于系统软件设计和测试的语言和环境。他是 ACM 和 IEEE 计算机协会的成员。
加载 Disqus 评论