您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 操作系统课设报告桂林电子科技大学
桂林电子科技大学综合设计说明书用纸《GeekOS操作系统》课程设计说明书题目:GeekOS操作系统的研究与实验学院:计算机科学与工程学院专业:信息安全姓名:学号:指导教师:2015年06月12日桂林电子科技大学综合设计说明书用纸目录1GEEKOS简介..........................................................................................................................................................11.1GEEKOS系统源代码结构..................................................12课程设计环境...........................................................................................................................................................23项目0的设计实现...................................................................................................................................................33.1项目设计目的..........................................................33.2项目设计要求..........................................................33.3项目实现原理..........................................................33.4项目实现过程..........................................................33.5运行结果..............................................................54项目1的设计实现....................................................................................................................................................64.1项目设计目的..........................................................64.2项目设计要求..........................................................64.3项目实现原理..........................................................64.4项目实现过程..........................................................84.5运行结果..............................................................95项目2的设计实现.................................................................................................................................................105.1项目设计目的.........................................................105.2项目设计目的.........................................................105.3项目实现原理.........................................................115.4项目实现过程.........................................................135.5运行结果.............................................................236遇到问题及解决方法.............................................................................................................................................237课程设计总结.........................................................................................................................................................24桂林电子科技大学综合设计说明书用纸第1页1GeekOS简介GeekOS是一个基于X86架构的PC上运行的微操作系统内核,由美国马理兰大学的教师开发,主要用于操作系统课程设计,目的是使学生能够实际动手参与到一个操作系统的开发工作中。出于教学目的,这个系统内核设计简单,却又兼备实用性,它可以运行在真正的X86PC硬件平台。作为一个课程设计平台,GeekOS由一个基本的操作系统内核作为基础,提供了操作系统与硬件之间的所有必备接口,实现了系统引导,实模式到保护模式的转换,中断调用及异常处理,基于段式的内存管理,FIFO进程调度算法以及内核进程,基本的输入输出(键盘作为输入设备,显示器作为输出设备),以及一个用于存放用户程序的只读文件系统PFAT。学生可以在Linux或Unix环境下对其进行功能扩充,且其针对进程、文件系统、存储管理等操作系统核心内容分别设计了7个难度逐渐增加的项目供学生选择。1.1GeekOS系统源代码结构GeekOS操作系统源文件geekos-0.3.0.zip可以从下载。图1.1GeekOS系统主目录在doc目录里的文件hacking.pdf和index.htm是GeekOS系统的参考文档。Scripts目录下有startProject和removeEmptyConflicts两个脚本文件。GeekOS系统的源文件在src目录下,分为7个项目:Project0到Project7。在build文件夹中,包含系统编译后的可执行文件的文件、软盘镜像或是硬盘镜像、makefile项目管理文件。在include文件夹中有GeekOS和libc两个子目录,在GeekOS子目录中有kthread.h、keyboard.h等文件。桂林电子科技大学综合设计说明书用纸第2页图1.2项目文件结构图2课程设计环境1.虚拟机软件:VMwareWorkstation10.0。2.虚拟系统:linux系统CentOS6.0。3.NASM汇编器。4.GNUgcc编译器。5.GNUgdb调试器。6.SourseInsight:程序编辑器和代码浏览器。7.Bochs:GeekOS运行于Windows(或Linux)下的BochsPC模拟器,Bochs是用C++开发的可移植的IA-32(x86)PC模拟器,它包括对Intelx86CPU、通用I/O设备和可定制的BIOS的模拟,几乎可以运行在所有流行的平台上。在本次课设中使用的是bochs2.6。图2.1课设环境桂林电子科技大学综合设计说明书用纸第3页3项目0的设计实现3.1项目设计目的熟悉GeekOS的项目编译、调试和运行环境,掌握GeekOS运行工作过程。3.2项目设计要求1.搭建GeekOS的编译和调试平台,掌握GeekOS的内核进程工作原理。2.熟悉键盘操作函数,编程实现一个内核进程。该进程的功能是:接收键盘输入的字符并显示到屏幕上,当输入ctrl+d时,结束进程的运行。3.3项目实现原理项目0主要要求设计一个函数对键盘的中断进行响应。这主要通过使用GeekOS提供的键盘响应函数Wait_Kernel_Thread进行键盘中断的响应和返回键值。该函数首先检查键盘缓冲区是否有按键,如果有,就读取一个键码,如果此时键盘缓冲区没有键值,就将线程放入键盘事件等待队列。于是可分为两步完成:1.编写函数EchoCount,函输功能是:接受键盘输入的按键,并将键值显示在显示器,当输入Ctrl+D退出。2.在Main函数体内调用Start_Kernel_Thread函数,将编写的函数地址传递给startFunc,建立一个内核进程。3.4项目实现过程1.添加代码(1)在Main函数中编写一个函数,函数功能是:接收键盘输入的按键,并将键值显示到显示器的函数,当输入Ctrl+D就退出。voidproject0(){Print(ToExithitCtrl+d.\n);Keycodekeycode;while(1){if(Read_Key(&keycode)){//读取键盘按键状态if(!((keycode&KEY_SPECIAL_FLAG)||(keycode&KEY_RELEASE_FLAG))){//只处理非特殊按键的按下事件intasciiCode=keycode&0xff;//低8位为Ascii码if((keycode&KEY_CTRL_FLAG)==KEY_CTRL_FLAG&&asciiCode=='d'){//按下Ctrl键Print(\n---------BYE!--------\n);Exit(1);}else{桂林电子科技大学综合设计说明书用纸第4页Print(%c,(asciiCode=='\r')?'\n':keycode);}}}}}//放在main函数之前(2)在Main函数体内调用Start_Kernel_Thread函数,将步骤1编写的函数地址传递给参数startFunc,建立一个内核级进程。voidMain(structBoot_Info*bootInfo){//TODO(Startakernelthreadtoechopressedkeysandprintcounts);structKernel_Thread*thread;thread=Start_Kernel_Thread(&project0,0,PRIORITY_NORMAL,false);}2.编译GeekOS项目project0(1)shell#cd/…/geekos-0.3.0/src/project0/build(2)shell#makedepend生成depend.mak文件。图3.1makedepend执行过程(3)shell#make成功之后在build目录下生成fd.img文件。桂林电子科技大学综合设计说明书用纸第5页图3.2make执行过程3.配置启动Bochs(1)创建bochs配置文件shell#geditbochsrc(2)在编辑器中输入一下配置内容gdbstub:enabled=1,port=1234,text_base=0,data_base=0,bss_base=0romimage:file=$BXSHARE/BIOS-bochs-latestmegs:8boot:afloppya:1_44=fd.img,status=insertedlog:./boch
本文标题:操作系统课设报告桂林电子科技大学
链接地址:https://www.777doc.com/doc-2381505 .html