一个轻量级操作系统的设计与实现.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:269KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

一个轻量级操作系统的设计与实现.pdf

一个轻量级操作系统的设计与实现.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

万方数据一个轻量级操作系统的设计与实现中图分类号:哪!芳,王铮引言系统设计程implementationsystem2010年第10期摘要:设计并简单实现了一个运行在Bochs虚拟机上的简单内核结构的轻量级操作系统,详细DesignandoflightweightsinglekerneloperatingFang.WANGAbstract:nis~84一描述了该系统中的进程管理,进程间通信的设计与实现。通过本系统的实现从微观上观察轻量级操作系统的行为特征,从而学习和理解内核机制。关键词:轻量级;操作系统;内核;虚拟机li曲tweight0在日常生活中,无处不在的嵌入式操作系统为人们的生活提供着便利。比如说在手机,汽车导航系统以及家用电器等许多领域,与此同时呢,人们对嵌入式操作系统提出了更高的要求。与通用操作系统相比较,嵌入式操作系统具有软硬件界限更加模糊高可靠性,系统实时高效性等特点⋯。目前,嵌入式操作系统基本上是由一个体积很小的内核及一些可以根据需要定制的系统模块组成。而本人所研究的是一个轻量级的操作系统,所以内核中只涉及到了简单的进程管理以及进程间通信等。文中开发了一个轻量级内核的操作系统,期望能更好的应用内核机制,并利用虚拟机软件,加快嵌入式系统开发的周期。11。l总体设计本文设计的轻量级操作系统是运行在使用IA32架构上的,由于操作系统是跟硬件紧密相连的,所以为了模拟一台真正的硬件,选择bochs[21这个虚拟软件,同时它具有强大的调试功能,能够缩短开发时问,提高开发效率¨。J。本文中的轻量级操作系统的开发是在Windows下编写代码。利用Vmware中运行的虚拟的Redhat来编译内核最后由bochs模拟。系统结构系统根据功能划分为进程管理,进程问通信,中断处理机制等三部分。而这三部分都是在内核中实现的。内核部分内核是操作系统最基本的部分,它是为众多应用程序提供对计算机硬件的安全访问的一部分软件,但是这种访问是有限的,所以内核通常为潜在的硬件提供大量完善的硬件抽象操作。该内核部分包文献标识码:A文章编号:1009-2552(2010)10—0084—03(重庆大学计算机学院,重庆400030)CHENGZheng(School400030,China)singlekemelthedetail.Thekemelwords:lightweight;operatingaComputerpaperdesignsimplementsbasedvirtualmachineBochs.Itdescribesdesignprocessmanagement,[PC,interruptabnormityindevelopmentwillbebenefitthoselearnerslearningOSfeaturesmechanism.Keysystem;kernel;virtual1.21.2.1收稿日期:2010—03—31作者简介:程芳(1982一),女,硕士研究生。研究方向为嵌入式操作系统。ScienceTechnology,ChongqingUniversity,Chongqingtoon’万方数据进程是制立的实体,但都有自己的程序计数器,内核机制的实现括进程管理,进程间通信,以及中断机制。主要功能(2)进程间通信,负责提供一种进程间直接或进程是操作系统最重要的一个概念。尽管每个两个ell町,分别为code和data,通过一个长跳转,强制使用movesp0赋值为processl进程表中寄存器组的top位由于创建的是一个轻量级的操作系统,设想系统中只存在若干个简单的进程,所以定义了一个数p一一一一85—如下:(1)进程管理,负责实现进程的创建,进程的调度。间接通信的方式。(3)中断机制,负责整个系统的异常与中断的处理。2进程管理进程管理主要负责进程的创建,切换及调度。2.1.1进程创建堆栈,定时器和内部状态。所以在实现简单的进程之前,需要考虑这些。因此,为了实现进程模型,操作系统引入进程表。每个进程占用一个进程表项,这些表项就包含了寄存器值,LDTselector,LDT,进程名,进程号。模仿MInix系统,构建的进程表如下:pro{p_reg;//寄存器p_name;//进程名p_id;//进程号}在创建进程表后,还需要对其中的结构作进一步的初始化。其中较为关键的是包括对系统堆栈的初始化,以及esp的指向。创建第一个process流程如下:(1)当内核拿到控制权后,把esp赋值为kernel定义的stack,之后movgdt到kernel,init(2)初始化tsa:将其ssO赋值为selector—kemerl_ds,其cap0后续赋值。(3)初始化gdt:将tsa,ldt对应数据段gdt添加到gdt中,ldt放