嵌入式操作系统复习——详细

绪论

嵌入式系统

1、嵌入式系统概念:嵌入式计算机系统是以应用为中心、以计算机技术为基础、软件硬件可裁剪,同时适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
2、嵌入式系统的组成

  • 嵌入式系统一般由嵌入式硬件和软件组成
  • 硬件以微处理器为核心,集成存储器和系统专用的I/O设备
  • 软件包括:初始化代码及驱动、嵌入式操作系统、应用程序等

3、嵌入式系统的特点
嵌入式系统发展至今,具备了许多与通用计算机不同的特点,主要包括以下五点:

  1. 系统资源受限制——即面向特定应用
  2. 具有实时约束
  3. 要求较高的可靠性和稳定性
  4. 大多数嵌入式系统要求低功耗
  5. 嵌入式系统开发需要专用工具特殊方法

因为嵌入式系统资源受限,一般不具备自主开发能力,产品发布后,用户通常不能对其中的软件进行修改,必须有一套专门的开发环境
该开发环境包括专门的开发工具(包括设计、编译、调试、测试等工具),采用交叉开发的方式进行。

嵌入式操作系统

1、嵌入式操作系统概念:顾名思义,用于嵌入式系统的操作系统。具有通用操作系统的基本特点,又具有系统实时性、硬件的相关依赖性、软件固态化以及应用的专用性等特点。
2、嵌入式操作系统通常包括与硬件相关的底层驱动协议、系统内核、设备
驱动接口、通信协议、图形界面、标准化浏览器BrowSer等。
3、嵌入式操作系统的重要指标

  • 实时性(中断响应时间、任务切换时间等)
  • 尺寸(可裁剪性)
  • 可扩展性(内核、中间件)等

4、嵌入式操作系统的特点:嵌入式操作系统(Embedded Operating System,简称EOS)是相对于一般操作系统而言的,它除了具备一般操作系统的最基本功能,如任务调度、同步机制、中断处理、文件功能外,还有以下特点:

  1. 具有开放性、可伸缩性的体系结构;
  2. 强实时性;
  3. 统一的接口;
  4. 操作方便、简单、提供友好的图形GUI;
  5. 提供强大的网络功能;
  6. 强稳定性,弱交互性;
  7. 固化代码;
  8. 良好的移植性。

5、EOS的分类

类别 描述
商用型 系统功能稳定、可靠,有完善的技术支持,但价格昂贵,如VxWorks、WinCE等
免费型 价格方面有优势,主流的有嵌入式Linux、uCOS都是源码开放的商业EOS

嵌入式系统硬件和软件基础

嵌入式硬件系统基本组成

  • 嵌入式系统的硬件是以嵌入式微处理器为核心,主要由嵌入式微处理器、总线、存储器、输入/输出接口和设备组成。
  • 嵌入式系统的大多数输入/输出接口和部分设备已经集成在嵌入式微处理器中。

嵌入式微处理器

嵌入式微处理器体系结构:
嵌入式操作系统复习——详细
嵌入式微处理器分类:

  • 按位数可分为4、8、16、32、64位
  • 按用途来分,嵌入式微处理器可分为嵌入式DSP和通用的嵌入式微处理器两种:
    • 嵌入式DSP:专用于数字信号处理,采用哈佛结构,程序和数据分开存储,采用一系列措施保证数字信号的处理速度,如对FFT(快速傅立叶变换)的专门优化。
    • 通用的嵌入式微处理器:一般是集成了通用微处理器的核、总线、口和设备的SOC芯片,有些还将DSP作为协处理器集成。

嵌入式系统总线

嵌入式操作系统复习——详细

嵌入式系统存储结构

存储结构:
嵌入式操作系统复习——详细

嵌入式软件体系结构

1、软件(software)是计算机系统中与硬件(hardware)相互依存的另一部分,它包括程序(program)、相关数据(data)及其说明文档(document)。 其中:

  • 程序是按照事先设计的功能和性能要求执行的指令序列;
  • 数据是程序能正常操作信息的数据结构;
  • 文档是与程序开发、维护、使用相关的各种图文资料。

2、嵌入式软件的特点:

  1. 规模小,开发难度大;
  2. 快速启动,直接运行;
  3. 实时性和可靠性要求高;
  4. 程序一体化;
  5. 两个平台,交叉开发

