MOS任务同步的设计与实现毕业设计.doc

上传人:仙人指路1688 文档编号:3932035 上传时间:2023-03-28 格式:DOC 页数:37 大小:367.50KB
返回 下载 相关 举报
MOS任务同步的设计与实现毕业设计.doc_第1页
第1页 / 共37页
MOS任务同步的设计与实现毕业设计.doc_第2页
第2页 / 共37页
MOS任务同步的设计与实现毕业设计.doc_第3页
第3页 / 共37页
MOS任务同步的设计与实现毕业设计.doc_第4页
第4页 / 共37页
MOS任务同步的设计与实现毕业设计.doc_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《MOS任务同步的设计与实现毕业设计.doc》由会员分享,可在线阅读,更多相关《MOS任务同步的设计与实现毕业设计.doc(37页珍藏版)》请在三一办公上搜索。

1、TEACHERS UNIVERSITY OF TECHNOLOGY 毕业设计(论文)MOS任务同步的设计与实现 学 院 名 称: 专 业: 计算机科学与技术 班 级: 姓 名: 指导教师姓名: 指导教师职称: 2008年6月MOS任务同步的设计与实现摘 要:由于任务的并发执行,导致任务竞争资源或相互合作。在操作系统中常用信号量解决任务之间的同步与互斥。本设计主要完成了一个基于Intel 80x86 CPU实模式多任务MOS操作系统中任务同步的设计与实现的部分。主要实现4个系统调用:创建信号量、删除信号量、P操作和V操作。应用程序通过使用信号量,控制共享资源的合理使用,实现进程的同步与互斥。本文

2、给出了信号量的具体含义,详细介绍了信号量的创建、信号量的删除以及对信号量进行P、V操作的系统调用,并提出用P,V原语实现任务同步与互斥的事例。本设计模块与其他同学设计的模块进行整合后,实现了MOS任务同步的设计与实现,系统运行正常、可靠。关键词:任务;信号量;P操作;V操作;同步;互斥 Design and Implementation of MOS Tasks SynchronizationAbstract: As a result of the duty concurrent execution, causes the duty competition resources or coope

3、rate mutually.In operating system between commonly used signal quantity solution duty synchronization and mutual Exclusion.This design has mainly completed one based on Intel 80x86 CPU in the solid pattern multi-duty MOS operating system the duty synchronization design with the part which realizes.M

4、ainly realizes 4 system calls: Create signal quantity, delete signal quantity, P operation and V operation.The application procedure through the use signal quantity, the control shared resources reasonable use,realizes the advancement synchronization and mutual Exclusion.This article has given the s

5、ignal quantity concrete meaning, introduced in detail the signal quantitys creation, the signal quantitys deletion as well as carries on P, V operation system call to the signal quantity, and Proposed that operates with P, V realizes the duty synchronization and the Mutual Exclusion instance.This de

6、sign module designs after other schoolmates the module which carries on the conformity, realizes the MOS duty synchronization design with to realize, the systems operation is normal, is reliable.Keywords:Duty,Signal quantity,P operation,V operation,Synchronization,Mutual exclusion目 录序 言1第1章 概述21.1 M

7、OS系统的简介21.2 MOS系统层次结构21.3 本设计的主要任务3第2章 MOS系统开发环境与相关工具的介绍52.1 NASM汇编器的介绍52.2 Borland c+ 4.5软件介绍与安装使用52.3 Bochs虚拟机介绍与安装62.4 利用WinImage映象文件写入引导区7第3章 MOS系统中任务同步设计的需求分析93.1 实现任务同步基本技术93.2 实现任务同步主要任务11第4章 MOS系统中任务同步的设计分析134.1 信号量设计134.1.1 信号量对象的数据结构134.1.2 与信号量操作相关的系统调用134.2 用户系统调用接口设计144.3 用P、V操作实现任务间的互斥

