- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编号:
GeekOS操作系统的研究与实现
题 目:GeekOS操作系统的研究与实现
系 别:
专 业:
学生姓名:
学 号:
指导教师:
2012年3月17目 录
1 实验目的 1
2 项目的设计要求 1
2.1 Project0项目设计要求 1
2.2 Project1项目设计要求 2
2.3 Project2项目设计要求 2
3 开发环境的建立 3
3.1 在虚拟机上安装Linux操作系统 3
3.2 安装c/c++编译环境 3
4 项目设计原理 4
4.1 Project0设计原理 4
4.2 Project1设计原理 4
4.3 Project2设计原理 6
5 项目设计的具体实现 9
5.1 Project0项目的具体实现 9
5.2 Project1项目的具体实现 10
5.3 Project2项目的具体实现 11
6 系统编译运行的原理及结果 21
6.1 Project0运行结果 21
6.2 Project1运行结果 22
6.3 Project2运行结果 23
7 遇到的问题及解决方法 23
八 课程设计总结 24
参考文献 25
1 实验目的
计算机操作系统是管理计算机系统软件、硬件资源,控制程序运行,改善人机界面,提供各种服务,合理组织计算机工作流程和为用户有效使用计算机提供良好的运行环境的系统软件,它为用户使用计算机提供一个方便、灵活、安全、可靠的工作环境,也是其他应用软件赖以存在的基础。不仅是高校计算机专业学生需要了解它,从事计算机行业的人员也需要深入了解它。
由于目前高校开设的计算机操作系课程中偏重对理论知识的要求,实践环境有限,并偏重注重学生对一些经典算法的实践,学生并没有机会了解、实践操作系统的内部结构和实现技术。经过一个学期的操作系统理论学习,我们基本上掌握了操作系统的理论基础知识,但是,操作系统课程的内容不仅仅涉及理论、算法,更重要的是用技术去实现算法并对其加以实现和应用。
此次课程设计,通过搭建Linux实验平台,对专门为操作系统课程教学而设计的操作系统——GeekOS的项目代码的补充和完善,从浅到深,由表面到内涵地去理解操作系统的设计思想,理解操作系统内核工作的基本原理。在完成项目的过程中,通过动手操作,使得我们能够在动手查阅资料、思考排难等探索性活动中进一步理解操作系统的抽象概念,并进一步理解操作系统复杂的结构和工作原理。
具体的来说,对于项目0,应该熟悉GeekOS的项目编译,调试和运行环境,掌握GeekOS的运行工作过程;对于项目1,应该熟悉ELF文件格式,了解GeekSO系统如何将ELF格式的用户可执行程序装入到内存,建立内核进程并运行的实现技术;对于项目2,扩充GeekOS操作系统内核,使得系统能够支持用户级进程的动态创建和执行。
2 项目的设计要求
2.1 Project0项目设计要求
(1) 搭建GeekOS的编译和调试平台,掌握GeekOS的内核进程工作原理。
(2) 熟悉键盘操作函数,编程实现一个内核进程。该进程的功能是:接受键盘输入的字符并显示在屏幕上,当按ctrl+D时,结束进程的运行。
2.2 Project1项目设计要求
1、修改/geekos/elf.c文件:在函数Parse_ELF_Executable( )中添加代码,分析ELF格式的可执行文件(包括分析得出ELF文件头、程序头,获取可执行文件长度,代码段、数据段等信息),并填充Exe_Format数据结构中的域值。
2、在Linux环境下编译系统得到GeekOS镜像文件。
3、编写一个相应的bochs配置文件。
4、在bochs中运行GeekOS系统显示结果。
2.3 Project2项目设计要求
项目2要求用户对以下几个文件进行修改:
1)“src/GeekOS/user.c”文件中的函数Spawn(),其功能是生成一个新的用户级进程;
2)“src/GeekOS/user.c”文件中的函数Switch_To_User_Context(),调度程序在执行一个新的进程前调用该函数以切换用户地址空间;
3)“src/GeekOS/elf.c”文件中的函数Parse_ELF_Executable()。该函数的实现要求和项目1相同。
4)“src/GeekOS/userseg.c”文件中主要是实现一些为实现对“src/GeekOS/user.c”中高层操作支持的函数。
Destroy_User_Context()函数的功能是释放
文档评论(0)