3、嵌入式软件分类:

类别 描述 举例
系统软件 控制、管理计算机系统资源 嵌入式操作系统、嵌入式中间件(Java、CORBA)等等
支撑软件 辅助软件开发的工具 系统分析设计工具、仿真开发工具、交叉开发工具等
应用软件 面向应用领域 手机软件、交换机软件、路由器软件等

4、嵌入式软件体系结构图
嵌入式操作系统复习——详细

嵌入式操作系统体系结构

  • 嵌入式操作系统体系结构:体系结构是操作系统的基础,它定义了硬件与软件的界限、内核与操作系统其它组件(文件、网络、GUI等)的组织关系、系统与应用的接口。
  • 体系结构是确保系统的性能、可靠性、灵活性、可移植性、可扩展性的关键
  • 体系结构分类:单块结构、层次结构和客户/服务器(微内核)结构
  • 目前嵌入式操作系统主要采用分层和模块化相结合的结构或微内核结构。

层次+模块结构:
嵌入式操作系统复习——详细

操作系统基础知识

1、操作系统定义:操作系统是用以控制和管理计算机硬件和软件资源、合理地组织计算机的工作流程以及方便用户使用计算机的程序的集合。

  • 1、操作系统统一控制和管理计算机系统所拥有的硬件和软件资源,使之可以得到更加有效合理的利用。
  • 2、操作系统能合理地组织计算机系统的工作流程,增强系统的处理能力。
  • 3、操作系统提供了用户与裸机之间的接口,使用户更方便地使用计算机。

2、操作系统的功能:操作系统的基本功能包括:

  • 处理机管理;
  • 存储管理;
  • 设备管理;
  • 信息管理(文件系统管理)
  • 作业管理等

3、操作系统的根本目标:实现系统资源的最大吞吐率,使用户充分、有效的利用系统资源。

μC/OS-II应用编程

1、μC/OS-II是一种专门为嵌入式设备设计的,基于优先级可抢先式硬实时EOS内核。

内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。

2、μC/OS-II特点:

  • 执行效率高
  • 占用空间小
  • 实时性能优良
  • 可扩展性强

3、实时系统:实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产生结果的时间。如果未满足系统的时间约束,则认为系统失败。
4、一个实时操作系统面对变化的负载时必须确定性地保证满足时间要求。请注意,必须要满足确定性,而不是要求速度足够快!
5、硬实时:硬实时系统指系统要有确保的最坏情况下的服务时间,即对于事件的响应时间的截止期限是无论如何都必须得到满足。
6、软实时:软实时系统就是那些从统计的角度来说,一个任务能够得到有确保的处理时间,到达系统的事件也能够在截止期限到来之前得到处理,但违反截止期限并不会带来致命的错误。
7、μC/OS-II的内核功能:

  • 任务调度
  • 任务管理
  • 时间管理
  • 内存管理
  • 任务间的通信和同步

8、任务的定义:任务是一个具有独立功能的无限循环的程序段的一次运行活动。任务(task)是最抽象的,是一个一般性的术语,指由软件完成的一个活动。一个任务既可以是一个进程,也可以是一个线程。简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。
9、EOS任务的特性:

  • 任务(task)通常为进程和线程的统称;
  • 任务是EOS内核调度的基本单位

程序:程序(program)是一组指令的有序集合。
进程:进程(process)常常被定义为程序的执行。可以把一个进程看成是一个独立的程序,在内存中有其完备的数据空间和代码空间。
线程:线程(tread)则是某一进程中一路单独运行的程序。也就是说,线程存在于进程之中。一个进程由一个或多个线程构成,各线程共享相同的代码和全局数据,但各有其自己的堆栈。由于堆栈是每个线程一个,所以局部变量对每一线程来说是私有的。由于所有线程共享同样的代码和全局数据,它们比进程更紧密,比单独的进程间更趋向于相互作用,线程间的相互作用更容易些,因为它们本身就有某些供通信用的共享内存:进程的全局数据。

10、任务的内容:

  • 代码:一段可执行的程序
  • 数据:程序所需要的相关数据(变量、缓冲区等)
  • 堆栈
  • 程序执行的上下文环境