8、154.4 用P、V操作实现任务间的同步164.5 利用信号量实现任务互斥的实践174.6 利用信号量实现任务同步的实践22第5章 系统调试265.1 命令处理程序实践步骤265.2 执行结果28结论29参考文献30致谢31MOS任务同步的设计与实现 序 言操作系统是计算机系统中的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效地工作,为用户使用计算机提供一个方便灵活、安全可靠的工作环境。效率和功能是一个操作系统可用的关键因素。操作系统的效率为计算机上所有软件的性能提高提供了平台,研究操作系统的一个最重要的原因是学习如何获得最好的性能,另外,操作系统提供了一

9、系列功能以直至用户程序的执行。在操作系统中,我们必须理解系统是如何设计的,这样才可能在编程中充分使用系统的功能。操作系统中有很多复杂的理念,我们学习操作系统要循序渐进地学习。我们将探讨在操作系统设计中出现的问题,以及分析和解决这些问题的各种方法。所有的操作系统都是在各种不同的限制条件和环境下设计的,设计的结果往往反应在系统的应用编程接口中。本设计将触及MOS操作系统的软件环境,介绍操作系统的要求,以及它们的运行情况,考察MOS系统的策略,以及本设计提供的服务。本设计第1章是以MOS操作系统为主线进行介绍,对操作系统模块有一个基本的了解。第2章比较详细地介绍了MOS系统的软硬件环境和工具的安装使

10、用。第3章介绍了本设计的任务需求。第4章详细地介绍了任务同步的设计过程,首先要对信号量进行设计和用户系统调用时的接口设计,然后通过对信号量执行的P、V操作实现任务的同步与互斥。第5章是本设计的测试结果。第1章 概述操作系统是现代计算机系统中不可缺少的基本系统软件。如果让用户去使用一台没有配置操作系统的计算机,那是难以想象的,因为它控制和管理整个计算机系统中的软硬件资源。1.1 MOS系统的简介 MOS(Mini Operating System)系统是一个简单的基于Intel 80x86 CPU实模式多任务微型操作系统。它是计算机系统中的核心系统软件,它负责控制和管理整个系统的资源并组织用户协

11、调使用这些资源,使计算机高效地工作。效率和功能是一个操作系统可用的关键因素。MOS系统能及时响应外部事件的请求,在规定的时间内完成对该任务的处理,并控制所有实时设备与实时任务协调一致地工作。MOS系统有高效的任务管理,它是基于优先级的抢占式任务调度,总是运行就绪条件下优先级最高的任务,MOS最多支持16个任务(其中用户可创建的进程数为14个,系统保留两个任务,一个是 IDLE任务,另一个是为外部命令保留)。每个任务的优先级必须是不相同的,每个任务拥有自己的上下文和堆栈,MOS任务调度快速,任务可以延时等待。MOS系统具备有效的中断管理,由于时钟中断处理程序每秒执行200次,因此,要求时钟中断处

12、理程序尽可能简捷,以缩短中断执行时间,减少系统的开销。引导程序采用汇编语言编写,用汇编语言写代码有两个优点:a.节省存储空间。将会使核心程序占用的程序与数据空间尽量减小,把更大的空间留给用户。b.提高了实时性。用其语言写成的核心程序执行时间很短,提高了用户对CPU的占用率。1.2 MOS系统层次结构与同学共同设计的MOS系统是采用层次式模块化结构, 其结构如图1-1所示。 最底层是硬件,硬件之上是ROM-BIOS,这两层是PC机本身具有的,MOS操作系统依赖于ROM-BIOS。ROM-BIOS之上是MOS-IOS(MOS Input/Output System)层,它是MOS系统的输入/输出系

