- 1、本文档共117页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch5嵌入式操作系统(阅读)
嵌入式系统设计大学教程 主要内容 5.1 嵌入式系统的进程 5.2 嵌入式操作系统的中断和时钟管理 5.3 嵌入式操作系统的内存管理 5.4 常用嵌入式操作系统 5.4.1 ?C/OS-II 5.4.2 Linux操作系统 5.1 嵌入式系统的进程 5.1.1 进程的概念 进程是可并发执行的、具有独立功能的程序在一个数据集合上的运行过程,是操作系统进行资源分配和保护的基本单位。 一个进程可以简单地认为是一个程序在系统内的唯一执行。 多道程序技术 进程、线程和任务 什么是进程? 进程的特性 5.1 嵌入式系统的进程 5.1.1 进程的概念 进程包括它的指令代码和数据,也包括程序计数器(PC)和CPU中所有的寄存器,还包括存放在进程堆栈中的临时数据、返回地址以及变量。 什么是线程? Why线程? 单进程的实现方法 多进程的实现方法 怎么办? 什么是线程? 单CPU上的多进程示意 5.1 嵌入式系统的进程 5.1.2上下文切换 使CPU从一个正在执行的进程转向另一个进程的机制称为上下文切换(又称文境切换)。 文境切换必须是没有任何缺陷的,并且文境切换在CPU内能非常迅速地执行。 文境切换的形式主要有两种: 协作多任务处理 抢先多任务处理 5.1.2 上下文切换 1.协作多任务处理 采用协作多任务处理的系统中,正在执行的进程将主动地放弃CPU等资源,让给另一个进程。 协作多任务处理的系统中,每个进程中包含一个对文境切换函数的调用,该函数调用并不启动一个新的进程执行,只是在另一个进程中进行状态复制。 5.1.2 上下文切换 2. 抢先多任务处理 抢先多任务处理的文境切换模式中,采用了中断机制来实现文境切换,强制旧进程把控制权交给新进程。 抢先多任务处理的基本硬件配置需要一个定时器部件周期性地产生CPU中断信号。在定时器的中断服务程序中,保存旧的进程状态信息,并选择下一个需要执行的进程,切换进程的文境。 5.1 嵌入式系统的进程 5.1.3进程状态 进程的基本调度状态可归为3种: 就绪状态、运行状态和阻塞状态。 5.1 嵌入式系统的进程 5.1.4 进程调度 进程是并发机制的实体和基础,调度则是实现并发机制的手段。 所谓进程调度,是指在系统中所有的就绪进程里,按照某种策略确定一个合适的进程并让处理器运行它。进程调度应使用恰当的调度算法,以确保公平。 5.1 嵌入式系统的进程 5.1.4 进程调度 进程调度程序必须从系统所有能运行的进程中找出下一个最应该执行的进程。 合适的进程调度方法是每次进程只执行一段少量的时间,当这一段时间用完后,在下一段时间内,选择另一个就绪的、优先级最高的进程执行。这段执行的少量时间被称为时间片。 5.1.4 进程调度 1. 时间属性需求 进程的两个重要的时间属性需求是:进程启动时间和进程期限。 启动时间是进程从等待状态进入就绪状态的时间。 进程期限描述了什么时候进程的运行必须结束。 5.1.4 进程调度 1. 时间属性需求 速率需求也是常见的时间属性需求之一。 速率需求描述了进程调度器必须以多快的频率来启动进程。 这个参数又被称为启动时间间隔。周期性进程的启动时间间隔一般等于它的循环周期。 5.1.4 进程调度 2. 调度策略的性能指标 CPU利用率表示对于给定的一组任务,这些任务所使用的整个CPU资源的比率。 可调度性表示对于给定的一组任务,如果所有任务都能满足截止时间的要求,这些任务就是可调度的。 调度开销是指选择下一个要执行的进程所需花费的时间,它发生在任何文境切换之前。 5.1.4 进程调度 3. 几种调度策略 实时调度方法大致可以划分为以下三类: 离线(off-line)和在线(on-line)调度 抢占(preemptive)和非抢占(non-preemptive)调度 静态(static)和动态(dynamic)调度 5.1.4 进程调度 (1)离线调度和在线调度 根据获得调度信息的时机,调度算法分为离线调度和在线调度两类。 离线调度算法的调度信息在系统运行之前就确定了,如时间驱动的调度(clock-driven scheduling)。离线调度算法具有确定性,但缺乏灵活性,适用于那些特性能够预先确定,且不容易发生变化的应用。 5.1.4 进程调度 (1)离线调度和在线调度 在线调度算法的调度信息则在系统运行过程中动态获得,如优先级驱动的调度(如EDF,RMS等)。在线调度算法在形成最佳调度决策上具有较大的灵活性。 5.1.4 进程调度 (2)抢占式调度和非抢占式调度 在抢占式调度算法中,正在运行的任务可能被其他任务所打断。在非抢占式调度算法中,一旦任务开始运行,该任务只有在运行完成而主动放弃CPU资源,或是因为等待其它资源被阻塞的情况下才会
文档评论(0)