《操作系统原理》课程设计报告-微型操作系统的设计.doc_第1页
《操作系统原理》课程设计报告-微型操作系统的设计.doc_第2页
《操作系统原理》课程设计报告-微型操作系统的设计.doc_第3页
《操作系统原理》课程设计报告-微型操作系统的设计.doc_第4页
《操作系统原理》课程设计报告-微型操作系统的设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

xxxx操作系统原理课程设计报告 学 院:电气与信息工程学院 专业班级: xxxx 学生姓名: xxx 学 号: xxxxxxxx 设计地点(单位)_ _ x_ _ _ _设计题目:_ _ 微型操作系统的设计_ 完成日期: 2011 年 6 月 17 日 指导教师评语: _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ xxxx设计题目:微型操作系统的设计 学生姓名xxx课程名称操作系统原理课程设计专业班级x地 点xxx起止时间x设计内容及要求(1) 配置操作系统编写的所需的环境(虚拟机的建立和相应环境建立),以准备相关的必须工具的准备,并学会相关工具的使用,为以后编写一个微操作系统奠定基础和准备平台。(2) 学习NASM汇编器在本次设计中的使用。(3) 学习裸机启动的过程,消化操作系统引导程序的结构,在此基础上,完成在实模式下从软盘引导计算机的程序编写。(4) 学习本次设计需要的实模式到保护模式切换的相关知识。理解GDT在保护模式的工作机理(5) 编写在保护模式下的引导程序,并用C语言模拟写一个“内核”,并实现在保护模下通过引导程序启动计算机并将该“内核”加载到内存中。最后切换到内核。设计参数(1) 写出编写一个操作系统所需的环境和操作说明书。(2) 总结计算机启动顺序和具体过程。(3) 实现在实模式下系统引导程序的编写。(4) 理解消化实模式到保护模式切换原理以及相关的数据结构和工作过程,并实现之。(5) 完成保护模式下的引导程序,并完成“内核”的加载,并使“内核”运行起来。附加要求:请在设计的课后完成具有进程调度和管理的内核的编写。进度要求6月12日布置任务,对各个任务的基础知识进行讲解6月12日 安装环境,并熟悉相关工具的使用。6月13日完成实模式下引导程序的编写。6月14日完成实模式与保护模式的切换代码的设计。6月15日完成实模式引导程序和内核加载程序编写。6月16日完成答辩和报告撰写。参考资料随任务布置的相关电子文档。其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任: 指导教师: 年 月 日xxxx操作系统原理课程设计报告摘要操作系统是一种对计算机硬件资源和软件资源,进行管理的软件。本学期通过对操作系统原理这门课程的学习,对操作系统相关知识有了更进一步的认识。为了检验与巩固所学习到的知识,要求设计一个微型操作系统能够完成引导操作系统运行,实现实模式到保护模式的转换和加载操作系统内核。完成本次课程设计,首先,必须配置操作系统编写的所需的环境,包括虚拟机的建立和相应环境建立。然后,能应用NASM编辑器,还需要一款将汇编指令转换为二进制指令的工具。关键词:操作系统 实模式 保护模式 虚拟机 NASM13目录摘要I1 需求分析11.1功能需求分析11.2开发及运行环境需求分析21.2.1 开发环境21.2.2 运行环境22系统设计42.1 引导程序和模式切换功能设计42.2 内核设计62.3 映像文件的设计73系统测试84总结105 致谢11参考文献121 需求分析本节将从功能的需求分析、开发及运行环境的需求分析进行阐述需求。1.1功能需求分析根据课程设计任务书的要求,需要完成引导程序设计、实模式到保护模式切换功能、简单的内核功能。这几个功能拥有怎么样的结构呢?让我们从了解PC机启动到操作系统运行的过程出发来分析我们所要完成功能的结构。PC机开机后,CPU被设定为执行FFFF:0单元处的指令,此处有一条跳转指令。CPU执行该指令,此处有一条跳转指令。CPU执行该指令后,转去执行BIOS中的硬件系统测试和初始化程序。初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。硬件系统检测和初始化完成后,调用int 19h中断进行操作的引导,即引导程序。如果设为从软盘启动操作系统,则int 19h将主要完成以下工作:1)控制0号软驱,读取软盘0面0道1扇区的内容到内存0:7c00H处2)将CS:IP指向0:7c00H软盘0面0道1扇区中装有操作系统引导程序。引导程序中,将计算机工作模式从实模式切换到保护模式。然后跳转至操作系统内核所在处进行运行,将控制权交给操作系统。加电启动硬件自检初始化程序引导程序模式切换内核运行图1.1 计算机启动流程从图计算机启动流程中,可以看出完成设计的三个功能更明显的一个结构是一个线性的结构。当然为了检测计算机是否已经成功完成模式切换并且内核已经运行,将采用C语言编写一个简单的内核进行检验。内核的主要功能是向显存单元直接写入要显示的字符串。1.2开发及运行环境需求分析从章节的名字中,就可以很明显的看出,本章将从开发环境和运行环境两个入口点进行环境分析。1.2.1 开发环境1)文本编辑器Windows环境平台下的EditPlus或者Linux平台下的一种文本编辑器2)汇编编译器NASM汇编编译器3)C语言编译器linux平台下的GCC编译器鉴于条件的限制,我们将在Windows平台下安装VMware虚拟机来搭建Linux平台。1.2.2 运行环境由于程序的特殊性,我们不可能反复地对自己的电脑的硬盘进行擦写操作,那么,程序的运行及调试将在虚拟机中完成,同样地,软驱在计算机硬件的发展过程中渐渐地退出了历史舞台,我们将采用.img格式的软盘映像文件来代替软盘的功能进行存储程序。那么,弄懂虚拟机和软盘映像文件的概念将是必须的。1)虚拟机VMware简介A)关于VMware几个重要概念1. VM(Virtual Machine)虚拟机,指由Vmware模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机; 2.HOST指物理存在的计算机,Hosts OS指HOST上运行的操作系统; 3. Guest OS指运行在VM上的操作系统。例如在一台安装了Windows NT的计算机上安装了Vmware,那么,HOST指的是安装Windows NT的这台计算机,其Hosts OS为Windows NT。VM上运行的是Linux,那么Linux即为Guest OS。B)VMware特点1.可同时在同一台PC上运行多个操作系统,每个OS都有自己独立的一个虚拟机, 就如同网络上一个独立的PC。 2.在Windows NT/2000上同时运行两个VM,相互之间可以进行对话,也可以在全 屏方式下进行虚拟机之间对话,不过此时另一个虚拟机在后台运行。 3.在VM上安装同一种操作系统的另一发行版,不需要重新对硬盘进行分区。 4.虚拟机之间共享文件、应用、网络资源等。 5.可以运行C/S方式的应用,也可以在同一台计算机上,使用另一台虚拟机的所有资源。2)软盘映像文件的简介映像文件是将资料和程序结合而成的文件,它将来源资料经过格式转换后在硬盘上存成 与目的光盘内容完全一样的文件,然后我们可以将这个文件以一比一对应的方式刻入光盘中。 在制作映像文件之前建议先做硬盘的资料重整与磁盘扫描,除此之外,由于一个映像文件的大小相当于刻入光盘的全部内容,所以一定要预留超过这个容量的硬盘空间来存储这个映像文件。3)映像文件写入工具WinHex2系统设计在系统设计时,省略了Loader的设计,并且将模式切换功能放在了引导程序的位置。内核则存放在了另外的存储位置。2.1 引导程序和模式切换功能设计在引导程序中,主要完成了内核文件的读取、模式切换功能的实现、跳转至内核处执行。现给出完整的设计思路:BITS 16 ;ORG 0x7C00 ;告诉编译器,代码将从0X7C00处开始执行,看到没有0X7C00是段地址,呵呵,明显在实模式下运行哈jmp read;读软盘,并且完成模式转换;-定义要启动读取的磁盘,本程序采用软盘映像-;bootdrive db 0 ;0代表,软盘;-;分出来三个段:空段、代码段、数据段、gdt:gdt_null:;CPU要求第一个段是空段dd 0;双字32(4个字节)dd 0;每个段的描述符是64位(8字节),空描述符的这64位全是0gdt_code_addr equ $ - gdt ;代码段的地址在GDT的偏移量gdt_code:dw 0xffff ;段大小4GB(两个字节),保护模式下的寻址能力的体现dw 0;基地址,偏移量db 0;(一个字节)db 10011010b;属性描述位,指明这里是代码段db 11001111bdb 0 gdt_data_addr equ $ - gdt ;计算数据段在GDT表中的位置gdt_data:dw 0xffffdw 0db 0 db 10010010b ; 指明此是数据段,可读可写 db 11001111b db 0 gdt_end:;仅仅用来计算gdt_addr: dw gdt_end - gdt - 1 ; GDT 表的大小(最大可偏移量) dd gdt ; GDT 表在内存中的位置 ;读取软盘,未考虑其他不可靠因素的干扰;13H中断读取的数据由es:bx决定存储在内存中的位置;内核存储在0X9000H处read: mov bootdrive , dl ; 得到启动的驱动器号 xor ax , ax ; 设置 DS mov ds , ax ;内存存储地址(实模式的逻辑地址)mov ax,0mov es,axmov bx,0x9000;基地址;软盘格式:O面O磁道1扇区,引导扇区;设置读盘中断,具体细节请查看13H中断mov dl,bootdrive;设置中断I/O存储介质类型,软盘mov dh,0;0号磁头,即软盘0面mov ch,0;0磁道mov cl,2;2号扇区mov al,17;读取扇区数,一个磁道有18个扇区,所以,除引导扇区的0磁道全部读出mov ah,02h;功能号,具体请查阅13H中断功能号,2号,读功能int 13h;发出中断请求 ;关闭驱动 mov dl , bootdrive ; 停止驱动器 mov edx , 0x3f2 mov al , 0x0c out dx , al ;-开始完成GDT表的构造-;cli ; 关中断 lgdt gdt_addr;寄存器gdtr;开始切换到保护模式,改变cr0寄存器的PE标志位值mov eax,cr0;扩展的AX,32位寄存器可以使用,cr0寄存器32位,读出cr0寄存器的原始;值到扩展AX寄存器中or eax,1;将PE位的值改变成1mov cr0,eaxjmp gdt_code_addr:code_32;-;BITS 32 code_32: mov ax , gdt_data_addr ; 以下三句设置 DS,ES,SS,FS,GS ; 为数据段描述表的位置 mov ds , ax mov es , ax mov ss , ax mov fs , ax mov gs , ax mov esp , 0xffff ; 设置堆栈的头指针 jmp gdt_code_addr:0x9000 ; 跳入内核, ;-;完成引导扇区填充times 510-($-$) db 0 db 0x55 db 0xAA将此段代码存储为boot.asm文件,运用NASM编译器编译为boot.img文件。2.2 内核设计void Sleep(int x);/定义延时函数unsigned char* getAddress(int row ,int col);/定义显存地址函数void myprintf(unsigned char* addr,char* msg,int delay,char color);/定义标准输出函数void main() unsigned char* addr = getAddress(0,20);char* msg = Now PC is in protected model; myprintf(addr,msg,5000,0x50);addr = getAddress(8,20);msg = 2008540327; myprintf(addr,msg,5000,0x5b);addr = getAddress(16,20);msg = konghang; myprintf(addr,msg,5000,0x9b); for(;); void myprintf(unsigned char* addr,char* msg,int delay,char color) while( *msg != 0 ) *addr+ = *msg+ ; /* 设置显示字符的ASCII码 */ *addr+ = color; /* 设置文字属性(背景色,前景色,是否闪烁等)*/ Sleep(delay); unsigned char* getAddress(int row ,int col)return (unsigned char*)(0xb8000 + (80*row + col)*2) ; void Sleep(int x) int i,j; for(i=0;ix;i+) for(j=0;j10000;j+) 将此段代码存储为123.c文件,在linux平台下运用GCC编译器对文件进行编译为123.bin二进制文件。2.3 映像文件的设计映像的文件的设计很简单,利用winhex软件,打开2.1节叙述到的boot.img文件和2.2节叙述到的123.bin文件。然后,复制123.bin文件中的16进制文件粘贴到boot.img文件的末尾,点击保存或另存为os.img,这样一张完整的软盘映像文件就

温馨提示

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

最新文档

评论

0/150

提交评论