《操作系统实习课程》PPT课件.ppt_第1页
《操作系统实习课程》PPT课件.ppt_第2页
《操作系统实习课程》PPT课件.ppt_第3页
《操作系统实习课程》PPT课件.ppt_第4页
《操作系统实习课程》PPT课件.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实习课程,北京大学信息学院计算机科学技术系2002级 2004-2005第二学期,授课教师,主讲教师: 陈向群 辅导教师: 李健 徐冬 陈国辉 马世雄 地点:电教114 网址:,课程形式,实习 实现基于x86体系结构的一个操作系统 课堂讲授 课堂汇报(presentation)与课堂讨论 实习报告,课程目标,通过设计和实现一个小型操作系统,掌握操作系统基本原理和软件工程知识,以及操作系统设计的新思想 在理解操作系统原理的基础上,掌握操作系统的实现方法 深入理解操作系统中的重要概念和实现方法 虚拟内存、内核和用户态、系统调用、线程、上下文切换、中断,进程间通信、并发和互斥、软硬件之间的接口等等 深入理解x86体系结构 获得构造复杂系统的实践经验,课程介绍,在提供的代码框架下,实现你自己的基于x86 PC机的小型OS OS虽然不大,但是麻雀虽小,五脏俱全 例如:小巧的boot loader,类似exokernel的设计先进的内核,一个shell(让你可以方便的使用所编写的系统) 6个循序渐进的实验,从系统的启动开始,由浅入深地带领你完成自己的第一个操作系统,实验1:PC启动和调用规范 通过PC启动的实验,掌握x86 PC机的启动过程,理解链接地址、加载地址和重定位的概念,学习如何编写位置无关代码 通过实现setjmp和longjmp两个函数,掌握GCC的调用规范和x86的堆栈结构 实验2:内存管理 完成虚拟内存和物理内存的管理 给定虚拟内存的布局规范,要求建立两级页表来满足该布局规范,并理解如何对虚拟地址空间进行管理 维护数据结构来记录每个物理页的分配情况和共享情况,掌握在支持页式虚拟内存的情况下,如何对x86 PC机的物理内存进行管理,实习介绍,实习介绍(续1),实验3:进程管理 通过设置进程控制块和编写进程创建、进程中止和进程调度程序,理解如何对进程进行管理 通过设置中断描述符标IDT,编写通用中断派发程序和时钟中断例程,理解如何管理中断,实习介绍(续2),实验4:系统调用,IPC,页故障处理和fork 在IDT中增加系统调用入口,编写系统调用派发程序,掌握系统调用的实现方法,理解系统调用的处理流程 实现简单的能传递一个32位整数值的IPC 编写用户级的页故障处理程序 编写用户级的fork函数,理解子进程如何继承父进程的资源,实验5:文件系统和Spawn函数 通过实现一个简单的基于磁盘的微内核方式的文件系统,掌握文件系统的实现方法和层次结构 Spawn函数与Unix的exec功能类似,该函数把磁盘上的可执行文件读入内存执行,既可测试文件系统,又可以理解程序的加载执行全过程,具体了解一个程序的虚拟空间的具体划分和用途,实习介绍(续3),实验6:Shell 实现具有管道,重定向功能的shell,能够执行一些简单的基本命令,如cat,sh,ls,echo等 该实习由多个同学共同完成,可以根据实际情况对shell的功能进行扩展,通过该实习,可以培养团队合作精神和创新精神 其他扩展功能,实习介绍(续4),成绩评定,评分分布 实验报告文档: 7% * 6次 实验代码评定: 7% * 6次 课堂讨论: 16% 实验报告评分原则 按时提交实验报告、报告形式符合规范要求 报告内容充实、有自己的见解等 课堂表现评分原则 课堂是否积极参与提问,回答问题正确,汇报或演示表达清楚等,报告提交格式,提交:实习报告,源程序 注意:如果没有提交源程序或者将源程序附在实习报告中的,请重新提交源程序 实习报告文件名规范 学号-姓名-主题 举例:00208001-李名-实验1报告 源程序名字书写规范 学号-姓名-主题 举例:00208001-李名-实验1源程序 实习报告内容要求 本次实验的要求 本次实验自己所作的工作 实验过程中所遇到的问题以及解答 个人体会(可选),实验环境及工具,一台X86 PC机 较新的Linux操作系统,例如Red Hat Linux 9.0 实验需在Linux环境下完成 GNU工具链 目标机模拟器的bochs,实验1(Lab1) PC启动和GCC调用规范 实习内容和要求,Lab 1 资料清单,背景知识:x86 and PC architecture.pdf IA32的官方资料: System Programming Guide.pdf Instruction Set Reference.pdf Basic Architecture.pdf 汇编语言: PC Assembly Language.pdf 80x86汇编语言程序设计教程 杨秀文等编著 清华大学出版社 10.1 实验1 lab1.pdf 电子书: Linux内核0.11完全注释 Linux内核源代码情景分析(上),Lab 1 资料阅读要求,x86 and PC architecture.pdf 了解背景知识 Linux内核0.11完全注释 阅读2.10节 Linux/Makefile文件 参考阅读14.2-14.4节 bochs介绍、磁盘映像文件制作 Linux内核源代码情景分析 阅读1.5节 了解AT&T汇编 资料下载: 更多资料的可以到MIT 的开放课程网站下载 /OcwWeb/index.htm,PC启动,主要实习过程 建立bochs实验环境 根据ex1.S生成bochs的磁盘映像ex1.disk,启动bochs,查看bochs的信息,理解PC机加电启动后如何从BIOS跳到内存执行 修改ex2.S程序的链接地址,根据ex2.S生成bochs的磁盘映象ex2.disk,启动bochs,查看bochs的信息,理解链接地址和加载地址的含义和它们之间的关系 根据ex3.S生成bochs的磁盘映象ex3.disk,启动bochs,查看bochs的信息,了解堆栈的结构,PC启动(续),阅读boot.S和boot.c的源代码,理解boot loader的原理和实现方法 生成bochs的磁盘映象k2.disk,修改boot.c,使得系统能够正常启动,学会如何编写位置无关代码,GCC调用规范,主要实习过程 实现int setjmp(jmp_buf env)函数 setjmp将堆栈环境保存在env中供longjmp使用 实现void longjmp(jmp_buf env, int)函数 函数longjmp恢复最后一次setjmp调用时保存的堆栈环境,程序继续执行,看起来就如同setjmp刚执行完,并返回val 运行setjmp-example.c程序,查看执行结果是否正确 通过实现这两个函数,掌握GCC的调用规范和x86的堆栈结构,具体要求,阅读有关资料 独立完成,提交源程序和实习报告 截止日期:2005-03-06 实习报告需回答lab1.pdf中提出的所有问题 第二周课程 进行Lab 1的汇报讨论和检查 布置Lab 2 第三周课程 Lab 1和Lab2的汇报讨论和检查,Bochs安装及使用,Bochs安装环境,安装Linux操作系统 Linux 2.4以上内核 图形界面 采用默认的安装选项 用root管理员登录Linux 新建一个目录,在该目录下完成Bochs安装过程,Bochs源码下载, 使用浏览器直接登录页面下载源码 将源码bochs-2.1.1.tar.gz放到安装目录下,解压缩Bochs源码,键入命令 tar xzf bochs-2.1.1.tar.gz 将产生一个bochs-2.1.1目录 进入该目录,解压缩Bochs源码(图示),配置Bochs,键入命令 ./configure -enable-disas -enable-debugger -disable-config-interface -with-nogui -enable-disas 使得Bochs可以反汇编机器指令,disas是disassemble的缩写 -enable-debugger使得用户可以使用Bochs自带的调试器进行调试 -disable-config-interface使得Bochs启动时不显示配置菜单 -with-nogui使得Bochs直接输出到终端,而不会新建一个图形窗口,配置Bochs(图示),编译Bochs源码,键入命令 make 系统将在Bochs安装目录下编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论