13、统层,这一层的功能代码包含于引导程序中,它通过软中断INT 0x90和INT 0x91向上一层提供了若干功能,实现了读/写磁盘扇区,读/写文件分配表FAT以及查找文件占用的下一个簇号。 MOS-IOS之上是各种管理模块,有任务控制模块,信号量管理模块,时钟管理模块,内存管理模块,文件系统模块,I/O管理模块,MOS系统调用接口模块,MOS命令处理程序模块,用户调用MOS系统调用接口模块。本设计是信号量管理模块,其主要设计的源代码在MOS_SEM.H和MOS_SEM.CPP中。应用程序用户调用MOS系统调用接口MOS命令处理程序MOS系统调用接口任务管理模块信号量管理模块时钟管理模块内存管理模块

14、文件系统模块I/O管理模块MOS-IOSROM-BIOS硬件图1-1 MOS操作系统层次结构1.3 本设计的主要任务在顺序执行指令的处理器上,任务的执行是按序的,但是,在计算机系统中往往有若干个任务请求执行,若一个任务的执行没有结束前允许其他任务也开始执行,则说明这些任务是可以同时执行的,可同时执行的任务交替地占用处理器。若系统中存在一组可同时执行的任务,则说该组任务具有并发性,并发任务之间可能要共享资源。由于并发任务执行的相对速度受自身或外界的因素影响,也受任务调度策略的制约,并发任务在访问共享资源时可能会出现与时间相关的错误。多道程序系统中并发运行的任务之间存在相互制约的关系,这种相互制约

15、的关系称作任务间的相互作用。任务之间相互作用有“任务同步”和“任务互斥”两种方式。把并发任务之间共同使用的资源称“临界资源”,并发任务中涉及到临界资源的程序段称为“临界区”。任务互斥是指并发任务互斥地进入相关临界区,即每次只允许一个任务进入临界区,当有一个任务在它的临界区执行时就不允许其他任务进入其临界区,直到该任务退出临界区为止。任务是指任务之间的协同工作关系,是指一些任务相互合作,共同完成一项大任务。可以说,任务互斥是一种特殊的任务同步关系。实现任务互斥、任务同步的机制统称“同步机制”。P、V操作是一种简单的、易于实现的同步机制,它包括两个原语,“P操作”和“V操作”,P、V操作是对信号量

16、实施操作,用P、V操作可实现任务的同步和任务的互斥,若把信号量与共享资源对应起来,可给出信号量的物理含义(假定信号量用S表示):S0时,S表示可用资源数。S=0时,表示没有可用资源或表示不允许任务再进入临界区。SSettings”菜单,选择其中的Image设置页。设置Compression为“None”(即把指示标位拉到最左边)。 (2) 创建映像文件。选择菜单File-New,此时会弹出一个软盘格式选择框。选择容量为1.44MB的格式。 (3) 选择引导扇区属性菜单项 “Image-Boot Sector properties” , 单击对话框中的MS-DOS 按钮,然后单击确定。(4) 以

17、MOS.IMG为文件名保存文件。 注意,在保存文件对话框中“保存类型”一定要选择“All files (*.*)”,否则创建的映像文件中会包含一些WinImage自己的信息,从而会造成映像文件在Bochs下不能正常使用。可以通过查看文件长度来确定新创建映像文件是否符合要求。标准1.44MB软盘的容量应该是1474560B。 2使用工具WriteBoot.exe将boot.bin写到映像文件MOS.IMG的引导区。 3使用WinImage打开MOS.IMG将MOS.BIN添加到映像文件中去。 4保存MOS.IMG,在Bochs环境中启动系统,其运行结果同用软盘启动类似。第3章 MOS系统中任务同

18、步设计的需求分析3.1 实现任务同步基本技术本MOS系统主要是为了实现对任务调度管理的设计和处理。由于是一个虚拟的操作系统,因此所有的操作和功能都在内存中实现,力图集中反映出模块最本质的东西。本MOS系统以命令行作为人机交互的接口,设计了一些简单的命令实现了用户对同步任务的有效管理。实现同步的基本技术是阻塞一个任务直到一个特定的条件满足为止。因此为实现同步,一个任务Pi可以被阻塞直到任务Pk执行到一个特定的点为止。任务之间的同步不能由自己来解决,必须通过系统核心信号量上施行的两种操作P、V操作来加以控制与协调。实现任务同步包括任务的互斥和任务的同步两个方面,是操作系统管理共享资源的一种手段。用

