- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统课程设计8
操作系统课程设计报告
题 目:Geekos操作系统的研究与实现
专 业:
学 号:
学生姓名:
指导教师:
2012年3月16日
目录
一、 实验目的 2
二、 项目设计要求 3
三、 开发环境的建立 4
1. 开发环境的介绍 4
2. 开发环境的构建 4
四、 项目设计原理 5
五、 项目设计的实现 6
1. Project0项目的具体实现 6
2. Project1项目的具体实现 8
3. Project2项目的具体实现 9
六、 系统编译运行的结果 20
七、 遇到的问题和解决方法 23
八、 课程设计总结 24
实验目的
Project0:熟悉GeekOS的项目编译、调试和运行环境,掌握GeekOS运行工作过程。
Project1:熟悉ELF文件格式,了解GeekOS系统如何将ELF格式的可执行程序装入到内存,建立内核进程并运行的实现技术。
Project2:扩充GeekOS操作系统内核,使得系统能够支持用户级进程的动态创建和执行。
项目设计要求
Project0
搭建GeekOS的编译和调试平台,掌握GeekOS的内核进程工作原理。
熟悉键盘操作函数,编程实现一个内核进程。该进程的功能是:接收键盘输入的字符并显示到屏幕上,当输入ctrl+d时,结束进程的运行。
Project1
修改/geekos/elf.c文件:在函数Parse_ELF_Executable( )中添加代码,分析ELF格式的可执行文件(包括分析得出ELF文件头、程序头,获取可执行文件长度,代码段、数据段等信息),并填充Exe_Format数据结构中的域值。
在Linux环境下编译系统得到GeekOS镜像文件。
编写一个相应的bochs配置文件。
在bochs中运行GeekOS系统显示结果。
Project2:要求用户对以下几个文件进行修改:
“src/GeekOS/user.c”文件中的函数Spawn(),其功能是生成一个新的用户级进程;
“src/GeekOS/user.c”文件中的函数Switch_To_User_Context(),调度程序在执行一个新的进程前调用该函数以切换用户地址空间;
“src/GeekOS/elf.c”文件中的函数Parse_ELF_Executable()。该函数的实现要求和项目1相同。
“src/GeekOS/userseg.c”文件中主要是实现一些为实现对“src/GeekOS/user.c”中高层操作支持的函数。
“src/GeekOS/kthread.c”文件中的Start_User_Thread函数和Setup_User_Thread函数。Setup_User_Thread()函数的功能是为进程初始化内核堆栈,堆栈中是为进程首次进入用户态运行时设置处理器状态要使用的数据。Start_User_Thread()是一个高层操作,该函数使用User_Context对象开始一个新进程。
“src/GeekOS/kthread.c”文件中主要是实现用户程序要求内核进行服务的一些系统调用函数定义。要求用户实现的有Sys_Exit()函数、Sys_PrintString()函数、Sys_GetKey()、Sys_SetAttr()、Sys_GetCursor()、Sys_PutCursor()、Sys_Spawn()函数、Sys_Wait()函数和Sys_GetPID( )函数。
在main.c文件中改写生成第一个用户态进程的函数调用:Spawn_Init_Process(void) 。
开发环境的建立
开发环境的介绍
(1) Geekos是一个基于X86架构的PC机上运行的微操作系统内核,由美国马理兰大学的教师开发,是一个用C语言开发的操作系统,GeekOS主要用于操作系统课程设计,目的是使学生能够实际动手参与到一个操作系统的开发工作中。学生可以在Linux或Unix环境下对其进行功能扩充,也可以在windows下使用Cygwin工具进行开发,其主要特点是:简单、实用、易懂,便于学生们理解操作系统的设计思想和实现过程。出于教学目的,这个系统内核设计简单,却又兼备实用性,它可以运行在真正的X86 PC硬件平台。
(2)VMware Workstation
VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。它可以使你在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统
您可能关注的文档
最近下载
- 255-20240615+《中庸》第4讲:《行明章》.docx VIP
- 高中语文课堂情境化多模态教学策略探究教学研究课题报告.docx
- 2025深度融合AI的低代码平台.pptx VIP
- 道路桥梁工程课件培训资料.ppt VIP
- ASME B16.5-2020 管法兰和法兰管件(中文版).pdf
- 人教版PEP小学五年级英语上册教案-全册.pdf VIP
- 《第7课 冒泡排序》课件.pptx VIP
- 最新中小学校长选拔笔试试题及参考答案[教育].docx VIP
- DB62T 856-2002 无公害蔬菜番瓜(西葫芦)日光温室生产技术.pdf VIP
- TJYXFIA0002-2024 菜干团体标准.pdf VIP
文档评论(0)