天脉2(ACoreOS653)操作系统学习01

由于我的毕业设计涉及相关嵌入式操作系统,故最近学了学天脉2操作系统。

一、ARINC653标准

1.ARINC653标准是什么?

ARINC 653 : ARINC公司的600系列标准的一部分,全名“ Avionics Application Software Standard Interface”。是为满足综合模块化航电系统(IMA)要求,基于计算机资源时空分区的编程接口标准。

发展:在传统的嵌入式实时操作系统中,内核和应用都运行在同一特权级,应用程序可以无限制的访问整个系统地址空间。因此在某些情况下,应用的潜在危险动作会影响其他应用和内核的正常运行,甚至导致系统崩溃或者误操作。为了满足航空电子对高可靠性、高可用性以及高服务性的要求, 1997年1月ARINC发布了ARINC653(航空电子应用软件标准接口),并于2003年7月发布ARINC653 Supplement 1,对区间管理、区间通信及健康监测部分进行了补充说明,用以规范航空电子设备和系统的开发。 分区(Partitioning)是ARINC653中一个核心概念。

目的:解决由于综合化、模块化带来的故障隔离问题。

定义:航电计算机操作系统与应用的通用接口;

作用:标准服务接口,包括:控制调度、通信和获得内部处理单元的信息等;

目标:应用软件可独立开发,运行在同一硬件平台上。

特征:采用ARINC653标准的操作系统设计原理将传统操作系统分为两级,一个是CoreOS,任务是区间化以及区间的管理和调度,CoreOS的上层就是POS,即分区操作系统,在POS的上层才是应用程序的执行。

2.ARINC653体系结构

从用户角度观察的协议层次划分:

核心模块(core module):一个至少包含了处理器资源和存储器资源的模块。该模块支持对其内存空间、处理时间和I/O等资源进行限制和隔离,以分成多个时间和空间上相互隔离的子系统。

核心操作系统(core O/S):管理核心模块、分区、APEX接口的操作系统。

分区(partition):包括代码和数据的程序,它可以被装载到核心模块中的一个独立的地址空间(核心模块的子系统)。运行在核心模块上一个分区由一个或多个并发执行的进程组成,分区内所有进程共享分区所占有的子系统资源。

端口(port):分区定义的资源,用于在指定的通道上发送或接收消息。端口的属性规定了它对消息传输的控制以及所传输消息的特性。

通道(channel):分区通信的一个途径,它由一组逻辑上相互连接的端口组成。

APEX服务(service):APEX<APplication EXecutive>定义的每个系统调用功能称为一个“服务”,标准的服务描述中只确定数据类型名称、服务名称、参数名称和参数的顺序,而忽略过程的实现。

3.ARINC653标准

分为4个部分:

  • PART 1-Required Services:基本服务(重点)

  • PART 2-Extended Services:扩展服务

  • PART 3-Confirmity Test Specification:符合性测试规范

  • PART 4-Subset Services:受限制的服务子集。

PART 1提供的标准服务接口:

  • 分区管理:对运行在核心模块上的多个应用软件按功能可划分为多个分区,一个分区由一个或多个并发执行的进程组成,分区内所有进程共享分区所占有的系统资源。操作系统对分区所占用的处理时间、内存和其它资源拥有控制权,从而使得核心模块中各分区相互独立。

    分区管理保证了同时运行的多个不同类型的应用软件集合在时间上和空间上互不影响。

  • 进程管理:每个分区由一个或多个进程组成,进程管理主要负责分区内进程的创建、调度和删除等工作。进程分为按固定频率执行的周期进程和由事件触发的非周期进程两类。

  • 时间管理:核心模块内分区的时间管理中的时间是唯一的,所有进程、分区、通信的时间值或者时间性能都与这个唯一的时间有关,与分区的执行与否无关。进程启动时,它的截止时间被置为当前时间加上时间量。操作系统时间管理为分区调度提供时间片、持续时间、周期;为进程调度提供时间量;为分区间和分区内通信提供超时、刷新率。

    在分区窗口之外发生的超时(延时或截止时间),在下一个分区窗口开始时继续起作用。

  • 存储管理:核心模块内,分区及与它相关的存储空间分配在系统配置(ARINC 653 Configuration files)时定义。

  • 分区内通信:分区内通信指同一分区内进程之间的通信。

    ARINC 653定义的分区内进程通信机制,包括:缓存队列(Buffers-Queue)、黑板(Blackboards)、信号量(Semaphores)和事件(Events)。其中缓存队列和黑板用于进程间通信,信号量和事件用于进程间同步与互斥。

    缓存队列允许其中的消息以队列形式存储,消息不允许覆盖;

    黑板在任何时刻最多只保留一个消息,消息允许覆盖。

    信号量提供对资源的受控访问;

    事件通过通知等待进程某种条件的发生来支持进程间同步控制。

  • 分区间通信:分区间通信是指在同一核心模块或不同核心模块上运行分区之间的通信。

    分区间通信可分为四类:

    a) 同一核心模块内分区间的通信;

    b) 同一机箱内不同核心模块上的分区间的通信;

    c) 不同机箱的分区间的通信;

    d) 航空电子系统与其它设备之间的通信。

  • 健康监控:用于监视核心处理模块硬件、应用软件和操作系统的状态,当发现故障时,记录故障并进行故障隔离,防止故障蔓延,同时按故障级别(模块级、分区级和进程级)进行必要的恢复。