11、任务参数
11.1 任务的优先级
(1)任务对应工作内容在处理上的优先程度
(2)优先级越高,表明任务越需要得到优先处理
(3)任务的优先级分为静态优先级和动态优先级:

  • 静态优先级:任务的优先级被确定后,在系统运行过程中将不再发生变化;
  • 动态优先级:系统运行过程中,任务的优先级是可以动态变化的。

11.2 任务周期:周期任务所具有的参数,表示任务周期性执行的间隔时间
11.3 任务的计算时间:任务在特定硬件环境下被完整执行所需要的时间,也被称为是任务的执行时间(execution time)。
11.4 就绪时间:任务具备了在处理器上被执行所需要条件时的时间
11.5 截止时间:任务需要在该时间到来之前被执行完成

12、任务的状态与变迁
任务拥有的资源情况发生变化导致任务状态发生改变嵌入式操作系统复习——详细
13、任务管理:任务管理是通过对任务控制块(Task Control Block,TCB)的操作来实现的。
14、任务控制块:任务控制块是包含任务相关信息的数据结构,包含了任务执行过程中所需要的所有信息

  • 任务的名字
  • 任务执行的起始地址
  • 任务的优先级(优先级机制的EOS内核中)
  • 任务的状态
  • 任务的硬件上下文(堆栈和指针、PC和寄存器等)
  • 任务的队列指针等内容

15、任务管理机制

  • 任务管理用来对任务状态的直接控制和访问
  • 内核的任务管理是通过系统调用来体现,主要包括任务创建、任务删除、任务挂起、任务唤醒、设置任务属性、改变任务优先级、获取任务信息等内容。

16、任务调度
1)任务队列:由任务控制块组成
嵌入式操作系统复习——详细
单等待队列:
嵌入式操作系统复习——详细
多等待队列:
嵌入式操作系统复习——详细
2)任务调度-优先级位图算法
3)任务切换基本步骤:

  1. 保存任务的上下文环境
  2. 更新当前运行任务的TCB内容,将其status改为就绪或者等待
  3. 将任务控制块移到相应队列(就绪队列或者等待队列)
  4. 选择另一个任务进行执行(调度)
  5. 改变需投入运行任务的控制块内容,将其状态变为运行状态
  6. 恢复需要投入运行任务的上下文环境

16、任务调度

  • 调度用来确定多任务环境下任务执行的顺序和在获得CPU资源后能够执行的时间长度。
  • 内核通过一个调度程序来实现调度功能

17、调度算法:在一个特定时刻用来确定将要运行的任务的一组规则
18、离线调度和在线调度:根据获得调度信息的时机。
嵌入式操作系统复习——详细
19、抢占式调度和非抢占式调度:任务在运行过程中能否被打断的处理情况。
嵌入式操作系统复习——详细
20、内核的可抢占性
嵌入式操作系统复习——详细
不可抢占内核:
嵌入式操作系统复习——详细
可抢占内核:
嵌入式操作系统复习——详细
21、静态和动态调度
嵌入式操作系统复习——详细
22、基于优先级的可抢占调度方式:如果出现具有更高优先级的任务处于就绪状态时,当前任务将停止运行,把CPU的控制权交给具有更高优先级的任务,使更高优先级的任务得到执行。
嵌入式操作系统复习——详细
23、时间片轮转调度:当有两个或多个就绪任务具有相同的优先级,且它们是就绪任务中优先级最高的任务时,任务调度程序按照这组任务就绪的先后次序调度第一个任务,让第一个任务运行一段时间,然后又调度第二个任务,让第二个任务又运行一段时间,依次类推,到该组最后一个任务也得以运行一段时间后,接下来又让第一个任务运行。任务运行的这段时间称为时间片
嵌入式操作系统复习——详细
24、总结:

调度用来确定多任务环境下任务执行的顺序和在获得CPU资源后能够执行的时间长度
操作系统通过一个调度程序来实现调度功能。调度本身需要一定的系统开销,需要花费时间来计算下一个可被执行的任务。
调度程序的设计需要优先考虑最重要的需求,然后在各种因素之间进行折衷处理
常用的任务调度算法有基于优先级的可抢占调度时间片轮转调度算法

未完待续…