GeekOS教学操作系统概论.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
GeekOS教学操作系统概论.doc

GeekOS教学操作系统概论 1.1 引言 操作系统管理控制它为用户使用计算机提供一个方便灵活安全可靠的工作环境是其他应用软件赖以存在的基础计算机操作系统课程是理论性和实践性都较强的课程,具有概念多、抽象、涉及面广的特点UNIX或Linux环境,用C语言编程但 操作系统存在的缺点也是不容忽视的:这些操作系统结构庞大复杂,学生短时间很难,而且操作系统几乎已经实现了所有功能,不需要学生设计或实现一些子系统Intel IA-32(或X86)通用处理器的。这样分类是因为:处理器是操作系统运行的硬件环境中最重要的部分。 针对RISC结构MIPS处理器的教学操作系统有Nachos(Not Another Completely Heuristic Operating System)和OS/161。其中Nachos是建立在软件模拟的虚拟机之上的教学操作系统,采用MIPS R2/3000的指令集,能模拟主存、中断、网络以及磁盘系统等所必须的硬件系统,美国加州大学伯克利Minix和GeekOS是针对CISC结构的Intel IA-32 (或X86)通用处理器的。其中,Minix是Andrew S. Tanenbaum(AST)开发的目前主要有1.5 版和2.0 版两个版本在使用。Minix系统是免费的,可以从许多FTP 上下载Minix是一个包括了虚拟内存文件系统设备驱动程序网络和用户程序的比较完整的操作系统由两万多行代码组成对于教学有点过于庞大和复杂而且它已经实现了操作系统的全部基本功能没有留下合适的练习让学生自己完成Intel IA-32 (或X86)通用处理器,所以选用针对该结构的教学操作系统是比较合适的,我们选用GeekOS作为操作系统课程设计平台主要原因还有:它是一个用C语言开发的操作系统,学生可以在Linux或UNIX环境下对其进行功能扩充,也可以在Windows下使用Cygwin工具进行开发,且其针对进程、文件系统、存储管理等操作系统核心内容分别设计了7个难度逐渐增加的项目供教师选择。我们将在后面的章节中详细为大家介绍GeekOS教学操作系统。 1.2 GeekOS教学操作系统 1.2.1 GeekOS概述 GeekOS是一个基于X86架构的PC上运行的微操作系统内核,由美国马理兰大学的教师开发,主要用于操作系统课程设计,目的是使学生能够实际动手参与到一个操作系统的开发工作中。出于教学目的,这个系统内核设计简单,却又兼备实用性,它可以运行在真正的X86 PC硬件平台。作为一个课程设计平台,GeekOS由一个基本的操作系统内核作为基础,提供了操作系统与硬件之间的所有必备接口,实现了系统引导、实模式到保护模式的转换、中断调用及异常处理、基于段式的内存管理、FIFO进程调度算法以及内核进程、基本的输入输出(键盘作为输入设备,显示器作为输出设备),以及一个用于存放用户程序的只读文件系统PFAT。 1.2.2 GeekOS的存储器管理 GeekOS内核有两种存储器分配方式,分页分配方式和堆分配方式。 1.分页分配方式 系统中所有存储器都分成大小相等的块,称作页。在X86系统中,页的大小是4KB。若在GeekOS中增加了支持虚拟存储器的功能,页也可以是虚拟存储空间的存储单元。在不支持虚存的系统中,页也可以看作是一个固定大小的存储块,页的分配和回收用函数Alloc_Page()和Free_Page(),这两个函数的定义在头文件geekos/mem.h中。在GeekOS中每一页都是一个Page结构: struct Page { unsigned flags; /* 页状态 */ DEFINE_LINK(Page_List, Page); /* Page_List页链表指针*/ int clock; ulong_t vaddr; /* 页映射到的用户空间虚拟地址 */ pte_t *entry; /* 指向页表中本页的页表项*/ }; 其中DEFINE_LINK是在list.h文件中的宏定义,定义了指向链表节点的指针。GeekOS使用宏定义链表结构及操作,具体代码请参考list.h文件。系统全局页链表struct Page_List g_pageList记录内存所有页的Page结构,其中flags标记为PAGE_AVAIL的页为空闲页,s_freeList记录系统所有的空闲页。 2.堆分配方式 堆分配提供不同大小存储块的分配,使用函数Malloc()和Free()进行存储块的分配和回收。 3.系统初始化内存布局 系统初始化时由Init_Mem函数将系统内存划分为内核空间、可用空间等若干部分,如图1-1所示:其中内存空洞是系统设计时留作其他功能使用的,属保留区域。内核堆是一块

文档评论(0)

wfkm + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档