天脉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 - 导入的位置

    导入的是什么 导入是将 Python 的一些功能函数放到当前的脚本中使用 不导入的功能无法直接在当前脚本使用(除了 python 自带的内置函数) Python 有很多第三方功能,假设想要使用,都必须 ...

  2. Linux常用命令 - tail命令详解

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 实时刷 ...

  3. SVN无法查看最近日志和提交记录

    现象: 使用SVN查看最近的提交记录日志时,最近总是无法显示出全部的日志内容,只能显示到几天之前的日志.就算是自己刚提交的代码也是无法没有记录的. 解决方式:右键选择TortoiseSVN中的&quo ...

  4. 记录一次sql注入绕过

    目标:http://www.xxxxx.net/temp.asp?ID=10359 通过 and 1=1 and 1=2 测试发现存在拦截 首先想到 and 空格 = 可能存在触发规则 一般遇到这种情 ...

  5. Android使用百度语音识别api代码实现。

    第一步 ① 创建平台应用 点击百度智能云进入,没有账号的可以先注册账号,这里默认都有账号了,然后登录. 然后左侧导航栏点击找到语音技术 然后会进入一个应用总览页面, 然后点击创建应用 立即创建 点击查 ...

  6. [第三篇]——CentOS Docker 安装之Spring Cloud直播商城 b2b2c电子商务技术总结

    CentOS Docker 安装 Docker 支持以下的 64 位 CentOS 版本: CentOS 7 CentOS 8 更高版本... 使用官方安装脚本自动安装 安装命令如下: curl -f ...

  7. Linux中不用用户可以使用相同的uid

    usermod -u 513 -o  tom 使得用户tom可以使用uid等于513,即使513已经被其他用户使用了

  8. KMP算法解决字符串匹配问题

    要解决的问题 假设字符串str长度为N,字符串match长度为M,M <= N, 想确定str中是否有某个子串是等于match的.返回和match匹配的字符串的首字母在str的位置,如果不匹配, ...

  9. 【PHP】随机生成名字

    public function test(){ $a = "赵 钱 孙 李 周 吴 郑 王 冯 陈 楮 卫 蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 孔 曹 严 华 金 魏 陶 姜 戚 ...

  10. Linux系类(8) - 文件搜索命令locate

    文件搜索命令locate 命令格式 locate [文件名] 在后台数据库中按文件名搜索,搜索速度更快,而find.which是遍历所有目录去查找:后台数据库在/var/lib/mlocate (保存 ...