《微型操作系统的设计与实现1.pdf》由会员分享,可在线阅读,更多相关《微型操作系统的设计与实现1.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 1MOS 微型操作系统的设计与实现微型操作系统的设计与实现1 李红卫(江苏技术师范学院 计算机科学与工程学院,江苏 常州 213001)摘要摘要:本文介绍一个基于Intel 80 x86 CPU实模式下的多任务微型操作系统MOS的设计与实现。着重阐述了MOS的层次结构、内存布局、引导程序设计、进程管理、上下文切换、信号量管理、内存管理、文件系统、I/O管理、用户接口以及MOS命令处理程序。MOS可作为嵌入式操作系统,它易于扩充和移植。关键字关键字:MOS 微型操作系统;层次结构;进程;上下文切换 中图分类号:TP316 文献标识码:A Design and Implementation of
2、 MOS Mini Operating System Li Hongwei(School of Computer Science and Engineering,Jiangsu Teachers University of Technology,Changzhou 213001,China)Abstract:The paper introduces the design and the Implementation of a simple multi-task mini operating system(MOS)based on Intel 80 x86 CPU real model.It e
3、xpounds the hierarchical structure of MOS,memory layout,design of bootstrap,process management,context switch,semaphore management,memory management,file system,I/O management,user interface and MOS command processor.MOS can be as a embedded operating system.Its extensible and portable.Key words:MOS
4、 mini operating system;hierarchical structure;process;context switch 1 引言引言 在嵌入式系统开发中往往需要一个微型操作系统,而目前常用的操作系统复杂而庞大,为此,本文提出设计一个简单的基于 Intel 80 x86 CPU 实模式下的多任务实时微型操作系统MOS(Mini Operating System),实现了处理机与进程管理、存储管理、设备管理、文件系统,中断管理等功能,能很好地应用在嵌入式系统开发中。2 MOS 系统结构及内存布局系统结构及内存布局 MOS微型操作系统采用层次式模块化结构,如图1所示。最底层的硬件和
5、硬件之上的ROM-BIOS是PC机本身具有的,MOS依赖于ROM-BIOS。MOS-IOS(MOS Input/Output System)层是MOS系统的输入/输出层,提供了基本的输入/输出功能。在MOS-IOS之上是各种管理模块,包括进程控制、信号量管理、时钟管理、内存管理、文件系统和I/O管理等功能,这些功能通过MOS提供的系统调用为用户程序服务。MOS命令处理程序是用户操作计算机的接口。MOS系统运行于Intel 80 x86 CPU实模式下,可管理的内存空间为1MB,图2是MOS系统内存布局。整个内存空间分为三部分,第一部分是系统空间,从0 x00000至0 x31fff共200KB
6、;第二部分是用户空间,从0 x32000至0 x9ffff共440KB;第三部分是PC机保留的空间,从0 xa0000至0 xfffff共384KB。3 MOS引导程序的设计引导程序的设计 当PC机加电后,首先执行ROM-BIOS初始化系统,然后将引导盘中的引导记录装入内存0 x7C00处并执行,由引导记录完成操作系统的加载。MOS系统以1.44MB的3.5寸软磁盘为载体,其引导记录在软盘的0面0道1扇区。本系统充分利用这一扇区的512个字节实现更多的 1 江苏省高校自然科学研究资助项目:项目名称:RTEMS嵌入式实时操作系统的研究,颁发部门:江苏省教育厅,编号:06KJD520052,项目主
7、请人:李红卫。2功能,通过软中断INT 0 x90实现读/写磁盘扇区,读/写文件分配表,查找文件簇号等基本功能。图1的MOS-IOS的功能代码包含在引导程序中。引导程序的主要功能是初始化MOS运行环境,把MOS系统装入内存,并将CPU控制权交给MOS,因此,引导程序需要在磁盘中寻找MOS系统文件,找到后将其装入内存并运行。4 MOS各功能模块的设计各功能模块的设计 4.1 进程管理进程管理 MOS系统采用可剥夺调度方式,以优先级高者优先的调度算法分配处理机。进程可在就绪、运行和阻塞三个状态之间变迁,其状态转换如图3所示。获得处理机的进程处于运行状态,在就绪链表中等待处理机的进程为就绪状态,运行
8、中的进程因等待事件的发生进入阻塞状态。用于进程控制的系统调用有三个:(1)创建进程 SysCreateProc:创建进程的主要工作是为新创建的进程申请一个空闲的进程控制块PCB、一个堆栈,并初始化堆栈和填写PCB信息,然后以优先级大小将新创建的进程插入到就绪链表中,等待进程调度程序的调度。(2)删除进程 SysDelProc:处于运行状态的进程可将自己删除。(3)进程延迟 SysTimeDly:执行该系统调用使处于运行状态的进程睡眠若干个时钟。当某一进程睡眠时间到,会由时钟中断处理程序将其唤醒。中断向量表(1KB)0 x00000 BIOS数据区(256B)0 x00400 磁盘缓冲区(1KB
9、)0 x00500 FAT表缓冲区(5KB)0 x00900 引导程序0 x01D00 引导程序的栈空间0 x01F00 MOS(64KB)0 x02000 0 x12000 0 x32000 用户空间(440KB)0 xA0000 视频显示 RAM(128KB)存储堆和数据区(128KB)0 xC0000 VGA/其他卡上的 ROM BIOS0 xE0000 其他 BIOS 映射区 0 xF0000 ROM BIOS 映射区 0 xFFFFF 图 2 MOS系统内存布局图硬件 ROM-BIOS MOS-IOS 进程控制模块 信号量管理模块时钟管理模块内存管理模块文件系统模块 I/O管理模块M
10、OS系统调用接口 图 1 MOS操作系统层次结构 MOS命令处理程序 用户调用MOS系统调用接口应用程序 34.2 进程上下文切换进程上下文切换 因MOS系统采用优先级高者优先调度算法,因此,就绪链表中的进程需按优先级大小进行排列,其链首进程就是当前正在运行的进程。涉及进程调度的两个全局变量,一个是MOSPCBCur,它代表当前正在处理机上运行的进程,一个是MOSRDLPCB,它代表就绪链表的首进程。通常情况下这两个变量值应该相等,若不相等,则说明当前就绪链表发生了变化,或者来了一个更高优先级的进程,或者当前运行的进程由于阻塞而离开就绪链表,此时进程调度程序应重新选择就绪链表中的首进程来运行。
11、当发生进程调度时,最重要的步骤是进程上下文切换。在MOS系统中进程的运行环境存放在各自的堆栈中,因此上下文切换的工作不难想像,其实现步骤如下:(1)将当前运行进程的运行环境保存在它的堆栈中;(2)将堆栈信息(堆栈的段地址和栈顶指针)保存在它的进程控制块PCB中;(3)将MOSRDLPCB的值赋给变量MOSPCBCur,使就绪链表的队首进程成为当前运行进程;(4)从MOSPCBCur所指进程的进程控制块PCB中恢复该进程的堆栈空间;(5)从栈中恢复MOSPCBCur所指进程的运行环境;(6)实现进程上下文切换。MOS系统的进程上下文切换是通过执行软中断指令INT 0 x81实现的,在进入和退出该
12、中断处理程序时所用的堆栈是不一样的,进入时用的是被切换下来的进程的堆栈,退出时用的是将要运行的进程的堆栈,MOS系统正是利用这一特点实现进程上下文切换。4.3 信号量管理信号量管理 在MOS系统中定义了信号量,利用信号量实现进程的同步与互斥。与信号量相关的系统调用有四个:(1)创建信号量 SysCreateSem:创建一个信号量对象,并为该信号量赋初值,返回信号量对象标识,在应用程序中根据信号量对象标识对信号量进程操作。(2)删除信号量 SysDelSem:删除指定的信号量。(3)P操作 P:对指定的信号量对象执行P操作,当执行P操作后,信号量值小于0时,进程将阻塞在信号量的等待队列中,并引起
13、进程调度,否则调用者进程继续运行。(4)V操作 V:对指定的信号量对象执行V操作,当信号量值小于等于0时,将唤醒信号量等待队列中的队首进程,插入就绪链表中,并引起进程调度,否则调用者进程继续运行。4.4 内存管理内存管理 在MOS系统中,从内存地址0 x22000开始的64KB内存作为内存堆供应用程序使用。采用首次适应可变式分区存储管理技术,使用带辅助位示图的位示图数据结构对内存进行管理。将内存按节划分,每一节大小固定,比如32B,位示图中的每一位对应一个节,由位的值反映该节是已分配状态(0)还是未分配状态(1)。辅助位示图与位示图结合起来实现内存的回收。在初始化时,位示图的所有位为1,表示所
14、有内存空闲,辅助位示图的所有位为0,表示每一节都可以是分配的起点。当某一进程申请大小为N节的一段内存,则在位示图中查找连续N个为1的位,找到后将这N位清0,其对应的辅助位示图除第一位不变仍为0外其余位置1。即在辅助位示图中,值为1的位表示该位对应的节与它的前一位对应的节属于同一个段;值为0运行就绪 阻塞进程调度被抢先等待事件 的发生某事件发生 图 3 MOS 系统中进程三状态转换图 4的位表示该位对应的节是一个段的起始节,或表示这个节未分配出去。如图4所示位示图与辅助位示图,从位示图的前两行看,已分配出去的节有:第0节至第4节,第7节至第12节。对照辅助位图可知,已分配出去的11节是4个段,其
15、中第1段占用第0节至第3节,第2段占用第4节,第3段占用第7节至第10节,第4段占用第11节和第12节。0 0 0 0 0 1 1 00 1 1 1 0 0 0 00 0 0 0 0 1 1 11 1 1 0 1 0 0 01 1 1 1 1 1 1 10 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0(a)位示图 (b)辅助位示图 图 4 位示图与辅助位示图内存管理 根据位示图和辅助位示图非常容易地实现内存的分配和回收。在MOS系统中提供了两个用于内存管理的系统调用,分别是:(1)申请内存 SysMemAllocate:申请N节大小的内存空间。(2
16、)释放内存 SysMemFree:释放内存空间,提供释放内存空间的起始地址即可将内存归还给系统。4.5 文件系统文件系统 FAT文件系统是常用的文件系统,在MOS系统中实现了FAT文件系统,并提供了与文件操作相关的5个系统调用,分别是:(1)在磁盘上创建一个新文件 SysCreateFile。(2)打开一个已存在的文件 SysOpenFile。(3)写文件 SysWriteFile:向文件中写信息。(4)读文件 SysReadFile:读文件内容。(5)关闭文件 SysCloseFile:关闭已打开的文件。4.6 I/O 管理管理 由于外围设备特性各异,因而I/O管理是操作系统中最复杂的模块。
17、在MOS系统中实现了串行通信设备管理,提供了4个用于串行通信设备管理的系统调用,分别是:(1)打开串行通信设备 SysOpenIO:该系统调用的主要功能是对串口COM1和COM2初始化,并允许8259A可响应它们发来的中断。初始化时设置传输位8位,停止位1位,无校验码,波特率为19200bps。(2)写串行通信设备 SysWriteIO:首先将要写的信息放到输出缓冲区中;其次,允许串口产生发送中断信号请求。(3)读串行通信设备 SysReadIO:因串行通信中断处理程序处理接收中断时,已将数据存入输入缓冲区中,故该系统调用,只需到输入缓冲区中取数据即可。若输入缓冲区为空,则返回0 xff表示无
18、数据可读,否则从输入缓冲区中读一个数据返回。(4)关闭串行通信设备 SysCloseIO:将串口中断屏蔽即可实现关闭串行通信设备。4.7 用户接口用户接口 MOS操作系统向用户提供了18个系统调用,系统调用总的入口地址通过中断向量实现,其中断向量码为0 x80。当用户使用系统调用时,将功能号和各输入参数放入指定的寄存器中,通过执行软中断指令INT 0 x80实现系统调用。上述过程需要使用汇编指令来实现,这给用户编程带来一定的困难,因此,MOS系统向用户提供以函数形式使用系统调用的功能,比如创建进程系统调用SysCreateProc,在用户编程创建进程时使用的函数原型是:unsignd MosC
19、reateProc(unsignd segV,unsignd offV,char prio),该函数有三个形参,前两个形参分别是被创建进程代码的段地址值和偏移量,第三个形参是被创建进程的优先级。函数返回值为被创建进程的进程标识。通过使用函数简化了用户程序的设计。4.8 MOS 命令处理程序命令处理程序 MOS命令处理程序给用户使用计算机提供一个控制台文本接口,通过键盘输入命令。在系统启动时,MOS命令处理程序创建一个IDLE的系统进程,其优先级最低,由它负责接收用户键盘输入,并执行相应的命令。命令分为内部命令和外部命令,内部命令只有一个显 5示磁盘目录的DIR命令,外部命令是以文件的形式存储在
20、磁盘中,文件采用EXE可执行文件格式。当IDLE接收到外部命令时,在磁盘中查找外部命令,并将其装入内存为其创建新的进程,然后让它运行。当系统中有用户进程时,IDLE一直处于循环等待用户进程的结束,一旦系统中没有用户进程,IDLE又重新接收键盘命令。5 结束语结束语 本文创新点:基于 PC 机设计和实现一个简单的功能较全的 MOS 多任务微型操作系统,整个系统源代码 2 千余行,采用层次结构设计模型,除引导程序与部分关键代码使用汇编语言编写外,大部分代码使用 C 语言编写,易于对系统扩充和移植。目前,作者正着手将MOS 移植到基于 ARM 技术的 S3C44B0X 处理器上。另外,将 MOS 系
21、统应用在操作系统课程的实践教学中也是一个不错的选择。参考文献:参考文献:1 Labrosse J J.邵贝贝译.源码公开的实时嵌入式操作系统UC/OS-II(第 2 版)M.北京:北京航空航天大学出版社,2003 2 于渊.自己动手写操作系统M.北京:电子工业出版社,2006 3 张志义,谢凯年 嵌入式实时操作系统 PetOS 设计与实现 J 微计算机信息,2007,7-2:43-45 作者简介:李红卫(1966-),男(汉族),山西阳城人,江苏技术师范学院副教授,硕士,主要研究方向:嵌入式操作系统。Biography:Li Hongwei(1966-),male,Associate professor of Jiangsu Teachers University of Technology,Master degree,Research Area:Embedded Operating System.(213001 江苏技术师范学院)李红卫
限制150内