收藏 分享(赏)

第二讲 嵌入式操作系统 软件成分.ppt

上传人:dzzj200808 文档编号:3359360 上传时间:2018-10-18 格式:PPT 页数:98 大小:2.49MB
下载 相关 举报
第二讲 嵌入式操作系统 软件成分.ppt_第1页
第1页 / 共98页
第二讲 嵌入式操作系统 软件成分.ppt_第2页
第2页 / 共98页
第二讲 嵌入式操作系统 软件成分.ppt_第3页
第3页 / 共98页
第二讲 嵌入式操作系统 软件成分.ppt_第4页
第4页 / 共98页
第二讲 嵌入式操作系统 软件成分.ppt_第5页
第5页 / 共98页
点击查看更多>>
资源描述

1、嵌入式操作系统第二讲 软件成分,1、ARM编程模型 ARM体系结构 ARM编程模型 ARM指令集 2、嵌入式操作系统 实时操作系统 微内核和一体化内核 商用嵌入式操作系统,嵌入式系统的软件成分,本节提要,1,3,2,5,4,6,ARM体系结构,ARM编程模型,微内核和一体化内核,ARM指令集,实时操作系统,商用嵌入式操作系统,ARM体系结构版本 - 1,Version 1 (obsolete) 基本数据处理 字节,字以及多字 load/store 软件中断 26 bit 地址总线 Version 2 (obsolete) Multiply & Multiply-accumulate 支持协处理

2、器 支持线程同步 26 bit 地址总线,ARM体系结构版本 - 2,V3版本推出32位寻址能力,结构扩展变化为 T16位压缩指令集 M增强型乘法器,产生全64位结果(32X3264or32X32+64 64) V4版本增加了半字load和store指令 V5版本改进了ARM和Thumb之间的交互,结构扩展变化为: E-增强型DSP指令集,包括全部算法操作和16位乘法操作 J-支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能,ARM 体系结构更新,体系结构变化 1*,THUMB指令集 (T) THUMB 指令集: 32位ARM指令集的子集,按16位指令重新编码代码尺寸小 ( up t

3、o 40 % compression) 简化设计,体系结构变化 - 2,长乘法指令 (M) 32x32 = 64 bit. 提供全64位结果增强DSP指令集 (E) 可附加在ARM中的DSP指令 64 bit 转换 在v5版本中第一次推出处理器内核的变化 D: 在片调试. 处理器可响应调试暂停请求 I: Embedded ICE. 支持片上断点调试,体系结构变化 - 3,ARM DSP 指令集 对于音频DSP应用提供高达70%的处理速度Jazelle 提供比基于软件的JAVA虚拟机(JVM)更高的性能 与非JAVA加速核相比,提供8倍JAVA加速性能和降低80%的功耗 139 字节码直接在硬件

4、上执行,88个字节码在软件上执行,本节提要,1,3,2,5,4,6,ARM体系结构,ARM编程模型,微内核和一体化内核,ARM指令集,实时操作系统,商用嵌入式操作系统,ARM7的指令流水线,从存储器取指,指令所用的寄存器译码,从从寄存器组中读寄存器 移位和ALU操作 把寄存器写回到存储器组,每条指令可以分3个阶段执行,ARM单周期指令3段流水线操作*,t,指令,1,2,3,注:程序计数器PC指向正在取指的指令而不是正在执行的指令,存储器模式*,大端模式 最高位字节保存在最低位地址 字由最低位字节的字节地址寻址小端模式 最低位字节保存在最低位地址 字由最低位字节的字节地址寻址,操作模式,ARM

5、处理器通常有7种操作模式: 用户模式(usr)- 正常的程序执行模式 快速中断模式(fiq) - 支持高速数据传输或通道处理 中断模式(irq) - 用于通用中断处理 管理员模式(svc) - 操作系统的保护模式. 中止模式(abt) - 支持虚拟内存和/或内存保护 系统模式(sys) - 支持操作系统的特殊用户模式(运行操作系统任务) 未定义模式(und) - 支持硬件协处理器的软件仿真 除了用户模式外,其他模式均可视为特权模式,寄存器 - 1,37 寄存器 31 个32位寄存器,包括程序计数器PC 6 个状态寄存器 15 通用寄存器 (R0 to R14), 以及1或者2个状态寄存器和程序

