1、 1 操作系统课程设计操作系统课程设计 基于基于 NachOSNachOS 的课程设计的课程设计 操作系统课程设计 信息科学与工程学院 软件工程 1 目录目录 一、背景知识. 1 1、1 Nachos 的介绍 1 1、2 Nachos 的目录结构 . 2 1、3 线程基础知识 . 3 二、设计要求和目的 4 2、1 Nachos 的线程管理模块 4 2、2 Nachos 的线程线程调度算法分析 4 2、3 编程语言选择对比 5 2、4 开发环境配置 . 6 2、5 NachOS 系统和交叉编译器安装 . 6 2、5、1 NachOS 系统安装 6 2、5、2 交叉编译器环境的安装 . 7 三、
2、 设计思路和程序结构 . 8 3、1 线程的生成和状态转换 . 8 3、1、1 基于五状态模型 . 8 3、1、2 线程创建过程 . 8 3、2 线程调度机制 . 8 四、 关键代码分析 9 4、1 扩充线程管理 . 9 4、2 扩充线程调度机制 .10 4、3 扩充线程调度机制改进 12 4、3、1 信号量机制 .12 4、3、2 实现用户更改进程优先级 13 五、 测试 .13 5、1 测试 NachOS 环境和交叉编译器13 5、2 测试创建线程 14 5、3 测试线程优先级.15 六、 总结 .15 操作系统课程设计 信息科学与工程学院 软件工程 1 一、背景知识 1、1 Nachos
3、 的介绍的介绍 Nachos 的全称是“Not Another Completely Heuristic Operating System”,是一个可 修改和跟踪的操作系统教学软件。它给出了一个支持多线程和虚拟存储的操作系统骨架,可让 学生在较短的时间内对操作系统中的基本原理和核心算法有一个全面和完整的了解。 NachOS 提供了可重复的调试环境和模拟操作系统及底层硬件。 目的是为学习者展示真实的 操作系统运行时的环境,这个简单的操作系统软件可以让学习者在较短的时间内理解并能够用 自己的想法来完善它。 免费的开源开发包可通过网络下载,通常包括以下几部分: 1) NachOS 概述 2) 简单可
4、运行的操作系统代码 3) 模拟器个人电脑或工作站 4) 任务样本:任务说明和现代操作系统涉及的所有项,包括线程和并发,多道程序,系统调 用,虚拟内存管理,文件系统管理,网络协议,远程过程调用和分布式系统。 5) C+ 编程索引(NachOS 是 C+ 子集编程,简单易学。这个索引将对 C 语言程序员有所帮 助) Nachos操作系统本身只提供了一套框架,很多地方的实现都需要我们自己来完善,因此我们 可以通过修改其源代码,来丰富和增强 Nachos 操作系统的功能.更可以在完善这些功能的同时, 了解操作系统的内部运行机制. Nachos 模拟了 MIPS R2/3000 的指令集、主存、中断系统
5、、网络以及磁盘系统等操作系统 所必须的硬件系统。用软件模拟硬件的可靠性比真实硬件高得多,不会因为硬件故障而导致系 统出错, 便于调试。 虚拟机可以在运行时报告详尽的出错信息, 更重要的是采用虚拟机使 Nachos 的移植变得非常容易,在不同机器上移植 Nachos,只需对虚拟机部分作移植即可。 MIPS R2/3000 的指令集的优势:RISC 指令集,指令书目少,Nachos 模拟其中的 63 条。 编译器:GCC 可直接将 C/C+源程序编译成该指令集的目标代码,而不必重写编译器。 Nachos 是一个在宿主机上运行的进程,采用双 CPU,即一个宿主 CPU,一个虚拟机 CPU, 不确定性
6、是操作系统所必须具有的特征,而 Nachos 采用随机因子模拟真实操作系统的不确定 性,使系统运行更加真实。 Nachos 是一个可扩展的操作系统,可发挥自己的创造性进行扩展。 Nachos 限制:只有一级索引结构限制了系统中最大文件的大小。Nachos 可以用面向对象 的思想实现,面向对象的方法能清楚的描述操作系统的各个部分的接口,但是又没有全面的运 用到面向对象的性质,例如继承性、多态性,这使得代码更易读和理解。 Nachos 分五个功能模块:机器模拟、线程管理、文件系统管理、用户程序和虚拟存储以及 网络系统。 由于 Nachos 开发没有针对 windows 平台的移植,Nachos 需要在虚拟机上实现,所以需要 首先实现创建虚拟机,创建 linux 虚拟机来实现 nachos 代码的编译运行。 操作系统课程设计 信息科学与工程学院 软件工程 2 Nachos 运行时更像一个进程,但是它是完全按照操作系统思想开发的操作系统内核,具有 完整的操作系统结构。 Nachos 系统结构,作为一个