logo资料库

操作系统课设参考报告.pdf

第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
资料共32页,剩余部分请下载后查看
操作系统课程设计报告 题 目:Geekos 操作系统的研究与实现 院 (系): 计算机与信息安全学院 专 业: 计算机科学与技术 学生姓名: 学 号: 指导教师单位: 计算机与信息安全学院 姓 名: 王慧娇 职 称: 副教授 题目类型:理论研究 实验研究 工程设计 工程技术研究 软件开发 2019 年 3 月 30 日
桂林电子科技大学课程设计(论文)报告用纸 摘 要 GeekOS:是一个基于 X86 架构的 PC 机上运行的微操作系统内 核,由美国马理兰大学的教师开发,是一个用 C 语言开发的操作系 统, GeekOS 主要用于操作系统课程设计,目的是使学生能够实际动 手参与到一个操作系统的开发工作中。学生可以在 Linux 或 Unix 环 境下对其进行功能扩充,且其针对进程、文件系统、存储管理等操作 系统核心内容分别设计了 7 个难度逐渐增加的项目供学生选择 。 - I -
桂林电子科技大学课程设计(论文)报告用纸 目录 目录 ................................................................................................................................................................. II 1 绪论 ............................................................................................................................................................ 1 1.1 GeeKos 操作系统概述 .................................................................................................................. 1 1.2 课程设计的目的与任务 .............................................................................................................. 1 1.2.1 项目设计 0 ................................................................................................................................ 1 1.2.2 项目设计 1 ................................................................................................................................ 2 1.2.3 项目设计 2 ................................................................................................................................ 2 1.2.4 项目设计 3 ................................................................................................................................ 3 2 系统分析 .................................................................................................................................................. 4 2.1 GeeKos 实验项目开发环境的搭建 ........................................................................................... 4 一、vmware 安装 ............................................................................................................................. 4 3 系统设计与实现 .................................................................................................................................... 7 3.1 项目设计流程图和原理 .............................................................................................................. 7 3.1.1 项目设计 0 原理 ...................................................................................................................... 7 3.1.2 项目设计 1 原理 ...................................................................................................................... 7 3.1.3 项目设计 2 原理 ...................................................................................................................... 8 3.1.4 项目设计 3 原理 ...................................................................................................................... 9 3.2 项目设计的具体实现代码(要有详细注释) .................................................................... 11 3.2.1 项目设计 0 具体实现代码 ................................................................................................. 11 3.2.2 项目设计 1 具体实现代码 ................................................................................................. 12 3.2.3 项目设计 2 具体实现代码 ................................................................................................. 13 3.2.4 项目设计 3 具体实现代码 ................................................................................................. 16 4 系统测试及编译运行 ......................................................................................................................... 23 4.1 系统编译运行的结果及分析说明 ........................................................................................... 23 4.1.1project0 ..................................................................................................................................... 23 4.1.2project1 ..................................................................................................................................... 24 4.1.3project2 ..................................................................................................................................... 24 4.1.4project3 ..................................................................................................................................... 25 4.2、遇到问题及解决方法 ............................................................................................................... 27 - II -
桂林电子科技大学课程设计(论文)报告用纸 5、总结 ....................................................................................................................................................... 28 6、参考文献 .............................................................................................................................................. 28 - III -
桂林电子科技大学课程设计(论文)报告用纸 第 1 页 共 28 页 1 绪论 计算机操作系统是管理计算机系统软件、硬件资源、控制程序运 行、改善人机界面、提供各种服务、合理组织计算机工作流程和为用 户有效使用计算提供良好的运行环境的系统软件,它为用户使用计算 机提供一个方便、灵活、安全、可靠的工作环境,也是气体应用软件 赖以存在的基础,不仅是搞笑计算机专业学生需要了解它,从事计算 机行业的人员也需要深入的了解它。 此次课程设计,通过搭建 linux 实验平台,对专门卫操作系统课 程教学而设计的操作系统——Geekos 的项目代码的补充和完善,从 浅到深,由表及里地去理解操作系统的设计思想,理解操作系统的基 本工作原理。 1.1 GeeKos 操作系统概述 GeekOS:是一个基于 X86 架构的 PC 机上运行的微操作系统内 核,由美国马理兰大学的教师开发,是一个用 C 语言开发的操作系 统, GeekOS 主要用于操作系统课程设计,目的是使学生能够实际动 手参与到一个操作系统的开发工作中。学生可以在 Linux 或 Unix 环 境下对其进行功能扩充,且其针对进程、文件系统、存储管理等操作 系统核心内容分别设计了 7 个难度逐渐增加的项目供学生选择 1.2 课程设计的目的与任务 1.2.1 项目设计 0 一、项目设计目的: 熟悉 GeekOS 的项目编译、调试和运行环境,掌握 GeekOS 运行工作过程。 二、项目设计要求: 1、搭建 GeekOS 的编译和调试平台,掌握 GeekOS 的内核 进程工作原理。 2、熟悉键盘操作函数,编程实现一个内核进程。该进程的 - 1 -
桂林电子科技大学课程设计(论文)报告用纸 第 2 页 共 28 页 功能是:接收键盘输入的字符并显示到屏幕上,当输入 ctrl+d 时,结 束进程的运行 1.2.2 项目设计 1 一、项目设计目的 熟悉 ELF 文件格式,了解 GeekOS 系统如何将 ELF 格式的 可执行程序装入到内存,建立内核进程并运行的实现技术。 二、项目设计要求 1、修改/geekos/elf.c 文件:在函数 Parse_ELF_Executable( ) 中添加代码,分析 ELF 格式的可执行文件(包括分析得出 ELF 文件 头、程序头,获取可执行文件长度,代码段、数据段等信息),并填充 Exe_Format 数据结构中的域值。 2、在 Linux 环境下编译系统得到 GeekOS 镜像文件。 3、编写一个相应的 bochs 配置文件。 4、在 bochs 中运行 GeekOS 系统显示结果。 1.2.3 项目设计 2 一、项目设计目的 扩充 GeekOS 操作系统内核,使得系统能够支持用户级进程 的动态创建和执行。 二、项目 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()函数的功能是释放用户态进程占用 的内存资源。 Load_User_Program()函数的功能通过加载可执行文件镜像 创建新进程的 User_Context 结构。 - 2 -
桂林电子科技大学课程设计(论文)报告用纸 第 3 页 共 28 页 Copy_From_User()和 Copy_To_User()函数的功能是在用 户地址空间和内核地址空间之间复制数据,在分段存储器管理模式下, 只要段有效,调用 memcpy 函数就可以实现这两个函数的功能。 Switch_To_Address_Space()函数的功能是通过将进程的 LDT 装入到 LDT 寄存器来激活用户的地址空间; 5)“src/GeekOS/kthread.c”文件中的 Start_User_Thread 函数和 Setup_User_Thread 函数。 Setup_User_Thread()函数的功能是为进程初始化内核栈,栈 中是为进程首次进入用户态运行时设置处理器状态要使用的数据。 Start_User_Thread ( ) 是 一 个 高 层 操 作 , 该 函 数 使 用 User_Context 对象开始一个新进程。 6)“src/GeekOS/kthread.c”文件中主要是实现用户程序要求内核 进行服务的一些系统调用函数定义。要求用户实现的有 Sys_Exit() 函数、Sys_PrintString()函数、Sys_GetKey()、Sys_SetAttr()、 Sys_GetCursor()、Sys_PutCursor()、Sys_Spawn()函数、Sys_Wait ()函数和 Sys_GetPID( )函数。 7)在 main.c 文件中改写生成第一个用户态进程的函数调用: Spawn_Init_Process(void) 。 1.2.4 项目设计 3 一、项目设计目的 研究进程调度算法,掌握用信号量实现进程间同步的方法。 为 GeekOS 扩充进程调度算法——基于时间片轮转的进程多级反馈调 度算法,并能用信号量实现进程协作。 二、项目设计要求 (1)实现 src/geekos/syscall.c 文件中的 Sys_SetSchedulingPolicy 系统调用,它的功能是设置系统采用的何种进程调度策略; (2)实现 src/geekos/syscall.c 文件中的 Sys_GetTimeOfDay 系统 调用,它的功能是获取全局变量 g_numTicks 的值; (3)实现函数 Change_Scheduling_Policy(),具体实现不同调度算 法的转换。 (4) 实 现 syscall.c 中 信 号 量 有 关 的 四 个 系 统 调 用 : sys_createsemaphore( )、sys_P( )、sys_V( )和 sys_destroysemaphore( )。 - 3 -
桂林电子科技大学课程设计(论文)报告用纸 第 4 页 共 28 页 2 系统分析 2.1 GeeKos 实验项目开发环境的搭建 一、vmware 安装 打开已经下载好的虚拟机安装包 下一步:接收协议 - 4 -
分享到:
收藏