6、计数器在任何时候都中可见的可见的寄存器取决于处理器的模式其它寄存器 (the banked registers) 的状态在支持IRQ, FIQ, 管理员, 中止和未定义模式处理时被切换,寄存器 - 2,R0 到 R15 可以直接访问 R0 到 R14 是通用寄存器 R13: 堆栈指针 (sp) (通常) 每种处理器模式都有单独的堆栈,状态切换时sp的值被自动保存。 R14: 链接寄存器 (lr) R15 包含程序计数器 (PC) CPSR 当前程序状态寄存器,包括代码标志状态和当前模式位 5个SPSRs-(程序状态保存寄存器) 当异常发生时保存CPSR状态,寄存器组织 3*,注:表明用户或系统

7、模式使用的正常寄存器已经被异常模式指定的另一个寄存器取代,程序状态寄存器 - 1,ARM 核包含当前程序状态寄存器 (CPSR), 加上5个程序状态保存寄存器SPSR,当异常发生时,用于保存CPSR的状态 这些寄存器的功能是: 包括关于最近执行的ALU操作的信息 控制中断的使能和禁止 设置处理器操作模式,程序状态寄存器 - 2,N, Z, C and V 条件码标志 可以在处理器中作为数学和逻辑操作改变 可以被所有的指令测试,以决定指令是否被执行 N : Negative. Z : Zero. C : Carry. V : Overflow I and F 位是中断禁止位 M0, M1, M2

8、, M3 and M4 位是模式位,程序状态寄存器PSR的模式位,异常 - 1,异常内部或外部中断源产生并引起处理器处理一个事件,如外部中断或试图执行未定义指令都会引起异常。 处理异常之前必须保留处理器的状态 异常类型 FIQ IRQ(Interrupt ReQuest) 未定义指令 预取中止 数据中止 复位 软件中断Software interrupt 通过软件中断产生 进行管理员模式中获得 通常要求特殊的管理功能,如操作系统支持,异常 - 2,未定义的指令陷井 当ARM接受到一条不能处理的指令,ARM把这条指令提供给任何一个协处理器执行 如果协处理器可以执行这条指令但此时协处理器忙,ARM

9、将等待直到协处理器准备好或中断发生 如果没有协处理器处理这条指令,那么ARM将处理未定义的指令陷井 异常优先级 (1) Reset (highest priority) (2) Data abort (3) FIQ (4) IRQ (5) Prefetch abort (6) 未定义指令, Software interrupt (最低优先级),异常 - 3,只要产生异常就会导致正常的程序流程被临时停止,例如外围中断。在异常被处理前,当前的处理器状态必须被保存,以便处理程序完成后,最后的程序可以被恢复。,异常向量,进入异常的操作,在相应的链接寄存器LR (r14)中保存下一条指令的地址将CPSR

10、复制到相应的SPSR中强制使CPSR模式位置成对应异常类型的值强制使程序计数器指向相应异常向量,取下一条指令,例子: 用户模式到 FIQ模式*,退出异常的操作,将LR寄存器中的值减去相应的偏移量送到PC中Linux:SWI、UND不变IRQ、FIQ、取址异常减4数据异常减8将 SPSR 复制回 CPSR清除禁止中断标志,如果它被设置成禁止,进入/退出异常概述,本节提要,1,3,2,5,4,6,ARM体系结构,ARM编程模型,微内核和一体化内核,ARM指令集,实时操作系统,商用嵌入式操作系统,指令长度,指令集可以是以下任一种 32 bits 长 (ARM状态) 16 bits 长 (Thumb

11、状态)ARM(v4) 支持3种数据类型 字节 (8-bit) 半字 (16-bit) 字 (32-bit)字必须被排成4个字节边界对齐,半字必须被排列成2个字节边界对齐,ARM 指令集,Load-store 结构* 在通用寄存器中操作 load/store 从存储器中读某个值,操作完后再将其放回存储器中 指令分类 数据处理指令 使用和改变寄存器的值 数据传送指令 把存储器的值拷贝到寄存器中 (load) or 把寄存器中的值拷贝到存储器中(store) 控制流指令 分支 分支和链接, 保存返回的地址,以恢复最先的次序 陷入系统代码,指令格式,指令格式 3 地址指令格式 在ARM状态中使用2 地

