- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GeekOS 操作系统的研究与实现
题 目 :
系 别 :
专 业 : 学生姓名: 学 号 : 指导教师:
GeekOS 操作系统的研究与实现
计算机科学与工程学院
xxxxx xxxxx xxxxx xxxxx
2011 年 6 月 30 日
GeekOS 操作系统的研究与实现
一、 实验目的
计算机操作系统是管理计算机系统软件、硬件资源,控制程序运行,改善人机界面,提 供各种服务,合理组织计算机工作流程和为用户有效使用计算机提供良好的运行环境的系统 软件,它为用户使用计算机提供一个方便、灵活、安全、可靠的工作环境,也是其他应用软件赖以存在的基础。不仅是高校计算机专业学生需要了解它,从事计算机行业的人员也需要 深入了解它。
由于目前高校开设的计算机操作系课程中偏重对理论知识的要求,实践环境有限,并偏 重注重学生对一些经典算法的实践,学生并没有机会了解、实践操作系统的内部结构和实现 技术。GeekOs 操作实验是一个用 C 语言编写开发的操作系统,学生可以在 Linux 或 UNIX 环境下对其进行功能扩展。通过本次实验,学生可以深入了解计算机操作系统的概念和作用; 理解 PC 启动原理,深入体会计算机启动过程,包括操作系统的引导、内核程序的导入;进一步了解和参与实践操作系统进程的管理,理解进程的状态的转换、进程的调度等;通过本 实验,学生还可以理解存储器分段分页管理机制和文件系统相关的概念和技术。
本次实验目的的具体目的为:熟悉 GeekOS 的项目编译、调试和运行环境,掌握 GeekOS 工作过程;熟悉 ELF 文件格式,了解 GeekOS 系统如何将 ELF 格式的用户可执行文件程序装入到内存,建立内核进程并运行的实现技术;扩充GeekOS 操作系统内核,使得系统支持用户进程的动态创建和执行。
学生参与到操作系统的开发工作中,实现操作系统的功能改进或再开发,以增加学生对操作系统核心技术的时间,达到理论与实践相结合。
二、 设计环境
GeekOS 是一个基于 X86 架构的 PC 上运行的微操作系统内核,由美国马理兰大学的教师开发,主要用于操作系统课程设计,目的是使学生能够实际动手参与到一个操作系统的开 发工作中。出于教学目的,这个系统内核设计简单,却又兼备实用性,它可以运行在真正的X86 PC 硬件平台。作为一个课程设计平台,GeekOS 由一个基本的操作系统内核作为基础, 提供了操作系统与硬件之间的所有必备接口,实现了系统引导、实模式到保护模式的转换、中断调用及异常处理、基于段式的内存管理、FIFO 进程调度算法以及内核进程、基本的输入输出(键盘作为输入设备,显示器作为输出设备),以及一个用于存放用户程序的只读文件系 统 PFAT。
本实验要求学生使用 GeekOS 作为操作系统框架,学生可以使用 Linux 或者 UNIX 环境对 GeekOS 其进行扩充,也可以使用 Windows 下的 Cygwin 工具进行开发。
三、 项目设计要求
为达到实验目的效果,实验要求针对进程管理等操作系统核心内容进行相应的3 项目要求。其项目和要求为:
project0
建 GeekOs 的编译和调试平台,掌握 GeekOs 的内核进程工作原理;
熟悉键盘操作函数,编程实现一个内核进程。该进程的功能是:接收键盘输入的字符并显示到屏幕中,当输入 Ctrl+D 时,结束进程运行。
project1
修改/geekos/elf.c 文件:在函数Parse_ELF_Executable()中添加代码,分析 ELF 格式文件
(包括分析得出 ELF 文件头、程序头,获取可执行文件长度,代码段、数据段等信息),并填充 Exe_Format 数据结构中的域值。
掌握 GeekOs 在核心态用户程序的原理,为实现项目2 的实现做准备。
project2
本项目需要阅读/src/geekos 目录中的 entry.c、lowlevel.asm、kthread.c、userseg.c,其中在 userseg.c 中主要关注 Destroy_User_Context()和 Load_User_Program()两个函数。项目要求为:
1)user.c:完成函数 Spawn()和 Switch_To_User_Context()。2)elf.c:完成函数 Parse_ELF_Executable(),要求与项目 1 相同。
userseg.c:完成函数Destroy_User_Context()、Load_User_Program()、Copy_From_User() 、 Copy_To_User()和 Switch_To_Address_Space()。
kthread.c:完成函数 Setup_User_Thread()和 Start_Use
您可能关注的文档
最近下载
- acs800调试程序.docx VIP
- ACS800ACS800 600调试指导与故障分析.ppt VIP
- ACS800变频器说明书ACS800变频器说明书.doc VIP
- JZ-25-01A 美的大多联技术手册(25.6).pdf VIP
- 货拉拉租车合同范本.docx VIP
- en-ACS800-304-704整流单元硬件手册-res.pdf VIP
- ABB ACS800中文手冊.pdf VIP
- 七年级语文第一次月考卷(全解全析)(苏州专用)-A4.docx VIP
- 医疗机构内麻醉、精神药品使用与管理制度.docx VIP
- 重庆市房屋建筑与装饰工程计价定额2018-建筑工程.docx VIP
文档评论(0)