19、P、V操作解决任务同步问题时首先应确定问题是属于任务互斥还是任务同步,或是互斥与同步的混合问题。然后根据共享资源的数量以及使用共享资源的规则正确的定义信号量及其初值。然后决定在不同信号量上应实施的P操作和V操作,用这些P操作和V操作保证并发任务正确地使用共享资源。操作系统正是利用信号量的状态对任务和资源进行管理,从物理意义上理解,P操作相当于申请资源;V操作相当于释放资源。任务调度,是任务同步过程中的一部分。其主要功能是根据一定的算法将cpu分派给就绪队列中的一个任务。任务调度是操作系统中最基本的一种调度,其调度策略的优劣直接影响整个系统的性能。在MOS系统中任务调度采用优先级高者优先调度算法

20、,且采用静态优先级方式,即任务在创建时设定了优先级,则其以后的活动中优先级将不在改变。这要求在创建任务的时候,为每个被创建的任务分配一个优先级。在MOS系统中,将系统的状态分为三种(如图3-1)。这三种基本调度状态是:执行状态,当一个任务已分配到处理机,它的程序正由处理机执行时,称此任务处于执行状态。就绪状态,如任务已具备执行件,但是因为处理机已由其它任务占用,所以暂时不能执行而等待分配处理机,称此种任务处于就绪状态,有时也称为可运行状态封锁状态,任务因等待某一事件(如等待某一输入、输出操作完成)而暂时不能运行的状态称为封锁状态。此时即使处理机空闲。它也无法使用。这种状态有时也被称为不可运行状

21、态或挂起状态。正在中央处理机上运行的任务称为该处理机的现运行任务。在任何时候,一个系统中的现运行任务数一定少于或等于可用处理机数。运行就绪阻塞进程调度程序把处理机分配给优先级最高的进程被抢先某事件发生(如I/O完成)进程因某事件(如等待I/O完成)而变成阻塞状态 图3-1 MOS系统中任务三状态转换图任务控制块是对任务进行控制和管理的主要数据结构。在MOS系统中为了简化对任务的控制和管理,所有进行除优先级可以不同外,其地位都是平等的,也即所有的任务像兄弟一般,不会由于某一任务创建了另一任务,而使这两个任务之间成为父子关系。MOS系统中系统调用的处理过程如下:1.在核心态中调用系统调用和调用一般

22、过程相似,直接调用其子程序即可。2.在用户态中使用系统调用,需要处理机的状态由用户态转为核心态,然后执行相应的系统功能,系统调用的入库是INT Ox80指令,通过执行该软件中断指令来实现用户态到核心态的转换,其具体步骤可描述如下(如图3-2 MOS系统调用过程):(1) 保护现场;(2) 将输入参数放入指定的寄存器中,MOS系统通过寄存器传递输入参数;(3) 执行INT0x80指令,进入核心态,0x80号中断向量的中断处理程序根据功能号转到相应的系统调用子程序执行;(4) 将系统调用返回参数放入指定寄存器,中断向量的中断处理程序执行结束返回;(5) 将输出参数存入指定变量;(6)恢复现场,返回

23、用户态;(7)系统调用结束; INT 0x80中断处理程序 系统调用处理子程序保护现场INT 0x80处理输出参数恢复现场处理输入参数 取系统调用功能号i处理输出参数中断返回 0号系统调用子程序1号系统调用子程序i号系统调用子程序n号系统调用子程序图3-2 MOS系统调用过程任务的同步:(1)创建信号量:INT16USysCreateSem(INT16U count)(2)释放信号量:INT16USysdelSem(INT16U delsem)(3)P操作(使得信息量的值减去1)(4)V操作(使得信号量的值加1)3.2 实现任务同步主要任务任务的同步和互斥中:信号量的实现,用户系统接口的调用,

