没有合适的资源?快使用搜索试试~ 我知道了~
操作系统课程设计---GeekOS操作系统的研究与实现.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 75 浏览量
2022-01-20
21:51:12
上传
评论
收藏 571KB PDF 举报
温馨提示
试读
45页
操作系统课程设计---GeekOS操作系统的研究与实现.pdf
资源推荐
资源详情
资源评论
h
h
操作系统课程设计说明书
题 目: GeekOS操作系统的研究与实现
系 别: 计算机科学与工程学院
h
h
目录
1 GeekOS 概述 ----------------------------------------------------------------------------------------------------- 3
1.1GeekOS 系统源代码结构 --------------------------------------------------------------------------- 3
2 实验环境 --------------------------------------------------------------------------------------------------------- 5
3 项目实现 --------------------------------------------------------------------------------------------------------- 5
3.1 project0 ------------------------------------------------------------------------------------------------- 5
3.11 项目设计目的 ----------------------------------------------------------------------------------- 5
3.12 项目设计要求 ----------------------------------------------------------------------------------- 5
3.13 项目设计原理 ----------------------------------------------------------------------------------- 5
3.13 项目具体实现 ----------------------------------------------------------------------------------- 6
3.14 调试运行结果 ----------------------------------------------------------------------------------- 7
3.2 project1 ------------------------------------------------------------------------------------------------- 8
3.21 项目设计目的 ----------------------------------------------------------------------------------- 8
3.22 项目设计要求 ----------------------------------------------------------------------------------- 8
3.23 项目设计原理 ----------------------------------------------------------------------------------- 9
3.23 项目具体实现 ---------------------------------------------------------------------------------- 10
3.24 调试运行结果 ---------------------------------------------------------------------------------- 11
3.3 project2 ------------------------------------------------------------------------------------------------ 12
3.31 项目设计目的 ---------------------------------------------------------------------------------- 12
3.32 项目设计要求 ---------------------------------------------------------------------------------- 12
3.33 项目设计原理 ---------------------------------------------------------------------------------- 13
3.23 项目具体实现 ---------------------------------------------------------------------------------- 15
3.24 调试运行结果 ---------------------------------------------------------------------------------- 25
4 遇到问题及解决方法 ---------------------------------------------------------------------------------------- 26
5 学习总结 -------------------------------------------------------------------------------------------------------- 27
参考文献 ----------------------------------------------------------------------------------------------------------- 27
h
h
1 GeekOS概述
GeekOS是一个基于 X86 架构的 PC上运行的微操作系统内核。 由美国马理兰大学的教师
开发, 是一个用 C语言开发的操作系统。 主要用于操作系统课程设计, 目的是使学生能够实
际动手参与到一个操作系统的开发工作中。 出于教学目的, 这个系统内核设计简单, 却又兼
备实用性,它可以运行在真正的 X86 PC硬件平台。作为一个课程设计平台, GeekOS由一个
基本的操作系统内核作为基础, 提供了操作系统与硬件之间的所有必备接口, 实现了系统引
导、实模式到保护模式的转换、中断调用及异常处理、基于段式的内存管理, FIFO 进程调
度算法以及内核进程、基本的输入输出(键盘作为输入设备、显示器作为输出设备) ,以及
一个用于存放用户程序的只读文件系统 PFAT。学生可以在 Linux 或 Unix 环境下对其进行功
能扩充, 且其针对进程、 文件系统、 存储管理等操作系统核心内容分别设计了 7 个难度逐渐
增加的项目供学生选择
1.1GeekOS系统源代码结构
GeekOS操作系统源文件 geekos-0.3.0.zip 可以从 http://geekos.sourceforge.net 下
载。解压后的 GeekOS目录结构如图 1-3 所示 :
在 doc 目录下文件 hacking.pdf 和 index.htm 是 GeekOS系统的参考文档。 Scripts 目
录下有 startProject 和 removeEmptyConflicts 两个脚本文件。 GeekOS系统的源文件在 src
目录下,分为 7 个项目: Project0, Project1, Project2, Project3, Project4, Project5,
Project6 。每个项目的文件结构都类似,以 Project0 为例,结构如图 1-4 所示:
h
h
在 build 文件夹中,包含系统编译后的可执行文件的文件、软盘镜像或是硬盘镜像、
makefile 项目管理文件。在 inculde 文件夹中有 geekOS和 libc 两个子目录,在 geekOS子
目录中有 kthread.h,keyboard.h 等头文件,在 libc 中包含有 geekOS支持的 C 语言标准函
数 string.H 头文件。在 scripts 文件夹是项目编译时要用到的一些脚本文件。 Src 文件夹
中存放系统内核源代码, 用户修改 geekOS系统时要修改的源代码如 main.c 都位于这个目录
中。在 User 子目录中一般是用来存放用户的测试文件,在 tools 子目录中的代码是用来建
立 PFAT测试文件系统的。
2 实验环境
(1)硬件环境: 本次课设是在虚拟机上安装 Linux 进行开发调试, 具体安装使用方法如下:
<1>、安装 linux 虚拟机 本次课设的虚拟机是运行在 oracle VM Virtualbox 上的,下
载 Linux 镜像文件后,即可按提示即可安装。
<2>、GeekOS:是一个基于 X86 架构的 PC机上运行的微操作系统内核,由美国 马理
兰大学的教师开发,是一个用 C语言开发的操作系统, GeekOS 主要 用于操作系统课
程设计,目的是使学生能够实际动手参与到一个操作系统的 开发工作中。 GeekOS 的
使用:打开 linux 虚拟机,直接解压 GeekOS压缩包就可使用, 无需安装。
<3> 、 Bochs 安装和使用:在 Linux 系统中需先解压软件包,然后再配置编译生成系
统文件。
(2)软件环境:标准 C 语言
h
h
3 项目实现
3.1 project0
3.11 项目设计目的
熟悉 GeekOS的项目编译、调试和运行环境,掌握 GeekOS运行工作过程。
3.12 项目设计要求
( 1)搭建 GeekOS的编译和调试平台,掌握 GeekOS的内核进程工作原理。
( 2)熟悉键盘操作函数,编程实现一个内核进程。该进程的功能是:接受键盘输入的字
符并显示到屏幕上,当输入 Ctrl+D 时,结束进程的运行。
3.13 项目设计原理
项目要求从键盘输入,因此要用到键盘处理函数 。 GeekOS 的键盘处理函数定义在
keyboard.h 与 keyboard.c 文件中。键盘的初始化是在 Main 函数中调用 Init_Keyboard 进
行的, Init_Keyboard 主要功能是设置初始状态下存放键盘扫描码的缓冲区,并为键盘中断
设置处理函数。 而键盘中断处理过程是: 首先从相应的 I/O 端口读取键盘扫描码, 根据是否
按下 Shift 键,分别在键值表中寻找扫描码对应的按键值, 经过处理后将键值放入键盘缓冲
区,最后通知系统重新调度进程。 若用户进程需要从键盘输入信息, 可调用 Wait_For_Key()
函数 , 进程调用该函数后,会阻塞进入按键操作的等待队列,直到按键操作结束,进程才会
被唤醒。 Start_Kernel_Thread 函数主要功能就是建立一个内核线程。
本项目主要要求设计一个函数对键盘的中断进行响应。这主要通过使用 Geekos 提供的
键盘响应函数 Wait_For_Key() 进行键盘中断的响应及返回键值。该函数首先检查键盘缓冲
区是否有按键, 如果有, 就读取一个键码,如果此时键盘缓冲区中没有按键,就将线程放入
键盘事件等待队列。于是可分两步完成 :
1 编写函数,函数功能是: 接受键盘输入的按键, 并将键值显示到显示器, 当输入 Ctrl+D
退出。
2 在 Main 函 数 体 内 调 用 Start_User_Thread 函 数 , 将 编 写 的 函 数 地 址 传 递 给
startFunc ,建立一个内核进程。
剩余44页未读,继续阅读
资源评论
pingtouxiaoge
- 粉丝: 0
- 资源: 9万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功