12、址指令格式 在 ARM和 THUMB 状态下使用,AARM指令集编码*,数据处理指令 - 1,数据处理指令的类别 算术操作 按位逻辑操作 寄存器移位操作 比较操作操作数: 32-bits 宽; 3种指定操作数的方式 来自寄存器 第二操作数可以是常数(立即数) 移位寄存器操作数结果: 32-bits 宽, 放在寄存器中 长乘法产生64位结果,数据处理指令 2*,数据处理指令 - 3,数据处理指令 - 4,算术操作,按位逻辑操作,寄存器移位,比较操作,数据处理指令 - 5,立即数操作: 立即数操作 = (0-255) x 22n, 0 = n = 12移位寄存器操作数 第二个操作数在与第一个操作数

13、合成之前,是服从于移位操作的.,数据处理指令 - 6,移位操作 在任何数据处理指令中,第二个寄存器操作数可以有应用该操作数的移位操作. 逻辑移位LSL:逻辑左移 字的最小位空位清零 LSR:逻辑右移字的最大位空位清零.,数据处理指令 - 7,算术移位 ASR: = LSR ASL: 算术左移 循环移位: ROR, RRX,条件码标志,任何数据处理指令都可以设置条件码 (N, Z, V, and C) 适用于除比较操作外的所有数据处理指令 特殊的请求必须在汇编语言中实现,这种请求是通过把”S”增加到选择代码中指定的算术操作设置所有的标志位 (N, Z, C, and V) 逻辑和移位操作设置 N

14、 and Z,乘法指令集,在寄存器产生32位值,乘法,例子 (乘法, 乘法累加器)注意 最低 32-bits 置于结果寄存器中,其余被忽略 不支持第二立即操作数 结果寄存器与源寄存器必须不同 if S bit is set the V is preserved and the C is rendered meaningless,数据传送指令 - 1,单数据传送 (LDR, STR) 单字(32bit), 半字(6 bit) 以及字节(8 bit) 传送 寻址 寄存器偏移 地址 =基址 寄存器偏移 立即数偏移 地址 = 基址 立即数常数 后变址Post-indexing: modify addr

15、ess after use 前变址Pre-indexing: modify address before use 回写 如果可能,更新基址寄存器,数据传送指令 - 2,多数据传送指令 (LDM, STM) load (LDM) 或 store (STM) 当前可见寄存器的任意子集使用 堆栈: maintaining full or empty stacks which can grow up or down memory 上下文切换: 保存或重新存储工作寄存器 块拷贝:在主存储器中移动大数据块 寻址 Pre/Post indexing Auto increment or decrement 回

16、写到基址寄存器Write back the base register,数据传送指令 - 3,单数据交换 (SWAP) 在寄存器和外部存储器之间交换字节或字 读存储器和写存储器是是放在一起的 原子指令 执行时不能中断 当LOCK 信号输出操作时,外部存储器管理单元被锁定,当 多线程操作时使程序同步(OS支持) 锁定 信号量,数据传送指令 - 4,Note: r1 keeps a word address (2 LSBs are 0),寄存器间接寻址,基址+偏移量寻址 (offset of up to 4Kbytes),自动变址寻址,后变址寻址,Note: no restrictions for

17、 r1,单寄存器 load and store,数据传送指令 - 5,数据传送指令 - 6,块拷贝 数据被存贮在基本寄存器的上面地址或下面地址 地址增加或减少是在存贮第一个值之前或之后开始的,Note: 寄存器的部分或全部都可以用单指令传送 Note: 在表中的寄存器顺序并不重要 Note: 在表中包括 r15 i将造成控制流的改变,多寄存器数据传送 Increment After,多寄存器传送寻址模式,r5,r1,r9,r0,r9,STMIA r9!, r0,r1,r5,1000,16,100c,16,1018,16,r1,r5,r9,STMDA r9!, r0,r1,r5,r0,r9,10

