论文研究-基于Forth虚拟机的嵌入式多任务操作系统体系架构研究.pdf

所需积分/C币:9 2019-07-22 19:15:49 901KB .PDF
收藏 收藏
举报

面对越来越复杂的嵌入式应用需求,以及当今嵌入式操作系统研究领域中亟待解决的重构、移植、维护、可信、多核、众核等诸多难题,采用Forth虚拟机技术,对基于Forth虚拟机架构的嵌入式操作系统关键技术进行探索,提出一种具有良好扩展和移植特性且高效精简的基于Forth虚拟机的嵌入式多任务操作系统体系架构。该架构采用分类存储映射、Forth向量定义和用户变量分离,实现了代码共享和多任务管理。实验结果表明,基于Forth虚拟机架构的嵌入式操作系统在发挥Forth系统固有特性的同时,减少了资源占用,提高了系统的灵活性及运行效率。
478 计算机应用研究 第36卷 管理、设备管理、错误陷井等FⅤMθS原语枃件。若存储在的不同区域,这个区域就是用户交量区。 Flash中的FBS和 FVMOS是可重入的,那么新创建的用户任务2.3任务控制块 Task只在RAM用户变量区中建立仁务数据空间(运行在同 Forth操作系统多任务调度往往采用的是协同式调度策 个 Forth虚拟机之上,适合于多核SMP模式)否则就需要复略,也就是说每个任务的启动吋间都是预先确定好的。与其他 制ask到新的Fsh和RAM工作区(运行在多个虛拟机之多任务调度方式不同, FVMOS的协同式调度是基于虚拟机的 上,适合于多核MP模式或多核离散模型)。同时,初始Uak支持终端任务、后台任务和中断任务三种任务类型。在上述内 的任务控制块TCB,并将新的TCB插人到系统的TCB链表中 存管理方式下,现场保扩仅需要将当前返回栈指针H压入数 进人多任务调度 据栈,并将当前数据栈指针SP保存到该任务的用户变量区甲; 在抽象描述方面,与徵内核的设计思路不同由于是在经而恢复现场仅需要从该任务的用户变量区里恢复SP,并将栈 过一定抽象的堆栈虚拟机上运行,上M(S本身就具有较强的顶值存入RP指针。FVMs的任务控制块( task control block, 跨平台移植性。从层次上看, FVMOS并没有像传统操作系统TCB)就是用户变量区里与多任务调度有关的一块特殊区域 那样直接对硬件进行封装,而是运行在虚拟机之上。理论上,其结构如表1所示。 排除效率冋题,整个FMOS可以不涉及任何汇编语言,其原 表1TCB结构 语和任务体都能用FBS的 Forth定义像搭积木一样构造出来 序号偏移名称 述 类别 在异构平台的抽象化描述方面,与 Windows n、 Nanokernel、 10 status任务状态的x,UP指针 eCos等基于硬件抽象层(HAL)设计的操作系统相比,FⅤMOS follower下一个任务的TCB首址 也有其独特的特点和优势。 23456789 返回栈栈底指针 基本表项 数据栈栈底指针 2 FVMOS存储架构 8 数据栈栈顶指针(TOs) 10 CATCHIER 错误陷阱 BASE 数值转换 2.1内存分配与管理 EMIT 输出字符 在前期研究的基础上,针对嵌入式的存储布局以及 Forth 16 EMIl 输出设各就绪 主流的协同调度算法( cooperative scheduling algorithm, round 1018 输出字符串 robin)的特点,重新优化了设计,放弃了源自x86将 Forth内存 回车 附力表项 PAGE 换页 L/O驱动) 划分为代码段(S:)、数据段(D:)、虚拟段(VS:)和堆栈段 ATXY 移动光标 向量定义 (SS:)四个逻辑独立段的设计思路,建立 Flash、RAM、 E PROM KEY 输入字符 三组存取操作定义和相应的指针,分别用于存放代码、数据和 1528 KFY? 输人字符就绪 参数 ACCEPT 输入字符串 上lash里存放着可重入的FBS和rvⅥOS,其分配由DP指 17 32 DEVICE 设备地址或信息 18 34 SOURCE 针决定,存取操作定义包括:,、@I、 IHERE和 IALLO等。 定位输人缓区附加表项 输入流中当前漏移量(解释器操作) RAM里存放所有程序运行的数据,存取操作定义包活:!、@ REFILL 填充输人缓御区 向量定义 HERE和ALO等。其中,UP指针用于指示当前正在运行任 TCB表中每·项都是通过用户变量USER定义的,其中基 务的用户变量区首址(TCB)。一般的嵌入式处理器缺乏页地本表项(前六项)是每个任务的必备项,而附加表项是专门针 址映射和内存保护机制,为实现代码保护,可以隐藏Fsh的对终端仼务而设置的;附加表项(I/O驱动)存放的是该终端仼 显式存取操作。 务的1O驱动向量,与该任务具体连接的终端设备有关;附加 考虑到Forh在线交互过程中允许随时加载新代码的复表项(解释器操作)存放的是该终端任务文本解释器与状态有 杂性,在Fωrh系统屮, Flash屮的DP是严格按地址递增顺序关的操作向量。需要说明的是,CB没有保留返回栈指针,m 进行分配的。与之对应的RAM里的UP既可以按实际需求进是将当前返回栈指针放在数据栈栈顶。 行简单的顺序分配,也可以按动态分配回收算法缓冲池等技 术实现数据区的动态存储管理。 3 FVMOS多任务架构及组织管理 2.2可重入与用户变量区 上VMOS的调度原语是PUSE,并通过引入可随时置换的 可重入代码要求除常量之外不能含有任何私有变量,上述 Forth向量定义PASS和WAKE,不用查找TCB表便能实现任 存储管理模式可以支持系统的可重亼改造,只要稍作修改,整务的怏速切换。下面重点讨论与操作系统体系架构有关的任 个Fωnth系统就能实现可重入。 Forth系统的特点决定∫系统务管理算法。针对 Forth语言和上orth系统的特点,本文中算 运行的大多数参数及结果都可以存放在数据栈或返回栈中,要法描述语言采用了Foth2012标准。 处理的字符串、变量、数组可以保存到系统分配给每个任务的3.1Fash任务定义 RAM数据区中。 在 Flash的 Forth字典里创建一个特殊的任务定义,将分配 引入上oth用广变量是实现以上目标的关键。为保证可给该任务的用户变量区首址保存到c代码场里,返回栈数据 重入,可以定义一些公县例程去寻址RAM数据区里的变量 栈栈底指针保存到pfa参数场甲,定义的ca和pa共同组成了 这些变量就是Foth用户变量。 Forth用户变量实际就是地址任务信息块( task information block,TB)。Task定义算法如下: 变量,用户变量定义中PF存储的是该变量在RAM中的地址。 ds rs us"name"-ds、rs、us分别是数据栈、返回栈、追加 用户变量区是RAM的一块特殊区域。每个任务都可以的用户区大小* 共享文本解释器、LO驱动等代码,但每个任务都有独自的以 3( BUILDS//在 Flash forth字典里创建一个仟务定义 用户变量定义的操作数据,这些私有数据存放在RAM数据区 4HERE,/*将HERE(RAM中TCB可用地址)存入Fash任务 第2期 代红兵,等:基于 Forth虛拟机的嵌入式多任务操作系统体系架枃硏究 479 定义的cfa*/ 到多任务循环链表中。 ADD-NEXTTASK定义算法如下 5(u)&12+ ALLOT//在RAM中分配用户变量区(前六项) 6(r) ALLOT HERE,/*分配返回栈,将r保存到Flh该任 2. ADD-NEXTTASK 务定义的pa「0 7(ds) ALLOT HIERE,*分配数据栈,将sp0保存到 Flask该任 3[’] PAUSE DEFER@>R/*将 PAUSE里的xt( MULTI 务定义的pfa[1 ASK-SCHEDULE或NOOP)保存到返回栈* 81 ALLOT/分隔 4 SINGLE/停止多任务, PAUSE被设置为NOOP 9DOES);/执行任务时,将ca压入数据栈 5 FOLLOWER@∥/得到当前任务的下一个任务th 6 OVER 入口参数ds、、us分别是数据栈、返回栈、追加的用户区 7 FOLLOWER!//将tcb作为当前仃务的下一个任务 大小。通过〈 BUILDS在Fash中创建一个任务头,随后将RAM 8 SWAP CELL 用户变量Ⅸ中的可用地址HRE(与之对应的 Flash操作为 9!//将tcb任务的下个任务指向当前任务之前的下个任务 10R> IS PAU;∥恢复多任务 THERE)存入Fah任务定义的c(即TCB首址);在RAM用 人口参数为新添加任务的TCB首址。考虑到TCB表的访 户变量区中分配T℃B(前六项是基木的);分配返回栈,将叩°问属临界资源,为文持动态任务添加,一开始就将任务调度向 保存到Hash该任务定义的pa0];分配数据栈,将sp保存到量保存到返回栈上。在关闭多任务调度之后,取出 OLLOWER Flah该任务定义的pa1]。当执行该任务时(DOES),将can指针(当前任务指向的下一个任务),将新任务的tcb作为当前 压入数据栈。 任务的下一个任务,将当前任务的下一个任务作为新任务的下 3.2存储区互操作 个任务。完成TCB循环链表的直接插入之后,从返回栈恢 位于Fash的TIB与位于RAM的TCB之间的互操作由下复任务调度向量,并随即启动任务调度。由于不涉及到优先级 列定义实现 调度,所以本算法的TCB循环链表维护就变得丨分简洁,不需 TB>TCB∥/TIB映射到tcb[stan 要插人排序操作,算法复杂度为O(1)。过程最后启动了多任 2@;//IB映射到 tcb. rp0] 务调度,新添加的任务将得到优先执行。 3 TIB RPO 4 -CELL + I ask head 5mIB>S0//TIB映射到 tcb. sp ace name LF CF tib rpsP 6 I-CELL +I-CelL +@1 status follower 7TB>SIZF//TR换算用户变量区尺寸sTZF PFA TCB 8 DLP TIB> TCB SWAP TIB >SP01+ SWAP task bod 其中:与RAM操作@不同,@I是从Fash里取数。系统保留 namc LF CE 了Foth的习惯,将常规的存取操作符视同为RMM操作。 3.3任务用户变量区初始化 任务创建后, TASK-INIT负责初始化该任务用户变量区里 retur 的TCB和堆钱区,设置缺省进制为十进制(dma),在尚未链 forth virtual machine(n stack 接任务体前,将该任务设置为PASS睡眠状态。 TASK-INl定 data 义算法如下 1. TASK-INIT 2DUPT> TCB OVER T>SIZE0FLL/初始化任务用户 Flash 变量区里的TCB和堞栈区 图2多任务存储架构 3 DUP TIB > SPO OVER TIB>TCB &6+!//tcb[spo]=tib 4DPⅢB>S0CELL0VEB>1CB&8+!/ehs4实验评估 5 DUP TIB >RPO OVER TIB >TCB &4+!//tcb]=tib[rp01 6 &10 oVer TIB > tCB &12 //tcb base =10 在 Arduino嵌入式硬件平台上,借劻开源的 Forth虛拟机, 7 TIB TCB TASK-SLEEP //tcbO= PASS 实现了FⅤMOS基木框架和多任务管理算法。实验环境中,在 人口参数为任务头执行时DOES>弹出的TIB,通过互操系统上电初始化阶段,首先设计了含有一个终端任务tsk1和 作转换为TCB地址;然后对RAM用户变量区的TCB和堆栈区 个后台任务task2的实验程序如下 进行清除,将保存在 Flashy任务头中的p存储到 Icb[ sp”],计 1:MS(n-) PAUSE0?DO1MsL0OP;/*每nms调用 算出栈顶,保存到tb[TOS],将保存在Fash任务头中的存 PAUSE等待*/ 储到tcb["],设置缺省十进制;最后将初始任务状态设置为 2 VARIBLE M∥/ask1中1k2便用的全局变量M 3: INITM(--)0 M PASS。 4840$400 RACKGROUND-TASK task2/*建立后台任务 多任务存储果构如图2所示 task2,在Hash中创建任务头,分配用户变量区 3.4TCB循环链表 5:TASK2-RODY(-) BEGIV1M+!&10 MS AGAIN;/*定义 task2任务体* 在完成上述创建、初始化、链接任务体之后,还需要初始化 6: STARTTASKER(-)//初始化并启动多任务 和构建多任务TCB循环链表。ADD- FIRSTTASK初始化第 7task2 BACKGROUND-INIT/*tak2初始化,在RAM中创 建TCB2六 个终端任务,将其tb[ status设置为WAKF,并将FO.OWFR ask2TIB> TCB ACTIVATE TASK2-BODY/*连接task2任 指向自身。 ADD- FIRSTTASK定义算法如下 务体本/ I ADD-FTRSTTASK 9 ADD-FIRSTTASK建立TCB1循环链表 2 WAKE STATUS!/将当前任务的tcb[ status]设置为WAKE 10task2TB> TCB ADD- NEXTTASK/*将TCB2加入循环链 3 UP@ FOlloWer!;//将 FOLLOWER指向自身 表* 通过ACTIⅤA配原语激活,多任务启动后,允许随时追加 11MULT;〃启动多任务 12: TASK-TURNKEY(-)//上电启动向量 新的任务,ADD- NEXTTASK将tcb所指的新仁务TCB表插入 13 APPLTURNKEY INITM STARTTASKER 480 计算机应用研究 第36卷 在系统上电启动运行后,通过终端任务 task1,建立新的后制之下,经典的多任务管理算法难以直接派上用场。虽然实时 台任务tsk3,通过命令行或文件方式动态载入以下程序,实验性还有待提高,但本文研究的 FVMOS体系架构以及多任务管 代码如下: 理算法具有一定的现实指导意义。 1 VARIBLE V// task1巾tak3使用的全局变量N 2: INITN(-)ON! 参考文献: 3$40s400 INTERRUPT-TASK lask3/*建立中淅任务task3,[l』代红兵.新型、高效微机Fth语言的研制J].中国科学院研究 在Fash中创建任务头,分配用户变量区/ 生院学报,1993,10(1):62-69.( Dai hongbing. The development 4:TAsK3-BODY(-) BEGIN1N+!&10 MS AGAIN;/*定义 ask3任务体* nf a new and efficient Forth language[J.Joumal of Graduate 5: STARTTASK3(-)∥初始化并启动1ask3 School, Academia Sinica, 1993, 10(1): 62-69.) 6task3 BACKGROUND-INIT/*task3初始化,在RAM中创建[2]ANSI. ANSI X3.215-1994, American national standards for informa- TCB3*/ tion systems programming languages Forth[S. New York: American 7task3TIB> TCB ACTIⅤ ATE TASK2-BODY/*连接tak3任务 体 National Standards Institute. 199 8 ItN [3 Forth-Standard-Commitlee. Forth-2012[ EB/OL].(2015).ht- 9task3> TCB ADD- NEXITASK;〃将1CB加入循坏链表 Ips: //furth-sl andard. org/ 在终端仁务task里定义后台任务task2,多仁务启动后,[4] Forth Ine. Featured Forth applications El/OL.].(200).hp:∥ task1在task2任务体每次调用MS时执行一次;task2在task1 www.forth.com/resources/appnotes 每次等待键盘输入时执行(内嵌 PAUSE向量)。此后,若有动[5] MCGuirete. Kitt Peak multi-tasking Forth-11J. The Jounal of 态重构多任务系统的需求,可以在并发运行的终端任务 task1 Forth Application and Research, 1984, 2(2): 57-67 甲定义新的后台任务task3,并通过任务初始化BACK6代红兵.高效微机实时多任务澡作系统没计与实现J.中国科学 GROUND-INT、激活连接任务休ACTIⅣVATE以及加人循环链 院研究生院学报,1993,10(3):283-292.( Dai hongbing. The de 表AD- NEXTTASK等操作将task3加人多仁务循环。第一个 sign and realization of efficient microcomputer operating syslem of real 终端任务tak1实际就是系统任务( task),除包含了FBS和 time multitask[J]. Journal of graduate School, Academia Sini FVMOS两个部分外,还涵盖了系统上电前定义的所有任务以 ca,1993,10(3):283-292.) 及系统运行后通过各终端任务动态加载的新任务,因此可以通 [7 Rash J. Space-related applications of Forth[ EB/OL ].(2006-09) http://forth.gsfcnasagov/ 过各终端任务对所有任务进行 SLEEP、WAKE、STOP等有效控 [8 Caffrey R T. Forth in space: interfacing SSBUV: a scientific inst tru- 制。实验表明,系统运行稳定可靠,相关算法能够达到系统可 ment, to the space shuttle[ J]. ACM Sigforth Newsletter, 1993, 4 重构、可扩展、可移植、可交互的多任务组织管理月标 (3):1-8. 与文献[6基于CPU调度的 Stand alone forth88多任务[91 IntellaSy. SEAforth40cl8 sealable embedded array processor[ EB/ 系统相比,木文提出的 FVMOS多任务休系架构冇诸多的优 Ol1.(2008).http://www.intellasys.net/lemplates/trial/content/ 点。在嵌人式有限存储空间利用方面,基于rVM的架构缩减 SEK_40C18-_DataSheet_1. 1. pdf 了TCB的规模,任务切换只需保留或恢复SP指针就能实现,[10 I Mikiten B C, Mikiten s,OrJL. A Forth- based real- time in -flight 这样就可将TCB中数项CPU映像存储压缩到只需六个单 monitoring system[ C]//Proc of the 2nd 3rd Annual Workshops on 元;在重构、扩展、移植方面,整个多任务管理系统建构在系统 Forth. New York. ACM Press, 1991: 31-34 的FBS高级定义之上,做到与硬件无关;在系统简洁性方面, [11 Forth Inc. SwiftX eross compilers for embedded systems application 特殊的调度方式和精简的T℃CB结构,使得系统不需要新建和 Ieb/ol1.(2016).https://www.forthcom/embedded/ 维护江务队列,与 Stand Alone forth8中创建任务的同一层次12杨为民,代红兵,安红萍,等,一种新的入式ot实时操作系统 代码量(LOC)相比,至少压缩了10倍,整体压缩了16倍,如表 的研究[冂.云南大学学报:自然科学版,2013,35(S2):96-103 (Yang Weimin, Dai Hongbing, An Hongping, ct al. A new Forth 2所示;在快捷性方面,除了将常规带优先级的吋间片轮转调 framework for embedded systems[I. Journal of Yunnan Universi 度算法复杂度从O(n2)降低到O(n)之外,所有多任务管理算 ty,2013,35(2):96-103.) 法的复杂度均为O(1)。 13 Frenger P. Forth and AI revisited BRAIN. FORTH J. ACM SIG- 表2代码量(LOC)对比 PLAN Notices,2004,39(12):11-16 对匕项日 FVMOS [14 Pele S. Programming Forth[ M. Southampton: MicroProcessor Engi- TASK neering Limited, 2011: 97 MULTITASKER 155 L15」代红兵,杨为民,王丽清,等,多目标 Forth自生成器的研究与实现 5结束语 [J].计算杌应用研究,2014,31(4):1109-1114.( Dai hongbing, Yang Weimin, Wang Liqing, et al. Research and realization of multi 从以上分析可以看出, FVMOS与传统方式有本质的不同 objective Forth self-generating system[ J]. Application Research of 并存在严格区分的模块、层次、微内核等传统结构。虽然系 Computers,2014,31(4):1109-1114.) 统天生具有可重构特性,甚至构件化特征,但与采用构件化操「161 The forth Interest Croup. Forth compilers page EB/Ou1.(209) 作系统乜不尽相同。Fυrth特有的堆栈和字典式结构决定了其 http://www.forthorg/compilers.html 17 Frederic P Colorforth[M]. 2010: 28 体系架构和运行机制的特殊性。一方,上oth特殊的穿线编 18 Frenger P. Hard Java[ J. ACM SIGPLAN Notices, 2008, 43(5) 码( threaded code),使得 Forth堆栈机的词典式结构本身就是 个可动态、交互扩展的开放性程序库。除此之外,Foth虚拟[1] Hanna d m, Jones B, Lorenz l,ea. An embedded Forth core with 机运行环境还为系统提供了难得的跨平台能力。但另方面 ing point and branch prediction C|//Proc of IEEE International 也正是因为这些特性,给基于虚拟机的多任务组织管理带来了 Midwest Symposium on Circuits and Systems. Piscataway, NJ IEEE 难题。例如,由于所有过程(包括任务调度)都必须在qⅶit控 Press,2013:1055-1058

...展开详情
试读 5P 论文研究-基于Forth虚拟机的嵌入式多任务操作系统体系架构研究.pdf
立即下载 低至0.43元/次 身份认证VIP会员低至7折
    抢沙发
    一个资源只可评论一次,评论内容不能少于5个字
    上传资源赚积分,得勋章
    最新推荐
    论文研究-基于Forth虚拟机的嵌入式多任务操作系统体系架构研究.pdf 9积分/C币 立即下载
    1/5
    论文研究-基于Forth虚拟机的嵌入式多任务操作系统体系架构研究.pdf第1页
    论文研究-基于Forth虚拟机的嵌入式多任务操作系统体系架构研究.pdf第2页

    试读已结束,剩余3页未读...

    9积分/C币 立即下载 >