实时(RT)操作系统的起源

2014年3月25日,微软首次正式对外公开早期MS-DOS的源代码。回顾以往,1980年,西雅图电脑产品公司(Seattle
Computer Products)的一名24岁的程序员TimPaterson花软磁盘费了四个月时间编写出了软磁盘操作系统(86-DOS)。1981年7月,微软以五万美元的代价向西雅图公司购得本产品的全部版权,并将它更名为MS-DOS,并于1981年8月12日,正式发布MS-DOS1.0和PC-DOS1.0。

1980年,加拿大两个大学生Gordon
Bell
Dan
Dodge
,在学习操作系统设计课程期间,萌发了设计“实时操作系统(RTOS)”的念头,并且动手干了起来,最终搞出了一个实时操作系统的微内核。期初,他们针对的不是软盘,而是Intel的8088CPU,出发点与DOS操作系统不同。这两个小毛头成了后来大名鼎鼎的QNX实时操作系统的奠基人。

从时间上来看,DOS与QNX产生同一年代,而且都是“小毛头”年轻人搞出来的。发展至今,前者成了Win
10,后者成了美国无人机与瑞士太阳能飞机的实时操作系统,两者的用途不同。Win 10与QNX都是无可替代的操作系统,其它操作系统都是小兄弟,我们的“国产操作系统“根本排不上”号“。

实际上,QNX实时操作系统建立在”微内核“之上,与Linux与Android的”单体内核“不同。微内核很小很小,只有CPU调度、进程通信、中断重定向以及时间系统等内容,其它都算是外围应用服务程序,据此,对系统外部的任何”风吹草动“都会立即(实时)做出反应。

阳光动力2号飞越太平洋是一项真正意义上的探险活动,如果机翼倾斜15度,飞机就会发生”翻转“失去控制的危险。机身倾斜5度,QNX实时操作系统就会发出信号,提醒飞行员注意仪表,调整飞行姿势。

说明:明日是”国际五一劳动节“,预祝大家节日快乐!

袁萌
4月30

时间: 2024-08-01 11:08:52

实时(RT)操作系统的起源的相关文章

从头开始编写一个实时嵌入式操作系统的内核(一)

今年大四,在准备自己的毕业设计.因为毕设题目是一个比较复杂的多传感器监控的嵌入式系统,然后最近自己有使用一些rtos,比方说freertos和ucos,感觉比起单纯对单片机的裸机开发还是有很多好玩的地方.特别喜欢这种抢占式和时间片轮询这两种内核调度模式,所以最近在开始想自己尝试去写一个实时的操作系统的内核调度,看看用自己浅薄的技术,自己去实现会怎么弄,纯粹为了好玩哈哈哈.花了大概几天左右的时间,现在已完成了一个时间片轮询和优先级抢占的实时任务调度内核了,可能有些地方还有些bug,后面有空再慢慢修

从头开始编写一个实时嵌入式操作系统的内核(二)

一.RTOS里面的重要数据结构----链表 很多RTOS包括Linux的内核在内,内核里面都大量使用了链表这一种数据结构.内核的链表一般都是双向循环链表,这是因为双向循环链表的效率是最高的,找头节点.尾节点,直接前驱.直接后继时间复杂度都是O(1),这是使用单链表.单向循环链表或其他形式的链表是不能完成的.我们平时上课所学的链表一般都是指针域和数据域,但是如果有研究过Linux内核里面链表的人应该知道和我之前见到的链表结构不一样,只有前驱和后继指针,而没有数据域.Linux内核链表在linux源

Linux进程调度器概述--Linux进程的管理与调度(十五)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来. 调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 什么是调度器 通常来说,操作系统是应用程序和可用资源之间的媒介. 典型

各种工业以太网概述

工业以太网 工业以太网是基于IEEE 802.3 (Ethernet)的强大的区域和单元网络.利用工业以太网,SIMATIC NET 提供了一个无缝集成到新的多媒体世界的途径.企业内部互联网(Intranet),外部互联网(Extranet),以及国际互联网(Internet) 提供的广泛应用不但已经进入今天的办公室领域,而且还可以应用于生产和过程自动化.继10M波特率以太网成功运行之后,具有交换功能,全双工和自适应的100M波特率快速以太网(Fast Ethernet,符合IEEE 802.3

线程属性总结 线程的api属性

http://blog.csdn.net/zsf8701/article/details/7842392 //线程属性结构如下:typedef struct{ int etachstate; //线程的分离状态 int schedpolicy; //线程调度策略 structsched_param schedparam; //线程的调度参数 int inheritsched; //线程的继承性 int scope; //线程的作用域 size_t guardsize; //线程栈末尾的警戒缓冲区

专题实验 Statspack

statspack 是一个DBA经常用的调优工具, 它的主要作用是, 针对数据库的不同时刻做快照, 然后来比对快照之前的差异和瓶颈, 快照可以是手动的也可以是自动的, 从 oracle 10g开始, oracle推出了新工具-自动负载信息库( automatic workload repository, AWR), AWR 是用来替换statspack的, 实现的原理与statspack基本相同, 只是功能更强大, 在 11g中继续加强. Statspack 概述 及安装 在数据库中 Stats

Linux进程调度器的设计--Linux进程的管理与调度(十七)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 前景回顾 进程调度 内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来. 调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 内核必须提供一种方法, 在各个进程之间尽可能公平地

Linux进程优先级的处理--Linux进程的管理与调度(十八)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-14 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度 前景回顾 进程调度 内存中保存了对每个进程的唯一描述, 并通过若干结构与其他进程连接起来. 调度器面对的情形就是这样, 其任务是在程序之间共享CPU时间, 创造并行执行的错觉, 该任务分为两个不同的部分, 其中一个涉及调度策略, 另外一个涉及上下文切换. 内核必须提供一种方法, 在各个进程之间尽可能公平地

线程属性总结

今天面试那哥们问起线程属性,me竟然就说出了一个,囧 学习:http://blog.csdn.net/zsf8701/article/details/7842392 http://blog.csdn.net/jxhnuaa/article/details/3254299 http://blog.sina.com.cn/s/blog_9bd573450101hgdr.html int pthread_create(pthread_t *thread, const pthread_attr_t *a