18、00,16,100c,16,1018,16,r5,r9,STMDB r9!, r0,r1,r5,r1,r0,r9,1000,16,100c,16,1018,16,r5,r1,r0,r9,r9,STMIB r9!, r0,r1,r5,1000,16,100c,16,1018,16,条件执行,所有的ARM指令都可以条件执行 指令的执行与否取决于CPSR寄存器的N, Z, C and V标志位 所有的Thumb指令都可以解压成全部条件指令 Condition Field in instruction0000 = EQ - Z set (equal) 0001 = NE - Z clear (not

19、equal) 0010 = CS - C set (unsigned higher or same) 0011 = CC - C clear (unsigned lower) 0100 = MI - N set (negative) 0101 = PL - N clear (positive or zero) 0110 = VS - V set (overflow) 0111 = VC - V clear (no overflow) 1000 = HI - C set and Z clear (unsigned higher) 1001 = LS - C clear or Z set (uns

20、igned lower or same) 1010 = GE - N set and V set, or N clear and V clear (greater or equal) 1011 = LT - N set and V clear, or N clear and V set (less than) 1100 = GT - Z clear, and either N set and V set, or N clear and V clear (greater than) 1101 = LE - Z set, or N set and V clear, or N clear and V

21、 set (less than or equal) 1110 = AL - always 1111 = NV - never,控制流指令,条件执行,条件执行避免使用分支指令 Example,使用条件执行,Note: add 2 letter condition after the 3-letter opcode,控制和分支指令,控制指令 分支和分支连接 跳到希望的指令中 保存当前的PC并返回 (with L bit)分支和交换 跳到期望的指令中与指令集交换 Rm0 = 1: Subsequent inst. are THUMB. Rm0 = 0: Subsequent inst. are AR

22、M.,分支和链接指令,分支子程序 (r14 serves as a link register)嵌套子程序,Full Descending,请求管理程序,管理程序是在特权级操作的程序,它可以实现用户级程序不能实现的任务 Example: send text to the displayARM ISA 包括 SWI (SoftWare Interrupt),转移表,根据程序计算值调用一个子程序,Note: slow when the list is long, and all subroutines are equally frequent,AREA HelloW,CODE,READONLY ;

23、声明代码区 SWI_WriteC EQU 读取下一字节CMP r0,#0 ;检查文本终点SWINE SWI_WriteC ;若非终点,则打印BNE LOOP ;并返回LOOPSWI SWI_Exit ;执行结束 TEXT = “Hello World”,&0a,&0d,0END ;程序结束,Example:Hello ARM World!,PSR 指令,PSR 指令(MRS, MSR) The MRS and MSR 指令是从数据处理指令子集形成的.instructions are formed from a subset of the Data Processing operations这些

24、指令允许访问 CPSR and SPSR 寄存器s: The MRS 指令允许把 CPSR or SPSR_寄存器中的内容移到通用寄存器中 The MSR 指令允许把通用寄存器中的内容移到CPSR or SPSR_ 寄存器中,协处理器指令 - 1,协处理器 一般原理是通过增加核扩展指令集 Example : 如 MMU & cache. FPU等系统控制器 寄存器 协处理器专用 ARM 控制数据流 协处理器只包含数据处理和存贮器传送操作 协处理器数据操作 (CDP) 这类指令是用来告诉协处理器执行某些内部操作 无结果返回ARM,ARM并不等待操作完成,协处理器指令 - 2,协处理器数据传送 (

25、LDC, STC) Load (LDC) or store (STC) 一个协处理器寄存器的子集直接到存储器 ARM is 负责提供存储器地址,协处理器提供或接收大量传送的数据或控制指令 协处理器寄存器传送 (MRC, MCR) 在ARM和协处理器之间的直接通讯信息 软件中断指令 (SWI) 在控制方式中用于进入管理员模式 该指令造成软件中断陷刊产生,它会影响模式改变,本节提要,1,3,2,5,4,6,ARM体系结构,ARM编程模型,微内核和一体化内核,ARM指令集,嵌入式实时操作系统,商用嵌入式操作系统,定义:用于嵌入式计算机的操作系统都称为嵌入式操作系统。它实际上代表着一个集合,最低端是简

26、单的监控程序,最高端则为通用操作系统。 嵌入式操作系统的特征 通常有实时要求:早期主要用于控制、通常为实时操作系统的代名词。CPU性能的提高、手持设备的出现、通用操作系统对实时进程的支持,使得RTOS和Embedded OS成了不同的名词。 许多嵌入式操作系统的内核是微内核结构:,嵌入式操作系统,嵌入式操作系统的特征(2),许多嵌入式系统都不带磁盘有的不支持文件系统支持文件系统,主要用于设备驱动,数据存于Ramdisk有磁盘也主要用于存储数据,os与可执行程序放在ROM 许多嵌入式操作系统不采用存储管理技术、不区分系统空间和用户空间。目的:简化结构、降低成本、改进效率影响:不区分核心态、用户态

