LiteOS是应用于资源受限的传感网络的一种基于线程的类UNIX操作系统。也就是说它跑在存储空间和RAM有限的超低电压微控制器上,这也是吸引我关注它的原因(在超低电压下系统更易出错)。它採用r-kernel内核,r-kernel有三个特征:

1)为线程创建checkpoint。能够在出错时进行rollback。以下是用r-kernel给出的API写出的演示样例程序:

checkpointIndex = createCheckPoint();
printf("Point A,");
rollbackCheckpoint(checkpointIndex);
printf("Point B,");

程序会一直输出Point A。它将断点存在了Flash中。这是由于RAM是嵌入式设备上最受限的资源。

这个特征用来解决那些能够通过又一次运行来消除的错误。如竞态条件和死锁。但对于确定的错误,要通过以下这个特征来解决。

2)让一些系统调用拥有影子考虑以下的程序:

char *buffer = malloc(100);
/*some more code here*/
buffer[100] = 1;

显然存在Dynamic memory overrun,一旦buffer[100]的内存地址分配给了还有一个线程。就会出现错误。事实上malloc是通过系统调用来与内核打交道的,假设我们能将这些系统调用的实现进行改动。如malloc是连续分配内存块,但我们将之改动为每两个内存块之间增添固定大小的空间,这样便在一定程度上解决上述问题(这要取决于添加空间的大小)。

这就是所谓的影子(system call shadowing)。

3)watchdog是最后的防线。如内核陷入死锁,不能定期地进行喂狗。watchdog便会进行reboot。但为了防止一次重新由于同一个bug重新启动的尴尬。一种叫past-run race reconstruction的方法用来推断是哪一个线程造成了重新启动,这样下一次它就被禁止运行。为此我们须要将重新启动前的状态记录下来(存在EEPROM或on-board Flash),之后内核会通过这些信息找出重新启动前最后一个在执行的用户线程,它一般就为错误线程,临时丢弃它。

注:翻译来源 IEEE INFOCOM 2011论文

Qing Cao, Xiaorui Wang, Hairong Qi and Tian He, r-Kernel: An Operating System Foundation for Highly Reliable Networked Embedded Systems

基于r-Kernel的LiteOS操作系统相关推荐

  1. 基于STM32F103移植华为LiteOS物联网系统

    基于STM32F103移植华为LiteOS物联网系统 本实验是通过学习野火的<物联网操作系统 LiteOS开发实战指南>参考学习的. 1.移植前的准备 LiteOS 的源码可从 LiteO ...

  2. 操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

    SAST weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普.研究前沿热点介绍.科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享 ...

  3. 现代分类方法在医学诊断中的应用——基于R的实现

    转载自:http://f.dataguru.cn/thread-2076-1-1.html 1.引言 随着统计科学的日益发展,其对其他学科的渗透作用日益增强,数据分析方法在医学.生物学.社会学等各个学 ...

  4. 华为LiteOS操作系统基础知识入门与内核移植

    LiteOS操作系统是华为在2015年发布的一个轻量级的面向物联网的操作系统,同时也是华为物联网1+2+1物联网解决方案的组成部分,此操作系统具备零配置,自发现,自组网的特点,让LiteOS的终端物联 ...

  5. 《数学建模:基于R》一一2.2 方差分析

    本节书摘来自华章计算机<数学建模:基于R>一书中的第2章,第2.2节,作者:薛 毅 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.2 方差分析 方差分析是 ...

  6. 《机器学习与数据科学(基于R的统计学习方法)》——2.11 R中的SQL等价表述...

    本节书摘来异步社区<机器学习与数据科学(基于R的统计学习方法)>一书中的第2章,第2.11节,作者:[美]Daniel D. Gutierrez(古铁雷斯),更多章节内容可以访问云栖社区& ...

  7. 基于 K8S 构建数据中心操作系统

    在 12 月 22 日 ECUG 的下午场 ,七牛云容器计算部技术总监袁晓沛为大家带来了主题为<基于 K8S 的 DCOS 之路>的精彩分享,向大家介绍了七牛容器云目前 K8S 的状况和产 ...

  8. anaconda下配置R子环境并配置jupyter notebook的R Kernel

    anaconda下配置R子环境并配置jupyter notebook的R Kernel #在anaconda下打开主环境的terminal: conda create --name r4-base # ...

  9. 为Jupyter notebook配置R kernel过程及踩坑记录

    为Jupyter notebook配置R kernel过程及踩坑记录 注意:本文为作者安装过程及折腾的过程,内容比较冗杂,如果读者想直接创建一个属于自己的子环境则参考: 如下文章: anaconda下 ...

最新文章

  1. 迪米特法则(Law of Demeter) 简介
  2. 【大话数据结构算法】直接选择排序
  3. JAVA 几种多线程的简单实例 Thread Runnable
  4. js数组操作各种方法
  5. python散点矩阵图_用python-pandas作图矩阵
  6. 原根(详解+代码实现+例题+快速求解一个数的原根)
  7. 几款效率神器助你走上人生巅峰
  8. 截取含HTML标签的字符串
  9. 数据结构:从插入排序到希尔排序
  10. 一维稳态导热的数值计算c语言,传热传质上机实习题(参考资料C语言)
  11. 【剑指offer】连续子数组的最大和(未完待续。。。)
  12. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---35
  13. 【IScroll深入学习】解决IScroll疑难杂症
  14. 【PPT已更新】给开发者的区块链技术指南 | JTalk 掘金线下活动第五期
  15. [Linux]基于网络编程的智能机器小伴侣
  16. 世界读书日 | 技术人不要错过的好书(IT前沿技术)
  17. 青少年学习python有什么用_青少年为什么要学习Python
  18. Stm32学习(基于HAL库)
  19. 前端:移动端和PC端的区别
  20. word2019技巧:段落的段前段后单位行设置为磅

热门文章

  1. (札记)Altera Stratix IV系列FPGA TRUE LVDS RX input termination 在Quartus工程中的设置方法...
  2. 【失败的尝试】C++中使用string进行switch判断
  3. Django web框架-----Django连接现有mysql数据库
  4. 全国首个窄带物联网实验局落户福州 助力智慧城市建设
  5. SQLDataSet中执行DDL语句
  6. 必读的 Java 学习资料分享!
  7. MySQL 仅保留7天、一个月数据
  8. Cocos2d-x Eclipse下程序运行产生错误Effect initCheck() returned -1
  9. NOI2011 道路修建
  10. PHP生成PDF文档的FPDF类