24、利用信号量实现任务同步。信号量是实现任务同步与互斥的主要工具,在MOS系统中设计了四个与信号量相关的系统调用,分别是创建信号量、释放信号量、P操作和V操作,并且在实践中利用信号量实现了任务的互斥与同步操作。利用信号量实现任务之间的互斥时,为了正确地解决一组共行的n个任务对临界资源的使用,可以引入一个互斥信号量,用mutex表示。对于互斥使用的资源,其初始值只能为1。任何欲进入临界区执行的任务,必须先对互斥信号量mutex执行P操作,即使mutex值减1,若减1后mutex值为0,表示临界资源空闲,执行P操作任务可以进入临界区执行;若mutex减1的值为负,说明已有任务占有临界资源,执行P操作任

25、务必须等待,直到临界资源空闲为止。正在临界区执行的任务,完成临界区操作后,通过执行V操作释放临界资源,使等待使用临界资源的任务使用。这样,利用信号量方便的解决了临界区的互斥。信号量的取值范围是+1-(n-1)。信号量的值为负,说明有一个任务正在临界区执行,其它的正排在信号量等待队列中等待,等待的任务数等于信号量的绝对值。 任务的同步是指相互合作的一组共行任务,各自以独立的、不可预知的速度向前推进,在前进过程中彼此之间需要相互协调步伐,才能更好完成同一项任务。为了解决任务的同步,同样也是要引入信号量。第4章 MOS系统中任务同步的设计分析4.1 信号量设计4.1.1 信号量对象的数据结构在源程序

26、文件MOS_SEM.H中定义的信号量数据结构类型如下: typedef struct mos_semaphore INT16U COUNT; /* 信号量的值 */ INT16U MOSSemHead; /* 信号量等待队列头指针(队首) */ INT16U MOSSemTail; /* 信号量等待队列头指针(队尾) */ MOS_Semaphore; 它有三个成员,其中COUNT记录信号量的值,MOSSemHead和MOSSemTail是两个指针,分别指向等待信号量的队首与队尾的任务。 在MOS系统中,最多可创建16个信号量,因此要定义具有16个数据元素的MOS_Semaphore类型的数组

27、变量MosSem16,由16位无符号变量ManageSem对其进行管理,使得该变量的每一位对应一个MosSem元素,当其值为0时,它对应的元素是一个可用的数组元素,否则,说明它对应的元素正在管理着一个信号量。使用控制台的原因是为了原理性的讲述一些本软件的内部机制。同时,不用去关心那些和用户打交道的事情。4.1.2 与信号量操作相关的系统调用在MOS系统中提供了四个与信号量操作有关的系统调用,分别是创建和释放信号量、对信号量进行P和V操作。 (1) 创建信号量:INT16U SysCreateSem (INT16U count) 在MosSem中找一个空闲的元素,若找不到,则创建信号量失败,否则

28、,将该空闲元素对应的变量ManageSem对应位置1,表示该元素对应一个已存在的信号量对象。然后对该信号量数据结构初始化,使其信号量的初值为count,若信号量等待队列为空,返回该信号量对应数组元素的下标,作为今后对该信号量对象访问的标识。 (2) 释放信号量:INT16U SysDelSem (INT16U delSem) 被释放的信号量由形参delSem说明,它是指被释放信号量对象的标识。如果该信号量的等待队列中还有任务处于等待状态,或delSem不是信号量,则释放信号量操作失败。否 则,释放该信号量,只需将该信号量对应的ManageSem位清0即可。 (3) P操作:void P (IN

29、T16U SemNum) 对信息量执行P操作,使得信息量的值减去1,若减1以后的值小于0,说明目前没有可用的资源,请求P操作的任务将会阻塞在该信号量的等待队列中,并引起任务调度。否则,当前任务申请到资源后继续运行。 (4) V操作:void V (INT16U SemNum) 对信息量执行V操作,使得信息量的值加1,若在加1后的值小于等于0,说明有任务处于等待信号量的过程中,此时,需要将该信号量等待队列中处于队首的任务唤醒,插入就 绪链表中,并引起任务调度。否则,当前任务继续运行。 信号量系统调用的源代码在MOS_SEM.H和MOS_SEM.CPP文件中。4.2 用户系统调用接口设计需要给用户