27、,缺乏保护,OS内核与应用程序之间不再有物理的边界。 系统中的进程实际上全部是内核线程,共享同一内存空间。 内核和应用程序静态连接,应用软件开发调试不便:下载。 应用程序直接访问全部内核资源,内核开发维护混为一体。 每个进程的全局变量都是共享变量,需要互斥访问。 不同应用之间的函数可以相互调用,如果在函数中间可以发生调度,则要求函数可重入。 为了解决可重入的问题,有的OS提供进程变量。,注:(1)不区分系统空间和用户空间并不一定意味着应用程序和内核静态地连接在一起,如dos 注(2):不分系统空间和用户空间并不意味着不能使用页面映射技术,只要有MMU 注(3):即使采用了页式虚存,也不采用页面

28、交换技术。原因 :不带磁盘、实时要求,ROM写入慢,嵌入式操作系统的特征(3),“看门狗”支持:死循环硬件支持、OS设置控制点 嵌入式操作系统启动/引导时间短。引导时间主要花在:自检、系统映像的引导装入、系统的初始化上面 可移植性强:提供HAL/BSP,实时操作系统,定义:是能满足(来自应用的)实时要求的操作系统。 实时:一旦发生某种事件,系统就要能够“及时”作出反映充分发挥硬件潜能-综合速度快慢反应的速度在多大程度上得到满足的问题 硬实时:系统特定的时序得不到满足,将会引起灾难性的后果.任务:周期、执行时间、deadline、最坏响应时间准入控制RM、EDF调度算法 软实时:特定的时序得不到

29、满足,系统的性能会下降。,实时操作系统和通用操作系统的区别,通用OS追求的目标是总体效率,必要时宁可牺牲个别进程的反应速度来达到总体效率的提高。实时OS却反过来,宁可牺牲总体效率也要保证个别进程的反应速度。 通用OS公正性更重要,必要时宁可“劫富济贫”,实时OS则高优先级进程的运行更重要,必要时宁可“劫贫济富” 通用的性能分析是统计分析、平均值分析,实时则为最坏情况分析 通用OS可以充分利用的处理能力,实时需要有意让的处理能力供过于求,以确保反应速度和任务的完成。,实时操作系统的反应速度(1),(1)中断延时反映速度取决于:外部事件-中断请求-中断处理-服务进程 大多数处理机都不支持嵌套中断:

30、关中断时间LINUX中断处理的前半、后半,前半/后半之间的可能调度 优先级中断:中断是否响应取决于中断源和处理机的级别 中断延时的长短与具体指令系统的关系:CISC/RISC指令 系统调用中也可能关中断 DMA操作:让出了对内存的使用权,实时操作系统的反应速度(2),(2)调度延时(Scheduling Latency)事件处理的简易程度简单:中断处理程序中就可以完成复杂:中断处理+唤醒进程+进程调度+进程处理 (3)系统负荷:进程调度只能发生在完成了所有的嵌套中断处理之后系统的实时性只有在负荷合理时才能得到保证,在重负荷下谈论实时是没有意义的。,实时操作系统的反应速度(3),()调度策略如果

31、中断处理结束后发生的首次调度能选中目标进程,调度延时的大小只决定于CPU的速度、调度算法的复杂程度、就绪进程的多少,绝对值一般很小。但能否选中则决定于调度策略。Round Robin:就绪进程的多少、时间片的长短优先级调度:级别数量要足够多。POSIX.4规定了通过基于优先级的调度支持实时进程。 ()调度方式中断处理完成后,目标进程优先级当前进程,不存在立即调度的问题,否则,在可剥夺调度方式下需要立即调度,但可剥夺调度方式在实现技术上是有一定难度的,很多都不支持。,实时操作系统的反应速度(),不可剥夺调度的调度时机:当前进程系统调用当前进程运行受到阻碍当前进程时间片到,是否发生、何时发生是不可

