2011 操作系统课程设计

上传人:luoxia****01802 文档编号:62421581 上传时间:2018-12-20 格式:PPT 页数:26 大小:192.50KB
返回 下载 相关 举报
2011 操作系统课程设计_第1页
第1页 / 共26页
2011 操作系统课程设计_第2页
第2页 / 共26页
2011 操作系统课程设计_第3页
第3页 / 共26页
2011 操作系统课程设计_第4页
第4页 / 共26页
2011 操作系统课程设计_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《2011 操作系统课程设计》由会员分享,可在线阅读,更多相关《2011 操作系统课程设计(26页珍藏版)》请在金锄头文库上搜索。

1、教学操作系统 教学操作系统有两大类,一类是针对RISC结构MIPS处理器的,另外一类是针对CISC结构的the Intel IA-32 (or x86)通用处理器的。 这样分类是因为:处理器是操作系统运行的硬件环境中最重要的部分。,第1章 GeekOS教学操作系统概论,一、针对RISC结构MIPS处理器的教学操作系统,Nachos(Not Another Completely Heuristic Operating System)。是建立在软件模拟的虚拟机之上的教学操作系统,采用MIPS R2/3000的指令集,能模拟主存、中断、网络以及磁盘系统等所必须的硬件系统,美国加州大学伯克利分校多次采

2、用该操作系统作为课程设计平台。 OS/161是运行在与操作系统无关的system/161模拟器上的,操作系统代码是MIPS对应的机器代码。 无论是Nachos还是OS/161,若学生使用Windows或Linux 开发环境的话,都需要使用交叉编译器才能把代码编译成MIPS相应的机器代码。,二、针对针对CISC结构的Intel IA-32 (or x86)通用处理器的教学操作系统,MINIX:是Andrew S. Tanenbaum(AST)于1987年开发的,目前主要有1.5 版和2.0 版两个版本在使用。MINIX 系统是免费的,可以从许多FTP 上下载,MINIX是一个包括了虚拟内存管理、

3、文件系统、设备驱动程序、网络和用户态程序等的比较完整的操作系统,由两万多行代码组成。 对于教学有点过于庞大和复杂,而且由于它已经实现了操作系统的全部基本功能,没有留下合适的练习让学生自己完成,GeekOS:是一个基于X86架构的PC机上运行的微操作系统内核,由美国马理兰大学的教师开发,是一个用C语言开发的操作系统, GeekOS主要用于操作系统课程设计,目的是使学生能够实际动手参与到一个操作系统的开发工作中。学生可以在Linux或Unix环境下对其进行功能扩充,且其针对进程、文件系统、存储管理等操作系统核心内容分别设计了7个难度逐渐增加的项目供学生选择 。 出于教学目的,这个系统内核设计简单,

4、却又兼备实用性,它可以运行在真正的X86 PC硬件平台。,三、GeekOS系统源代码结构,GeekOS操作系统源文件geekos-0.3.0.zip可以从http:/下载。,1.GeekOS系统源代码结构,2、GeekOS的设计项目,项目0:项目0要求实现一个内核进程,功能是实现从键盘接收一个按键,并在屏幕上显示。主要是让学生熟悉GeekOS的编译、运行过程,了解计算机系统的启动原理。 项目1:项目要求学生熟悉ELF文件格式,并编写代码对ELF文件进行分析,并将分析传送给加载器。主要让学生熟悉可执行链接文件(ELF文件)的结构,并学会加载和运行可执行文件。,项目2:要求学生实现对用户态进程的支

5、持。在项目2实现之前,GeekOS一直使用内核进程。对用户态进程执行的支持包括用户态进程结构的初始化、用户进程空间的初始化、用户进程切换和用户程序导入等。该项目中,存储分配依然使用分段分配方式。实现项目2后,用户就可以使用GeekOS提供的命令行解释器Shell运行一些命令来执行PFAT文件系统内的用户测试程序。 项目3:要求学生改进GeekOS的调度程序,实现基于4级反馈队列的调度算法(初始GeekOS系统仅提供了FIFO进程调度算法),并实现信号量,支持进程间通信。,GeekOS的设计项目,项目4:要求学生实现分页虚存管理,以替代在项目1和项目2中采用的分段存储管理。实现分页虚存管理后。系

6、统在内存不够的情况下就可以将部分页调到硬盘,以释放内存实现虚拟存储技术。 项目5:要求实现GOSFS文件系统。由于GeekOS使用了虚拟文件系统,可以加载不同的文件系统,而系统默认加载的是PFAT只读文件系统。在这个项目中,需要实现一个多极目录的、可读写的文件系统。 项目6:要求为文件系统增加访问控制列表,并使用匿名半双工管道实现进程间通信。,GeekOS的设计项目,2.1 GeekOS系统开发调试环境 在Windows下使用Cygwin模拟Linux的开发环境; 在PC机上直接安装Linux进行开发调试; 在虚拟机上安装Linux进行开发调试 ; 建议使用后两种环境进行项目开发,会减少许多

7、不必要的困难, Linux最好使用red hat 9.0版本。,第2章 课程设计环境,Bochs/GeekOS,GeekOS编译环境,GeekOS运行环境,2.2 GeekOS开发的工具软件,GNU gcc编译器:用来编译C语言程序代码 (Linux系统自动安装) NASM汇编器:用来编译汇编语言程序代码 (Linux系统不会自动安装,在安装时需要选取) GNU gdb调试器:用来查找程序代码错误 (Linux系统自动安装) Bochs PC模拟器:用来运行GeekOS系统 (在Linux系统或windows系统中需要下载软件独立安装) Source Insight : 程序编辑器和代码浏览器