30、使用MOS系统提供系统调用接口。在USERSYS.CPP文件中,增加了4个与信号量相关的系统调用接口,它们分别是: 1INT16U MosCreateSem(INT16U Value) 功能:创建一个信号量对象。 输入参数: Value:信号量初值。 输出参数:等于0xffff,创建信号量失败;否则成功,返回值为信号量对象的标识。 2INT16U MosDelSem(INT16U sem) 功能:删除一个信号量对象。 输入参数: sem:信号量对象标识。 输出参数:等于0xffff,删除失败,说明信号量等待队列中有任务处于等待状态;否则, 成功。 3void P(INT16U sem) 功能:

31、对信号量执行P操作。 输入参数: Sem:信号量对象标识。 输出参数:无。 4void V(INT16U sem) 功能:对信号量执行V操作。 输入参数: sem:信号量对象标识。 输出参数:无。4.3 用P、V操作实现任务间的互斥假设有i个临界资源提供给多个任务共享,对其实现互斥使用的方法为:(1)针对每一类临界资源设一个互斥信号量mutex,若某类临界资源有n个,初值为n;如果只有一个或者抽象表示只能一个任务进入,则初值设为1。(2)在每个任务中对设计临界资源i的临界区做如下处理,如图4-1 互斥模型所示。P(mutex);临界区V(mutex);图4-1 P、V操作实现互斥模型如果令信号

32、量S初值为1,任务A、B竞争进入临界区的程序可以写成如图4-2:任务A 任务BP(S); P(S); 临界区操作; 临界区操作;V(S); V(S);图4-2 任务A、B竞争临界区示意图4.4 用P、V操作实现任务间的同步用P、V操作实现同步的算法可以简单归纳如下:(1)分析每个任务的执行条件和释放条件,针对每个执行条件设置一个信号量,其初值根据初始情况确定。(2)对每个任务做如下处理。 在请求条件处执行P操作(执行条件信号量) 在释放条件处执行V操作(释放条件信号量)。互斥问题中每个任务的同一个临界区执行的P、V操作的信号量相同;而同步问题中每个任务中执行的P、V操作的信号量不同,因为统一任

33、务所需要的执行条件和释放条件是不同的,这是解决这两类问题的算法描述的不同之处。任务A 任务B 把数据从键盘送缓冲区 等待A的信号 (等待计算) 给B发信号 (缓冲区已满) 对缓冲区中的数据进行计算 等待B发回信号(等待把下批数据送缓冲区) 给A发信号 (缓冲区中数据已取走)图4-3 任务同步示意图如图4-3所示同步关系,设两个信号量S1和S2,且赋予它们的初值为0,S1表示缓冲是否装满信息,S2表示缓冲区中信息是否取走。程序可写成如图4-4 P、V操作实现任务同步模型所示。 任务A 任务B : : : : 把信息送入缓冲区 P(S1); V(S1); 把信息从缓冲区取走; P(S2); V(S2); : : : : 图4-4 P、V原语实现任务同步模型4.5 利用信号量实现任务互斥的实践 多个任务对临界资源的使用必须互斥,在本设计中我们来考察两个实例,它们之间的差别是:一个对临界资源无序地使用,另一个例子利用信号量互斥地使用临界资源。第一个例子在MOSCH9 BEX1目录下,第二个例子在MOSCH9BEX2目录下。 例子1,共享资源是一个变量share,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号