32、预测的,可以估算出一个上限,但对实时要求往往不可接受,实时操作系统的反应速度(),Linux操作系统的进程调度(2.4):既不是完全的可剥夺,也不是完全的不可剥夺。)中断发生时当前进程正在用户空间运行,则可剥夺上下文:中断现场堆栈进程控制块)中断发生时,当前进程已经进入内核(系统调用或中断)则不可剥夺。?a) 内核中并发的上下文被串行化,如磁盘读写b) 用户进程可以访问的软件资源是独占的或者暂时是独占的(临界区),而系统调用是一个不可中断的原子操作。这就是为什么Linux调度只能发生在中断处理系统调用返回前夕的原因。为了实现内核的可剥夺,需要a)增加保护恢复的上下文,b)仔细分析代码,精确确定

33、哪些代码必须确保原子性。,实时操作系统的反应速度(),绝对意义的可剥夺是不可能的,不可剥夺窗口a) 正在进行进程调度切换的过程中b) 中断(包括异常)响应处理期间c) 不允许进程调度的临界区d) SMP结构中,必须保证多处理器间共享资源的互斥使用,是一种特殊的临界区e) DMA进行时,如果CPU本身已被挂起,当然就无“剥夺”可言了。尽量减小不可剥夺窗口。一般认为,只有可剥夺的OS才能称为实时OS.,可剥夺调度的优先级反转问题,信号量机制中:低优先级进程占有了信号量,高优先级进程必须等待。 优先级反转: 高优先级任务H 低优先级任务L 中优先级任务M 共享内存Y,写操作 信号量S,互斥,步骤1)

34、L取得S(P操作),但是未做V操作2)H中断,H运行态3)H写Y,但是Y的S被占用4)L重新取得控制权5)M出现,取得控制权,结果:M比H优先,如果不断有M出现,H不能执行,解决办法,优先级继承(priority inheritance) 设S为正占用着某项共享资源的进程P以及所有正在等待占用此项资源的进程的集合 找出S中的最高优先级Ph 置进程P的优先级为Ph 优先级封顶(priority ceiling) 设S为所有可能竞争使用某共享资源的进程集合,事先为S规定一个优先级上限Ph,S中所有进程的优先级都小于Ph 创建保护该项资源的信号量时,将Ph作为一个参数 每当进程通过信号量得到共享资源

35、的独占使用权时,将进程的优先级暂时置为Ph,释放资源时再恢复原来的优先级.,实时操作系统的反应速度(),()上下文切换延时(Context Switching Latency)与具体的CPU和OS有关采用MMU的OS要大于不采用MMU的OS 综上所述,延时主要来自两个方面: 切换时间:调度+切换,中断现场保护+中断响应延时差别不大,可预测 与资源剥夺有关的延时:调度延时:不可剥夺窗口-完成系统调用的时间中断延时:是否支持嵌套中断/中断处理的方式,LINUX的措施,LINUX(2.4)显然不是实时操作系统. 减小调度延时的措施: 对于执行时间较长而需要等待的外设操作,如果有适合调度的地方就主动要

36、求加以调度.如果需要等待的操作需要循环进行,就把主动的调度放在循环体内,使夹在两次调度之间不可剥夺窗口缩短. 在执行较长的操作之前,或在两次这样的操作之间,先检查当前进程是否接收到了信号,如果接收到了信号则暂停/流产本次操作.将调度延时限制在合理并且多数实时应用可以接受的范围内. -这些措施同样适用于应用程序.,Linux的实时性,一般的通用linux已经具备一定的实时性 但无法满足硬实时的要求 运行于linux内核空间的进程(核心态)不能被抢占 在linux中,中断有时候会出于保护临界区操作的目的而被屏蔽 通用linux的时间滴答长度为10ms,但是这对于时间精度要求很高(微秒级)的实时进程

37、来说是不够的,分时系统,Linux ( UNIX )的负反馈过程p_cpu p_pri 进程优先权 被调度的机会被调度的机会 进程优先权 p_pri p_cpu纯粹的分时系统中,进程优先级相差不大,高优先级进城慢慢地变成了低优先级进程,不能满足实时要求。解决办法:(1) 取消负反馈(2) 区分两类进程:同类进程FIFO或轮转Linux实时进程优先级加基数1000,Linux 2.6内核实时性分析,Linux 2.6中内核自身是可抢占的,它允许自身在执行任务时被打断 Linux 2.6版本的内核使用了由 Ingo Molnar 开发的新的调度器算法,称为O(1)算法,RTLinux硬实时操作系统

