天脉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. Python - 面向对象编程 - MRO 方法搜索顺序

    为什么会讲 MRO? 在讲多继承的时候:https://www.cnblogs.com/poloyy/p/15224912.html 有讲到, 当继承的多个父类拥有同名属性.方法,子类对象调用该属性. ...

  2. 使用Mosquitto实现MQTT客服端C语言

      上一篇文章已经将mosquitto移植到了arm平台上,现在将使用mosquitto完成mqtt客服端的demo,了解过mqtt协议的小伙伴都知道,mqtt主要分为代理服务器.发布者.订阅者三部分 ...

  3. epoll经典代码示例

    1. epoll原理 原理性的知识不再另做说明,我在这里附上收藏整理的两篇经典文章: select与epoll的本质关系. select.poll.epoll之间的区别. 2. epoll服务器端经典 ...

  4. C# Dapper基本三层架构使用 (一、架构关系)

    Dapper是一款轻量级ORM工具.如果你在小的项目中,使用Entity Framework.NHibernate 来处理大数据访问及关系映射,未免有点杀鸡用牛刀.你又觉得ORM省时省力,这时Dapp ...

  5. python库--tensorflow

    方法 返回值类型 参数 说明 张量    .constant() Tensort 张量 实例t value 创建一个常量tensor dtype=None 输出类型 shape=None 返回tens ...

  6. 源码编译安装LAMP

    LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境.LAMP是一个缩写词,具体包括Linux操作系统.Apache网站服务器 ...

  7. Java XXE漏洞典型场景分析

    本文首发于oppo安全应急响应中心: https://mp.weixin.qq.com/s?__biz=MzUyNzc4Mzk3MQ==&mid=2247485488&idx=1&am ...

  8. 【第十四篇】- Maven 自动化构建之Spring Cloud直播商城 b2b2c电子商务技术总结

    Maven 自动化构建 自动化构建定义了这样一种场景: 在一个项目成功构建完成后,其相关的依赖工程即开始构建,这样可以保证其依赖项目的稳定. 比如一个团队正在开发一个项目 bus-core-api, ...

  9. 记一次docker compose的低级错误

    记一次docker compose的低级错误 问题 ​ 今天在学习dockercompose的时候,启动docker compose up,结果却出现异常 Error response from da ...

  10. PHP的rar解压读取扩展包学习

    作为压缩解压方面的扩展学习,两大王牌压缩格式 rar 和 zip 一直是计算机领域的压缩终结者.rar 格式的压缩包是 Windows 系统中有接近统治地位的存在,今天我们学习的 PHP 扩展就是针对 ...