8、 (在windows系统中需要下载软件独立安装),GeekOS运行于Windows(或Linux)下的Bochs PC模拟器,Bochs 是用 C+ 开发的可移植的 IA-32 (x86) PC 模拟器,它包括对 Intel x86 CPU 、通用 I/O 设备和可定制的 BIOS 的模拟,几乎可以运行在所有流行的平台上。目前, Bochs 可以模拟 386, 486, Pentium Pro 或者 AMD64 CPU 。Bochs 的模拟环境中也可以运行大部分的操作系统,包括 Linux, Windows 95, DOS, Windows NT 4, FreeBSD, MINIX 等。 Bo

9、chs 由 Kevin Lawton 创建,此项目当前仍由他维护。,2.3 Bochs PC 模拟器,(1)Bochs安装和使用,bochs有Linux和Windows等不同环境的软件安装包,用户根据操作系统平台下载相应的版本。如果用户选择在Cygwin中开发调试则选择Windows版本下载。在Windows系统下安装Bochs非常简单,直接运行安装软件,按提示操作就可完成。在Linux系统中需先解压软件包,然后再配置编译生成系统文件。 推荐使用的Bochs 版本是2.0以上,版本2.1.1可以很好的运行GeekOS。,为了模拟一台计算机执行一个操作系统软件,bochs需要几个文件来代替PC机

10、硬件的不同部分: bochs模拟器程序本身 BIOS-bochs-lastest模拟bochs硬件的BIOS。 VGABIOS-lgpl-lastest模拟bochs显示系统的BIOS。 bochsrc.txt描述模拟器硬件配置的配置文件。 disk image(.img)包含了一个模拟器能引导的操作系统镜像,(2) Bochs系统文件,运行GeekOS的Bochs配置文件举例,vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest romimage: file=$BXSHARE/BIOS-bochs-latest, address=0xf0000 meg

11、s: 8 boot: c floppya: 1_44=fd.img, status=inserted #floppya: 1_44=fd_aug.img, status=inserted log: ./bochs.out keyboard_serial_delay: 200 floppy_command_delay: 500 vga_update_interval: 300000 ips: 1000000 mouse: enabled=0 private_colormap: enabled=0 i440fxsupport: enabled=0,一、make工具简介 无论是在Linux还是在UN

12、IX环境中,make都是一个非常重要的系统开发工具。利用make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。 make能够按照规则自动完成编译工作,并且可以只对程序员在上次编译后修改过的文件进行编译,减少重复编译的工作量。 它就是字符操作方式下的项目管理工具。,第3章 make工具,makefile文件内容,Make文件包含五方面的内容,即具体规则、隐含规则、宏定义、指令和注释。下面分别对它们进行说明: 具体规则:用于阐述什么时间或怎样重新生成称为规则目标的一

13、个或多个文件。 隐含规则:用于阐述什么时间或怎样重新生成同一个文件名的一系列文件。 宏宏定义:为一个宏赋一个固定的字符串值,从而在以后的文件中能够用该宏代替这个字符串。 指令:make根据makefile文件执行一定任务的命令。 (1)读其它makefile文件(如果包括)。 (2)根据变量的值判定是否使用或忽略makefile文件的部分内容。 (3)定义多行变量,即定义变量值可以包含多行字符的变量。 以“”开始的行是注释行,注释行在处理时将被make命令忽略,,makefile规则,targets . : dependencys . command . . targets是一个目标文件或一组

14、目标文件,可以是中间目标文件,也可以是执行文件。还可以是一个标签(Label),对于标签这种特性,在下面会有解释。 dependencys就是用来说明要生成对应targets所需要的文件或是目标,即由哪些源文件来生成targets。 command就是make需要执行的命令(任意的Shell命令),每一个命令必须以Tab键开始,不能用空格符号替代。它是用来说明如何生成targets。 每一次执行make命令时,如果dependencys中有一个以上的文件比target文件要新的话,command所定义的命令就会被系统执行,否则表示目标文件原来已经生成,并且是最新的,command命令不再执行。

15、,Makefile文件示例,make工作原理,在默认的方式下,只要输入make命令就可以工作。具体的处理过程如下: (1)make会在当前目录下找文件名为“Makefile”或“makefile”的文件。 (2)如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,它会找到“edit”这个文件,并把这个文件作为最终的目标文件。 (3)如果edit文件不存在,或是edit所依赖的后面的.o文件的修改时间要比edit这个文件新,那么,就会执行后面所定义的命令来生成edit这个文件。 (4)如果edit所依赖的.o文件也不存在,那么make会在当前文件中找目标为.o文件的依赖性,如

16、果找到则再根据那一个规则生成.o文件(这有点像一个堆栈的过程)。 (5)如果指定的C文件和H文件是存在的, make会生成.o文件,然后再用.o文件生成make的最终任务,也就是链接生成执行文件edit。,在GeekOS中, makefile文件具体功能如下: 指定GeekOS如何被编译,哪些源文件被编译,哪些用户程序被编译等等。通常不同项目的编译仅仅需要修改这一部分。 定义了编译GeekOS要用到的工具程序。 指定规则:描述系统如何编译源程序。 指定系统编译生成的指定文件 。,GeekOS的makefile文件功能,GeekOS项目开发流程,开始一个GeekOS项目,第一步是添加相应的代码 。 在Linux下利用make命令编译系统,生成系统镜像文件。 $ cd /project0/build $ make depend $ make 编写每个项目相应的Bochs的配置文件。 运行Bochs模拟器,执行GeekOS内核。 $ cd /bochs $ bochs 运行后,屏幕上会有一些提示。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号