38、简介,RTLinux是一硬实时操作系统 实现了一个微内核的小的实时操作系统,而将普通Linux系统作为一个该操作系统中的一个低优先级的任务来运行 普通Linux系统中的任务可以通过FIFO和实时任务进行通信 通过软件来模拟硬件的中断控制器 RT-Linux通过将系统的实时时钟设置为单次触发状态,可以提供十几个微秒级的调度粒度,RTLinux内核结构,时钟节拍,时钟中断称为系统的脉搏分时系统中,没有时钟中断,就有可能使系统停止调度.按优先级调度的系统中,相同优先级的进程调度采用轮转方式,时钟中断可能是进程调度的唯一动力.进程延时类系统调用,需要时钟中断到点时唤醒.许多实时任务都是周期任务,其操作

39、是由时间驱动的.,时钟精度,时钟精度取决于时钟中断的周期. 周期任务的周期数是时钟中断周期的整数倍. 要增加时钟精度,最简单的办法是提高中断的频率.linux:HZ 100, 10ms 每次时钟中断的处理时间大约为1sHZ 10000 ,10 sCPU速度的提高来提高精度,时钟频率从800M到900M即能消耗这10%的开销中断延时带来的时间漂移(jitter)硬件定时器只受中断延时的影响,本节提要,1,3,2,5,4,6,ARM体系结构,ARM编程模型,微内核和一体化内核,ARM指令集,实时操作系统,商用嵌入式操作系统,通用操作系统的体系结构一体化内核结构,通用计算机有个开放的用户群,内核大而

40、全.用户群局限于某个特定领域时,提供系统生成工具供裁剪,一体化内核操作系统用于嵌入式环境,嵌入式系统的用户群及对功能的要求相对封闭,不需要大而全的内核。 footprint价格、功耗、散热 可修改性及与可维护性设备驱动程序 不可剥夺窗口变小,微内核,最小内核,进程管理:PCB、调度、切换、进程的创建与退出、优先级设置、进程通信手段。 中断的响应和处理:响应中断、保存上下文、分发中断、处理中断、中断退出、恢复上下文。 存储管理:进程地址映射表的建立与切换、分配及回收内存空间、管理已分配空间及相关数据结构。,最小内核:进程管理、存储管理、进程通信、中断响应框架,关于设备驱动和中断管理,处理器对I/

41、O接口的两种处理方式 特权指令:I/O寄存器有一个独立的I/O地址空间,与内存无关,必须在核内。 I/O 寄存器与内存统一编址,不需要特权指令,可以作到核外。带来的安全性问题,在嵌入式系统中可能并不重要,“可信”软件。 在区分系统空间/用户空间的情况下,设备驱动/中断处理移到核外的可能措施: (1)I/O操作的变通办法:(2)特殊的轻型系统调用命令(3)特权指令异常处理(4)特殊的系统调用;,本节提要,1,3,2,5,4,6,ARM体系结构,ARM编程模型,微内核和一体化内核,ARM指令集,实时操作系统,商用嵌入式操作系统,VxWorks,多线程嵌入式操作系统 :所有进程代码与内核代码静态连接

42、在一起,运行于同一空间。3000多个系统调用(函数) 提供进程变量手段:进程范围内的全局量与进程控制块相联系 可剥夺调度:不可剥夺窗口很小,文件系统在不可剥夺窗口之外为用户进程提供暂时禁止剥夺的手段不提供地址映射,MMU只提供访问保护功能优先级调度并提供时间片轮转调度优先级继承算法防止反转,QNX典型的微内核操作系统结构,除内核外包含的若干基本进程:进程管理线程:进程主管,进程名为proc,内核线程文件系统管理进程:Fsys设备管理进程:Dev网络管理进程:Net 提供MMU,每个进程单独开发调试 API符合POSIX标准 可剥夺调度:按优先级,没有负反馈。优先级反转问题可采用以继承方式或者不考虑。 Photon:类似于X Window的图形界面,WinCE,微内核结构 可剥夺调度 页式存储管理,采用页面换入技术 基于优先级(8级)的“可剥夺”调度。 对于相同优先级的进程采用两种方式:最高优先级(0级):允许运行到自愿释放为止其他: Round Robin 应用软件和设备驱动程序都提供禁止被剥夺/被中断的手段,是否真的可剥夺取决于这些窗口的大小是否合理。 适合需要较强人机界面的应用,一些公开源码的嵌入式操作系统,C/OS Linux Nucleus VxWorks Mach,谢 谢 各 位,

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报