Raw OS

硬实时操作系统
授权协议 LGPL
开发语言 C/C++
所属分类 其他开源、 嵌入式操作系统
软件类型 开源软件
地区 国产
投 递 者 王骏
操作系统 嵌入式
开源组织
适用人群 未知
 软件概览

Raw-OS 起飞于2012年,Raw-OS志在制作中国人自己的最优秀硬实时操作系统。

Raw-OS 操作系统特性

内核最大关中断时间无限接近0us, s3c2440系统最大关中断时间实测0.8us。

支持idle任务级别的事件驱动,基于状态机机制(fsm+hsm),所有idle 级别的事件任务共享一个栈!

支持轻量级线程protothread。

支持普通任务级别的状态机和事件驱动机制。

支持tasklet以及workqueue,轻松降低系统最大关中断时间到最低,以及大大提高了系统的实时性。

支持task 256个优先级

支持task无限多个

支持semaphore无限多个

支持mutex无限多个,同时支持优先级继承算法和优先级置顶算法,当优先级反转发生的的时候。

支持mutex在优先级反转过程中的任务优先级逐步还原策略,以及解决了改变任务优先级等mutex带来的副作用。

支持3种queue模块(queue, queue_size, mqueue)无限多个, 支持queue的一对多群发,包含了mail box 的功能。

支持软件timer无限多个。

支持event无限多个。

支持task block 在任意queue 和semphore 上,同时支持and 和or 的处理。

调度算法采用双向链表就绪队列,省去位图,采用目前世界上最快的bits搜索算法。

支持动态监测所有任务栈空间大小,栈空间小于整体的12%。 系统马上报错。

任务能以FIFO和PRIO 两种方式block 在semphore, mutex, queue, 等等对象上。

采用目前最快的计算tick timeout 的算法。

内核状态机的转换机制非常健全。

同等优先级调度,支持时间片轮。

支持满足posix的标准调度SCHED_RR和SCHED_FIFO

支持posxi的pthread封装

支持整个内核配置成非抢占内核。

支持内核配置成非抢占内核, 追求最大的数据吞吐量。

支持block内存分配机制,适用于整块的内存分配,没有内存碎片.

支持byte内存分配机制,适用于任何体积大小的分配,有内存碎片,采用first fit 算法,支持临接空闲块的合并。

支持slab算法基于buddy。

支持基于大内存的分配page算法。

支持c库标准的malloc, calloc, recalloc,free.

支持发送消息的同时也发送消息长度(raw_queue_size)

支持满足posix标准的大级别消息算法mqueue(raw_mqueue)

极其丰富的的API功能,内核支持配置各种功能,最小内核2K。

