MOS任务同步的设计与实现 毕业设计.docx
- 文档编号:10214148
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:34
- 大小:325.93KB
MOS任务同步的设计与实现 毕业设计.docx
《MOS任务同步的设计与实现 毕业设计.docx》由会员分享,可在线阅读,更多相关《MOS任务同步的设计与实现 毕业设计.docx(34页珍藏版)》请在冰豆网上搜索。
MOS任务同步的设计与实现毕业设计
TEACHERSUNIVERSITYOFTECHNOLOGY
毕业设计(论文)
MOS任务同步的设计与实现
学院名称:
专业:
计算机科学与技术
班级:
姓名:
指导教师姓名:
指导教师职称:
2008年6月
MOS任务同步的设计与实现
摘要:
由于任务的并发执行,导致任务竞争资源或相互合作。
在操作系统中常用信号量解决任务之间的同步与互斥。
本设计主要完成了一个基于Intel80x86CPU实模式多任务MOS操作系统中任务同步的设计与实现的部分。
主要实现4个系统调用:
创建信号量、删除信号量、P操作和V操作。
应用程序通过使用信号量,控制共享资源的合理使用,实现进程的同步与互斥。
本文给出了信号量的具体含义,详细介绍了信号量的创建、信号量的删除以及对信号量进行P、V操作的系统调用,并提出用P,V原语实现任务同步与互斥的事例。
本设计模块与其他同学设计的模块进行整合后,实现了MOS任务同步的设计与实现,系统运行正常、可靠。
关键词:
任务;信号量;P操作;V操作;同步;互斥
DesignandImplementationofMOSTasksSynchronization
Abstract:
Asaresultofthedutyconcurrentexecution,causesthedutycompetitionresourcesorcooperatemutually.InoperatingsystembetweencommonlyusedsignalquantitysolutiondutysynchronizationandmutualExclusion.ThisdesignhasmainlycompletedonebasedonIntel80x86CPUinthesolidpatternmulti-dutyMOSoperatingsystemthedutysynchronizationdesignwiththepartwhichrealizes.Mainlyrealizes4systemcalls:
Createsignalquantity,deletesignalquantity,PoperationandVoperation.Theapplicationprocedurethroughtheusesignalquantity,thecontrolsharedresource'sreasonableuse,realizestheadvancementsynchronizationandmutualExclusion.Thisarticlehasgiventhesignalquantityconcretemeaning,introducedindetailthesignalquantity'screation,thesignalquantity'sdeletionaswellascarriesonP,Voperationsystemcalltothesignalquantity,andProposedthatoperateswithP,VrealizesthedutysynchronizationandtheMutualExclusioninstance.Thisdesignmoduledesignsafterotherschoolmatesthemodulewhichcarriesontheconformity,realizestheMOSdutysynchronizationdesignwithtorealize,thesystemsoperationisnormal,isreliable.
Keywords:
Duty,Signalquantity,Poperation,Voperation,Synchronization,
Mutualexclusion
MOS任务同步的设计与实现
序言
操作系统是计算机系统中的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效地工作,为用户使用计算机提供一个方便灵活、安全可靠的工作环境。
效率和功能是一个操作系统可用的关键因素。
操作系统的效率为计算机上所有软件的性能提高提供了平台,研究操作系统的一个最重要的原因是学习如何获得最好的性能,另外,操作系统提供了一系列功能以直至用户程序的执行。
在操作系统中,我们必须理解系统是如何设计的,这样才可能在编程中充分使用系统的功能。
操作系统中有很多复杂的理念,我们学习操作系统要循序渐进地学习。
我们将探讨在操作系统设计中出现的问题,以及分析和解决这些问题的各种方法。
所有的操作系统都是在各种不同的限制条件和环境下设计的,设计的结果往往反应在系统的应用编程接口中。
本设计将触及MOS操作系统的软件环境,介绍操作系统的要求,以及它们的运行情况,考察MOS系统的策略,以及本设计提供的服务。
本设计第1章是以MOS操作系统为主线进行介绍,对操作系统模块有一个基本的了解。
第2章比较详细地介绍了MOS系统的软硬件环境和工具的安装使用。
第3章介绍了本设计的任务需求。
第4章详细地介绍了任务同步的设计过程,首先要对信号量进行设计和用户系统调用时的接口设计,然后通过对信号量执行的P、V操作实现任务的同步与互斥。
第5章是本设计的测试结果。
第1章概述
操作系统是现代计算机系统中不可缺少的基本系统软件。
如果让用户去使用一台没有配置操作系统的计算机,那是难以想象的,因为它控制和管理整个计算机系统中的软硬件资源。
1.1MOS系统的简介
MOS(MiniOperatingSystem)系统是一个简单的基于Intel80x86CPU实模式多任务微型操作系统。
它是计算机系统中的核心系统软件,它负责控制和管理整个系统的资源并组织用户协调使用这些资源,使计算机高效地工作。
效率和功能是一个操作系统可用的关键因素。
MOS系统能及时响应外部事件的请求,在规定的时间内完成对该任务的处理,并控制所有实时设备与实时任务协调一致地工作。
MOS系统有高效的任务管理,它是基于优先级的抢占式任务调度,总是运行就绪条件下优先级最高的任务,MOS最多支持16个任务(其中用户可创建的进程数为14个,系统保留两个任务,一个是IDLE任务,另一个是为外部命令保留)。
每个任务的优先级必须是不相同的,每个任务拥有自己的上下文和堆栈,MOS任务调度快速,任务可以延时等待。
MOS系统具备有效的中断管理,由于时钟中断处理程序每秒执行200次,因此,要求时钟中断处理程序尽可能简捷,以缩短中断执行时间,减少系统的开销。
引导程序采用汇编语言编写,用汇编语言写代码有两个优点:
a.节省存储空间。
将会使核心程序占用的程序与数据空间尽量减小,把更大的空间留给用户。
b.提高了实时性。
用其语言写成的核心程序执行时间很短,提高了用户对CPU的占用率。
1.2MOS系统层次结构
与同学共同设计的MOS系统是采用层次式模块化结构,其结构如图1-1所示。
最底层是硬件,硬件之上是ROM-BIOS,这两层是PC机本身具有的,MOS操作系统依赖于ROM-BIOS。
ROM-BIOS之上是MOS-IOS(MOSInput/OutputSystem)层,它是MOS系统的输入/输出系统层,这一层的功能代码包含于引导程序中,它通过软中断INT0x90和INT0x91向上一层提供了若干功能,实现了读/写磁盘扇区,读/写文件分配表FAT以及查找文件占用的下一个簇号。
MOS-IOS之上是各种管理模块,有任务控制模块,信号量管理模块,时钟管理模块,内存管理模块,文件系统模块,I/O管理模块,MOS系统调用接口模块,MOS命令处理程序模块,用户调用MOS系统调用接口模块。
本设计是信号量管理模块,其主要设计的源代码在MOS_SEM.H和MOS_SEM.CPP中。
图1-1MOS操作系统层次结构
1.3本设计的主要任务
在顺序执行指令的处理器上,任务的执行是按序的,但是,在计算机系统中往往有若干个任务请求执行,若一个任务的执行没有结束前允许其他任务也开始执行,则说明这些任务是可以同时执行的,可同时执行的任务交替地占用处理器。
若系统中存在一组可同时执行的任务,则说该组任务具有并发性,并发任务之间可能要共享资源。
由于并发任务执行的相对速度受自身或外界的因素影响,也受任务调度策略的制约,并发任务在访问共享资源时可能会出现与时间相关的错误。
多道程序系统中并发运行的任务之间存在相互制约的关系,这种相互制约的关系称作任务间的相互作用。
任务之间相互作用有“任务同步”和“任务互斥”两种方式。
把并发任务之间共同使用的资源称“临界资源”,并发任务中涉及到临界资源的程序段称为“临界区”。
任务互斥是指并发任务互斥地进入相关临界区,即每次只允许一个任务进入临界区,当有一个任务在它的临界区执行时就不允许其他任务进入其临界区,直到该任务退出临界区为止。
任务是指任务之间的协同工作关系,是指一些任务相互合作,共同完成一项大任务。
可以说,任务互斥是一种特殊的任务同步关系。
实现任务互斥、任务同步的机制统称“同步机制”。
P、V操作是一种简单的、易于实现的同步机制,它包括两个原语,“P操作”和“V操作”,P、V操作是对信号量实施操作,用P、V操作可实现任务的同步和任务的互斥,若把信号量与共享资源对应起来,可给出信号量的物理含义(假定信号量用S表示):
S>0时,S表示可用资源数。
S=0时,表示没有可用资源或表示不允许任务再进入临界区。
S<0时,|S|表示等待资源的任务个数或表示等待进入临界区的任务个数。
P(S)相当于申请一个资源,任务在使用共享资源前可调用P操作。
V(S)相当于释放一个资源,任务可调用V操作来归还共享资源。
实现任务互斥是,用一个信号量与一组相关界区对应,这些任务在同一个信号量上调用P操作和V操作来实现互斥。
实现任务同步时,每一个消息与一个信号量对应,任务在不同的信号量上调用P操作以测试自己需要的消息是否到达。
在不同信号量上调用V操作可把不同的消息发送出去。
第2章MOS系统开发环境与相关工具的介绍
1.软件环境:
操作系统Windows98以上版本(Windows2000),开发平台采用支持16位实模式编译环境的软件(BorlandC++4.5),调试工具采用BochsV2.1以上(Bochs2.3),磁盘映像文件制作工具(WinImage),汇编语言编译器(NASM),将.EXE文件转换为二进制文件的工具(EXE2BIN.EXE)以及把引导程序写入映像文件或软磁盘0面0道1扇区的工具(WRITEBOOT.EXE)。
2.硬件环境:
由于系统比较精小,一张3.5英寸容量1.44MB的磁盘就可以将其容下,可以说对计算机硬件几乎没有什么要求,但考虑到系统代码的开发平台是采用可视化的编程工具BorlandC++4.5,因此计算机的硬件需满足能安装Windows98以上版本的个人计算机系统。
3.MOS系统默认的安装目录是X:
\SYS,其中X代表任一硬盘盘符。
2.1NASM汇编器的介绍
NASM(TheNetwideAssembler)是一个以可移植性与模块化为目标而设计的一个80x86汇编编译器。
最初是为UNIX环境开发的商业汇编器包,现在NASM已成为开放源代码软件,可以在UNIX、Linux和MicrosoftWindows环境下使用。
它支持众多目标文件格式,包括a.out、ELF、COFF、16位MS-DOS以及32位Win32等诸多的可执行文件格式,甚至还可以输纯二进制文件。
NASM语法设计得相当的简洁易懂,和Intel语法相似但更简单。
利用NASM汇编产生二进制格式的指令代码,这是一种内存映像,可直接加载到内存中运行。
2.2Borlandc++4.5软件介绍与安装使用
BorlandC++4.5编译器是Borland公司开发的,该编译以速度快、空间效率高而著称。
它是新一代面向对象可视化快速应用程序开发工具(RAD,RapidApplicationDevelopment)。
它工作在Windows95/98或WindowsNT4.0上,可以用于开发通用的或基于客户机/服务器模式的32位Windows应用程序。
BorlandC++4.5安装在X:
\BC45目录下,因BorlandC++4.5支持的16位实模式运行于DOS操作系统环境下,与DOS相关的部分主要在启动代码中,启动代码是指操作系统将一个可运行的程序装入到内存中,在执行该程序的main()函数前执行的那段代码。
MOS系统是一个独立的系统,与DOS没有任何联系,因此,在开发MOS系统时需要将这段启动代码替换为MOS所需求的。
BorlandC++4.5提供了启动代码的源程序,经过对源程序的分析、修改,使其适合MOS系统。
本设计在X:
\SYS\BORLANDC\STARTUP\CLIB目录下有汇编好的启动目标代码,将其复制到X:
\BC45\LIB目录下替代原先的DOS启动代码即可。
BorlandC++4.5作为BorlandC++系列开发工具的版本之一,无论是在开发环境、分布式应用系统开发、支持已有C++资源,还是在快速的开发Web及Internet应用程序、数据库处理等方面,都表现了卓越的性能。
2.3Bochs虚拟机介绍与安装
Bochs软件是开放源代码软件,它完全模拟Intel80x86的硬件以及一些外围设备。
Bochs的安装非常方便,如果计算机操作系统是Windows,则其安装过程与普通的软件完全一样。
在安装时,可选择安装目录。
本书将它与MOS系统安装在同一个磁盘上,若MOS系统安装在E盘,则MOS系统目录为E:
\SYS,而Bochs目录为E:
\Bochs-2.3,其中2.3为Bochs的版本号。
使用软磁盘启动了系统,但是在编写引导程序、或设计系统时不可能一次就能将程序调试正确,因此需要经常地关机、开机,这不利于对程序的调试。
鉴于此,我们利用虚拟机软件,比如Qemu、VirtualPC、Bochs、VMware等,模拟PC机,在模拟的PC机上调试程序,就可避免经常关机、开机的麻烦,只需要启动虚拟机软件或关闭虚拟
设置Bochs系统,Bochs使用配置文件中的信息来寻找所使用的磁盘映像文件、运行环境围设备的配置以及其他一些模拟机器的设置信息。
每个被仿真的系统都需要设置一个相应的配置文件。
若所安装的Bochs系统是2.1或以后的版本,那么Bochs系统会自动识别后缀是“.bxrc”的配置文件,本软件中使用的配置文件名为bochsmos.bxrc,它的内容如下:
#filenameofROMimages
Romimage:
file=$BXSHARE/BIOS-bochs-latest;address=0xf0000
Vgaromimage:
$BXSHARE/VGABIOS-lgpl-latest
#whatdiskimageswillbeused
Floppya:
1_44=MOS.IMG,status=inserted
#choosethebootdisk.
Boot:
a
#wheredowesendlogmessages?
Log:
bochsout.txt
创建一个批处理文件MOSdbg.bat,用于对系统进行调试,内容为:
\Bochs-2.3\bochsdbg.exe-q-fbochsmos.bxrc
将MOS.bat、MOSdbg.bat、bochsmos.bxrc和MOS.IMG四个文件复制到同一目录下,比如复制到sys\mos\ch8\image目录下,此时双击MOS.bat进入Bochs模拟器并启动系统。
双击MOSdbg.bat进入Bochs模拟器的调试环境,并等待用户输入调试命令。
2.4利用WinImage映象文件写入引导区
WinImae的安装只要按WinImage的默认安装即可。
1.磁盘映像文件的创建。
磁盘映像文件是软盘或硬盘上信息的一个完整映像,并以文件的形式保存。
磁盘映像文件中存储的格式与对应磁盘上保存信息的格式完全一致。
我们可以利用工具软件创建磁盘映像文件,比如Bochs。
下面介绍利用WinImage创建DOS格式的软盘映像文件。
WinImage是一个DOS格式软盘映像文件的读写软件,利用它创建DOS格式的软磁盘映像文件的步骤如下:
(1)运行WinImage。
选择“Options->Settings”菜单,选择其中的Image设置页。
设置Compression为“None”(即把指示标位拉到最左边)。
(2)创建映像文件。
选择菜单File->New,此时会弹出一个软盘格式选择框。
选择容量为1.44MB的格式。
(3)选择引导扇区属性菜单项“Image->BootSectorproperties”,单击对话框中的MS-DOS按钮,然后单击确定。
(4)以MOS.IMG为文件名保存文件。
注意,在保存文件对话框中“保存类型”一定要选择“Allfiles(*.*)”,否则创建的映像文件中会包含一些WinImage自己的信息,从而会造成映像文件在Bochs下不能正常使用。
可以通过查看文件长度来确定新创建映像文件是否符合要求。
标准1.44MB软盘的容量应该是1474560B。
2.使用工具WriteBoot.exe将boot.bin写到映像文件MOS.IMG的引导区。
3.使用WinImage打开MOS.IMG将MOS.BIN添加到映像文件中去。
4.保存MOS.IMG,在Bochs环境中启动系统,其运行结果同用软盘启动类似。
第3章MOS系统中任务同步设计的需求分析
3.1实现任务同步基本技术
本MOS系统主要是为了实现对任务调度管理的设计和处理。
由于是一个虚拟的操作系统,因此所有的操作和功能都在内存中实现,力图集中反映出模块最本质的东西。
本MOS系统以命令行作为人机交互的接口,设计了一些简单的命令实现了用户对同步任务的有效管理。
实现同步的基本技术是阻塞一个任务直到一个特定的条件满足为止。
因此为实现同步,一个任务Pi可以被阻塞直到任务Pk执行到一个特定的点为止。
任务之间的同步不能由自己来解决,必须通过系统核心信号量上施行的两种操作P、V操作来加以控制与协调。
实现任务同步包括任务的互斥和任务的同步两个方面,是操作系统管理共享资源的一种手段。
用P、V操作解决任务同步问题时首先应确定问题是属于任务互斥还是任务同步,或是互斥与同步的混合问题。
然后根据共享资源的数量以及使用共享资源的规则正确的定义信号量及其初值。
然后决定在不同信号量上应实施的P操作和V操作,用这些P操作和V操作保证并发任务正确地使用共享资源。
操作系统正是利用信号量的状态
对任务和资源进行管理,从物理意义上理解,P操作相当于申请资源;V操作相当于释放资源。
任务调度,是任务同步过程中的一部分。
其主要功能是根据一定的算法将cpu分派给就绪队列中的一个任务。
任务调度是操作系统中最基本的一种调度,其调度策略的优劣直接影响整个系统的性能。
在MOS系统中任务调度采用优先级高者优先调度算法,且采用静态优先级方式,即任务在创建时设定了优先级,则其以后的活动中优先级将不在改变。
这要求在创建任务的时候,为每个被创建的任务分配一个优先级。
在MOS系统中,将系统的状态分为三种(如图3-1)。
这三种基本调度状态是:
执行状态,当一个任务已分配到处理机,它的程序正由处理机执行时,称此任务处于执行状态。
就绪状态,如任务已具备执行件,但是因为处理机已由其它任务占用,所以暂时不能执行而等待分配处理机,称此种任务处于就绪状态,有时也称为可运行状态封锁状态,任务因等待某一事件(如等待某一输入、输出操作完成)而暂时不能运行的状态称为封锁状态。
此时即使处理机空闲。
它也无法使用。
这种状态有时也被称为不可运行状态或挂起状态。
正在中央处理机上运行的任务称为该处理机的现运行任务。
在任何时候,一个系统中的现运行任务数一定少于或等于可用处理机数。
图3-1MOS系统中任务三状态转换图
任务控制块是对任务进行控制和管理的主要数据结构。
在MOS系统中为了简化对任务的控制和管理,所有进行除优先级可以不同外,其地位都是平等的,也即所有的任务像兄弟一般,不会由于某一任务创建了另一任务,而使这两个任务之间成为父子关系。
MOS系统中系统调用的处理过程如下:
1.在核心态中调用系统调用和调用一般过程相似,直接调用其子程序即可。
2.在用户态中使用系统调用,需要处理机的状态由用户态转为核心态,然后执行相应的系统功能,系统调用的入库是INTOx80指令,通过执行该软件中断指令来实现用户态到核心态的转换,其具体步骤可描述如下(如图3-2MOS系统调用过程):
(1)保护现场;
(2)将输入参数放入指定的寄存器中,MOS系统通过寄存器传递输入参数;
(3)执行INT0x80指令,进入核心态,0x80号中断向量的中断处理程序根据功能号转到相应的系统调用子程序执行;
(4)将系统调用返回参数放入指定寄存器,中断向量的中断处理程序执行结束返回;
(5)将输出参数存入指定变量;
(6)恢复现场,返回用户态;
(7)系统调用结束;
INT0x80中断处理程序系统调用处理子程序
图3-2MOS系统调用过程
任务的同步:
(1)创建信号量:
INT16USysCreateSem(INT16Ucount)
(2)释放信号量:
INT16USysdelSem(INT16Udelsem)
(3)P操作(使得信息量的值减去1)
(4)V操作(使得信号量的值加1)
3.2实现任务同步主要任务
任务的同步和互斥中:
信号量的实现,用户系统接口的调用,利用信号量实现任务同步。
信号量是实现任务同步与互斥的主要工具,在MOS系统中设计了四个与信号量相关的系统调用,分别是创建信号量、释放信号量、P操作和V操作,并且在实践中利用信号量实现了任务的互斥与同步操作。
利用信号量实现任务之间的互斥时,为了正确地解决一组共行的n个任务对临界资源的使用,可以引入一个互斥信号量,用mutex表示。
对于互斥使用的资源,其初始值只能为1。
任何欲进入临界区执行的任务,必须先对互斥信号量mutex执行P操作,即使mutex值减1,若减1后mutex值为0,表示临界资源空闲,执行P操作任务可以进入临界区执行;若mutex减1的值为负,说明已有任务占有临界资源,执行P操作任务必须等待,直到临界资源空闲为止。
正在临界区执行的任务,完成临界区操作后,通过执行V操作释放临界资源,使等待使用临界资源的任务使用。
这样,利用信号量方便的解决了临界区的互斥。
信号量的取值范围是+1~-(n-1)。
信号量的值为负,说明有一个任务正在临界区执行,其它的正排在信号量等待队列中等待,等待的任务数等于信号量的绝对值。
任务的同步是指相互合作的一组共行任务,各自以独立的、不可预知的速度向前推进,在前进过程中彼此之间需要相互协调步伐,才能更好完成同一项任务。
为了解决任务的同步,同样也是要引入信号量。
第4章MOS系统中任务同步
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MOS任务同步的设计与实现 毕业设计 MOS 任务 同步 设计 实现