二、ARINC653与天脉2(ACoreOS653)

1.天脉2(ACoreOS653)基本描述

2.体系结构对比

天脉2(ACoreOS653)体系结构:

ARINC653体系结构:

可以看出天脉2(ACoreOS653)是遵循ARINC653标准而构建的嵌入式实时操作系统。

如有侵权,告知必删。

天脉2(ACoreOS653)操作系统学习01的更多相关文章

  1. 天脉2(ACoreOS653)操作系统学习02

    天脉2(ACoreOS653)操作系统学习02 一.分区内通信方法 分区内通信指同一分区内进程之间的通信.ARINC 653定义的分区内进程通信机制,包括:缓存队列(Buffers-Queue).黑板 ...

  2. Java虚拟机JVM学习01 流程概述

    Java虚拟机JVM学习01 流程概述 Java虚拟机与程序的生命周期 一个运行时的Java虚拟机(JVM)负责运行一个Java程序. 当启动一个Java程序时,一个虚拟机实例诞生:当程序关闭退出,这 ...

  3. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  4. 操作系统学习笔记(五)--CPU调度

    由于第四章线程的介绍没有上传视频,故之后看书来补. 最近开始学习操作系统原理这门课程,特将学习笔记整理成技术博客的形式发表,希望能给大家的操作系统学习带来帮助.同时盼望大家能对文章评论,大家一起多多交 ...

  5. Android Testing学习01 介绍 测试测什么 测试的类型

    Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...

  6. Java学习01

    Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; J ...

  7. ThinkPhp学习01

    原文:ThinkPhp学习01 一.ThinkPHP的介绍           MVC  M - Model 模型                工作:负责数据的操作  V - View  视图(模板 ...

  8. Linux操作系统学习_操作系统是如何工作的

    实验五:Linux操作系统是如何工作的? 学号:SA1****369 操作系统工作的基础:存储程序计算机.堆栈(函数调用堆栈)机制和中断机制 首先要整明白的一个问题是什么是存储程序计算机?其实存储程序 ...

  9. 【iScroll源码学习01】准备阶段 - 叶小钗

    [iScroll源码学习01]准备阶段 - 叶小钗 时间 2013-12-29 18:41:00 博客园-原创精华区 原文  http://www.cnblogs.com/yexiaochai/p/3 ...

随机推荐

  1. Linux下chkconfig

    1.chkconfig命令用于检查,设置系统的各种服务! 2.chkconfig语法 chkconfig [--add] [--del] [--list] [系统服务] 或 chkconfig [-- ...

  2. 区间DP的瞎扯淡

    写在前面连个引言都不加就直接开1. 区间DP状态常见模板: f[i][j]常常表示第i个到第j个这个区间内达到题目要求,所需要的最小值(最大值) 如: 1. [石子合并](https://www.lu ...

  3. Qt 6.0精简WebEngine SerialPort Multimedia等成为半残GUI框架一览

    由于 Qt 集成了大量成熟模块,使之成为 C++ 领域中最好用的开源技术跨平台 GUI 开发框架.基于 Qt 能开发 Windows MacOS 传统桌面或无 GUI 应用程序.Unix/Linux ...

  4. IKEv2协议关键知识点总结整理

    文章目录 @[toc] 1. IKEv2基本原理 2. IKEv2协议重点注意事项 2.1 情景一:==IKEv2协商密钥逻辑== ①密钥协商流程 ②函数调用关系 ③流程简述 2.2 情景二:==使用 ...

  5. VUE002. 动态使用webpack打包处理后的静态图片路径({ img: require('xxx.png') })

    案例摘要 需求是通过v-for循环渲染数组中数据,其中包括本地包的图片文件.话不多说直接上代码: <a-radio-group class="template-radio"& ...

  6. jquery实现强制刷新

    $('iframe.active').attr('src', $('iframe.active').attr('src'));

  7. Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网关Ocelot+Consul

    相关文章 Consul+Ocelot+Polly在.NetCore中使用(.NET5)-Consul服务注册,服务发现 Consul+Ocelot+Polly在.NetCore中使用(.NET5)-网 ...

  8. TP5.0版本mysql查询语句 闭包

    Db::name('tiwen') ->where('user_id', $user_id) ->where(function ($query) { $query->where(fu ...

  9. webpack4. 使用autoprefixer 无效

    解决办法: 在package.json文件中加上这个 "browserslist": [ "defaults", "not ie < 11&qu ...

  10. Java之SpringBoot自定义配置与整合Druid

    Java之SpringBoot自定义配置与整合Druid SpringBoot配置文件 优先级 前面SpringBoot基础有提到,关于SpringBoot配置文件可以是properties或者是ya ...