支持 8位,16位,32位的cpu以及dsp。 

  • 说明 在看Raw OS的源代码时,在raw_list.h里面有如下宏定义: #define raw_list_entry(node, type, member) ((type *)((RAW_U8 *)(node) - (RAW_U32)(&((type *)0)->member))) 乍一看这个宏定义有点复杂,其实只要按部就班的分析,是很好理解的。我们看调用此宏定义时传进来的形参是什么,

  • 1.和汇编文件相关的头文件部分: #ifndef RAW_CPU_H #define RAW_CPU_H unsigned int OS_CPU_SR_Save(void); //上述函数是把PRIMASK的值读到R0中,并通过返回值将PRIMASK赋值给cpu_sr //关于PRIMASK,PRIMASK是只有1个位的寄存器,用于屏蔽中断 void OS_C

  • 很多人一直会问一个问题,世界上有这么多的RTOS存在,有开源的也有收费的。为什么还需要写一个RTOS, 2012年之前我也不断问自己这个问题。我是这样认为的世界上的确有很多RTOS,但是目前国内的RTOS并不多,能在国际上有影响力的更少。如果说能够承上启下,融合众多世界上众多RTOS 的优势,加以创新糅合,或许可以创造一个全新的RTOS.   一个实时系统的推出,需要有以下几点考虑因素。   1内

  • 2012 年的1月15号终于鼓起勇气来写实时操作系统,这样的想法曾经在10年前刚接触RTOS的时候就有一种冲动。只是现实不断地把朦胧和冲动给埋没了。很多次冲动写的时候,总有一个疑问闪现,世界上有这么多的RTOS,有开源的也有收费的,写他有何意义?这个问题不断地责问自己,自己实在是找不出任何理由去驳斥它。 时间飞快,转眼到了2012年,似乎软件上所有该学的全都学了,人生再无追求。这个时候冲动再次闪现

  • 由于raw os 针对市场是目前中低端的cpu,所谓的中低端cpu 一般以arm 9 划分,arm9 级别的或者类似速度的cpu 为中端cpu, 以上的比如arm 11为高端cpu, 以下的为低端cpu,比如cortex-m0,cortex-m3,cortex-m4等等。  rawos的市场既然已经决定在中低端cpu, raw os 力争做到世界上所有实时操作系统之中的体积最小以及速度最快者。基于

  • rawos 由于采用了特殊的系统处理方式,可以把系统最大关中断时间降到0us. 影响一个系统实时性最客观的参数是其系统的最大关中断时间。   在2440 板子上空跑一个实时操作系统的话,vxworks 的官方系统最大关中断时间为6us 以上, ucos 的话可以达到20us以上。但是raw os 是0.8us. 所以其实时性毫无疑问是超越这些系统的。   中断的处理对于实时性的提高也是很重要的一个

  • Raw os的事件触发系统有以下特点:   1 基于UML的状态机理念设计,实现了有限状态机(fsm)以及层次状态机(HSM)。   2 实现了活动对象(ACTIVE OBJECT)的特性,一个活动对象包含了一个消息队列以及一个状态机。活动对象是具有优先级的,这样任务的实时性能够得到保证。消息队列的设计能够保证即时信号不丢失。   3活动对象(ACTIVE OBJECT)一共有64个优先级,对于小

  • 内存管理往往是一个复杂的过程,raw os 目前支持5种内存分配方法,分别是block,byte,page,malloc,slab。以下会讲解这5种基本原理以及适用场合。 这5种里面只有block和slab 是没有内存碎片的,其余的都会有一定的内存碎片。这5种里面只有block和byte能用于中断内内存分配,推荐使用中断内采用block内存分配。  block内存分配顾名思义是一块块的分配内存给用

  • //zz//############################################################################## ///### arm9-rtos的中断汇编代码分析 helper2416-rawos ///### @2014-8-2 23:22:38 ///### REF: raw-os-helper2416-master.zip 1. 在H

  • 状态机编程的历史很可能久于传统的操作系统, 传统的一个大while 循环模式普遍用到了状态机模式编程, 状态机一般是基于fsm 的有限状态机,或者更先进点的是hsm 分层的状态机。具体的fsm 以及hsm 状态机的概念读者自行参考有关概念学习,这里不再表述。推荐看Practical UML Statecharts in c/c++这本书。raw os的状态机理念,很大部分参考了它,和著名的面向事件

  • Raw-OS 操作系统特性 内核最大关中断时间无限接近0us, s3c2440系统最大关中断时间实测0.8us。 支持idle任务级别的事件驱动,基于状态机机制(fsm+hsm),所有idle 级别的事件任务共享一个栈! 支持轻量级线程protothread。 支持普通任务级别的状态机和事件驱动机制。 支持tasklet以及workqueue,轻松降低系统最大关中断时间到最低,以及大大提高了系统的

 相关资料
  • 我们正在使用双四核24GB的Intel Xeon 机器。 您需要足够的内存来缓存活动的readers和writers。您可以通过假设您希望缓存30秒,将您的内存需求计算为write_throughput * 30来进行内存需求的后期估计。 磁盘的吞吐量很重要。我们有8x7200转的SATA硬盘。通常磁盘的吞吐量是瓶颈,磁盘是越多越好。您能不能从更昂贵的磁盘中受益取决于你的刷新配置(如果您经常强制刷

  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成

  • 目前常用的 Linux 发行版主要包括 Debian/Ubuntu 系列和 CentOS/Fedora 系列。 前者以自带软件包版本较新而出名;后者则宣称运行更稳定一些。选择哪个操作系统取决于读者的具体需求。 使用 Docker,读者只需要一个命令就能快速获取一个 Linux 发行版镜像,这是以往包括各种虚拟化技术都难以实现的。这些镜像一般都很精简,但是可以支持完整 Linux 系统的大部分功能。

  • 更多面试题总结请看:【面试题】技术面试题汇总 互斥锁的实现 1. 禁止中断 进入临界区前禁止中断,离开之前恢复中断。这样任何中断都不会发生,包括时钟中断,也就是说 CPU 不会被切换到其他线程。 优点是实现简单。缺点有很多: 给用户禁止中断的权利很危险,如果用户进程死循环,操作系统可能永远无法获取控制权 只适用于单 CPU 的场景,其他 CPU 上运行的线程仍然可以访问临界资源,因为不同 CPU

  • 进程与线程 对于有线程系统: 进程是资源分配的独立单位 线程是资源调度的独立单位 对于无线程系统: 进程是资源调度、分配的独立单位 进程之间的通信方式以及优缺点 管道(PIPE) 有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信 优点:可以实现任意关系的进程间的通信 缺点: 长期存于系统中,使用不当容易出错 缓冲区有限 无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父

  • 1 select,poll和epoll 其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了. 这个问题可能有点深入了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的. selec,poll和epoll区别总结 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点.

  • 你可以在任何主流操作系统下去做开发工作,Windows,macOS,Linux 都可以。如果选择 Windows ,版本最好选择 Windows 10 专业版。用 macOS 的用户不用太担心系统问题,可以无痛并免费升级,现在你应该用的是 Sierra 这个版本的 macOS 。Linux 也可以,比如 Ubuntu 的桌面版。 如果你能满足下面三个条件的其中一个,这个任务就算完成了: Windo

  • 指令运行参数 设定变量T为指令运行总时间,t为所需时间最长部分指令的时间(周期),n为指令条数 指令相关公式 顺序方式运行指令所需时间:Tn 流水方式运行指令所需时间:T+(n-1)t 重叠方式运行指令所需时间:(n+2)t 吞吐率:n/流水方式运行指令所需时间 效率:效率=吞吐率t 加速比:加速比=效率n 可变分区分配算法 首次适应法 从主存低地址开始,寻找第一个可用(即大于等于作业需求的内存)