Linux嵌入式实时操作系统开发与设计(四)

原创 2004年08月18日 16:40:00

2.3  当前的实时操作系统

在这一节我们来看看一些操作系统的设计者是怎样来处理前一节所提到的问题的。

最简单的解决方案是改变分时的调度程序。一个例子是文献[12]介绍的系统。MINIXround-robin调度器换为基于优先级的调度器。由于在MINIX中不使用页面调度和页面交换技术,假如对时间的响应不过分要求的话,这种方法是可以接受的。

一些在UNIX系统中采用POSIX.1b-1993实时标准规定的方式。这个标准规定了优先级调度,锁定用户程序页面,实时信号,改进的IPC和计时器,和别的一些特性。依从这些标准使UNIX更适合实时应用。

Linux是部分支持POSIX.1b标准的操作系统[12]。从199751日起,在Linux中完全实现了适合用于控制的调度器和内存锁定技术,定时器也部分实现。内核的不可占先,低的定时精度,和高的中断延迟仍然没有解决。因此,POSIX.1b兼容的Linux操作系统只适合一些软实时的处理。

别的满足POSIX.1b的操作系统是QNX[26]QNX操作系统是微内核的操作系统。内核只是实现4种服务:进程调度,进程间通信,低级的网络通信,和中断分派。别的一些服务,比如说设备驱动程序和文件系统,实现为与用户进程协同操作的方式。这样系统内核非常小(大约7KB左右)而且非常快的。

QNX兼容POSIX 1003.1标准(编程接口)和POSIX 1003.2标准(外壳和应用程序)。对于熟悉UNIX的开发者来说,是非常方便的。QNX提供标准的UNIX部件:编译器,调试器,X-Windows,和TCP/IP

微内核的设计比起传统的单块结构的设计有很多优势。调试用户程序比起调试内核模块更为简单。假如用户进程运行在单独的地址空间(像QNX那样),内存管理错误在不同模块是相互隔离的。驱动程序可以更获得多线程的好处。另外有良好的裁剪性。比如,QNX可以减少到100KB以下以适合ROM的大小,或者扩展到全功能的多机开发环境。移植和维护微内核的系统也更简单。缺点是微内核比起单块结构的内核来说不那么紧凑。

对于实时处理的微内核它提供了轻量级进程,快的上下文切换,和IPC。一个实时的用户进程可以中断设备驱动程序,在单块结构的内核是不可能的。由于微内核操作系统是非常小的,可以方便的计算最坏情况下的计时参数,比如中断延迟时间。

大多数的微内核操作系统的弱点是它的性能要差。微内核结构的操作系统在进程间通信和上下文交换有比较重的系统开销。微内核操作系统只提供简单的系统服务。因此,与单块结构的操作系统相比,完成相同的任务微内核操作系统要进行更多的系统调用。虽然一些研究者认为上下文切换,消息传递等可以高效地实现[2],就性能而言,单块结构的操作系统仍然更成功。

一个单块结构的操作系统的例子是VxWorks[27]VxWorks是专有的实时操作系统,采用主机/目标机方式。一个UNIX主机用来软件的开发和运行程序的非实时部分。一个叫windVxWorks内核在目标机上运行实时任务。机器间的通信使用TCP/IP网络连接。

虽然VxWorks不兼容UNIX系统,它提供了一些符合POSIX接口规范的函数,特别是POSIX.1b实时扩展部分。大多数的VxWorks API是专有的。

VxWorks中,内核和任务运行在同一个地址空间。这样,任务间的切换非常快,和省去了必要的系统调用开销。一个实时连接器允许动态的装载任务和系统模块。这些特性使系统具有好的伸缩性。一个交互式的类似C语法的shell用来检查和改变参数值,计算表达式,调用函数,和进行简单的调试。这个特性使得开发更为简单方便。内核和任务运行在同一个地址空间也使得系统更脆弱,一个模块的错误更容易影响到别的模块。

REAL/IX操作系统也是单块结构。这是一个有完全UNIX特性的操作系统,原自于UNIX System V,改造使它拥有实时处理能力。它的内核是完全可占先的。它通过内核信号量来实现,提供互斥方式访问系统资源,比起传统的sleep/wakeup函数和关中断来说,这种方式更优秀。使用信号量代替关中断降低了中断延迟时间,也使的移植到多处理器系统更为容易。

REAL/IXPOSIX.1003兼容的操作系统。这个特性使得移植UNIX应用程序更为容易。除实时调度以外,实时能力还包括预先分配内存和文件空间,同步与非同步I/O,增强的IPC和计时器,可连接的中断。最后的特性允许用户进程处理中断。

现在有一个趋向于使用Windows NT来支持实时处理。只要原因是兼容先前的Windows,因此,可以使用先前的应用程序。也是指望用一个操作系统来做任何事情:办公应用,服务,和实时控制。用一个操作系统可以减少人员培训的开销。程序员可以用到广泛的Win32 APIMicrosoft对市场的垄断也是一个原因。

像文献[25]指出的那样,Windows NT的内核并不适合硬实时的处理:Win32 API不是设计用来实时应用的,中断处理的方式可能引起一个不确定的延迟,而且对于嵌入式系统来说,Windows NT对内存的要求也是一个问题。

Microsoft为了处理上面提到的一些问题。开发了Windows CE嵌入式实时操作系统,Windows CE内核支持按优先级抢占的方式调度多任务。Windows CE可以固化到ROM中,从ROM起动,使用时对内存RAM要求不高。Windows CE将中断分为两个步骤:第一步是执行中断服务子程序ISR(interrupt service routine);第二步为中断服务线程IST(interrupt service thread)。内核使中断处理程序执行尽可能短,大部分处理放在IST中,可以把最高优先级安排给中断服务线程,以保证IST尽快运行而不会被占先。其与Win32 API兼容的编程接口方便熟悉Windows的程序员开发和移植Windows应用。

嵌入式设计及Linux驱动开发指南——基于ARM9处理器

嵌入式设计及Linux驱动开发指南——基于ARM9处理器  读书笔记  第一章嵌入式系统基础  1、 嵌入式系统定义:  “嵌入式系统是用来控制或者监视机器、装置、工厂等大规模...
  • pugu12
  • pugu12
  • 2015年02月08日 13:52
  • 908

基于Linux的嵌入式网络视频监控系统研究与设计

http://www.nesr.lingd.net/article-4364839-1.html 摘 要:网络视频监控已经在嵌入式领域得到了发展,但目前视频监控硬件设施比较昂贵,不能普遍使用。本...
  • yan420523
  • yan420523
  • 2013年07月10日 22:20
  • 1653

嵌入式系统中的状态机设计心得

在使用iTRON类OS的嵌入式系统中,除了驱动程序以外,大多数模块也就是中间件和应用程序是以任务(TASK)的形式设计的。而iTRON类OS大多采用C语言实现,于是用状态机的方式实现功能模块成为了主要...
  • xxxl
  • xxxl
  • 2015年04月13日 19:32
  • 986

基于嵌入式ARM的mp3播放器的设计

一、       设计题目:基于ARM的mp3播放器的设计 二、       课程设计教学目的: 1、了解并掌握系统电路的一般设计方法,具备初步的独立设计能力; 2、掌握Unix/Linux系统...
  • yan420523
  • yan420523
  • 2013年05月13日 15:33
  • 3526

嵌入式Linux WEB服务器整体设计

《ARM Linux开发-warewin 2G/3G无线传输(DTU)和路由器—笔记》 特点 最主要的目的是显示设备的状态,显示设备的参数,修改设备的参数。 Web服务器支持GET  POST方...
  • u013033022
  • u013033022
  • 2014年02月25日 10:32
  • 1568

嵌入式Linux设备驱动开发之:按键驱动程序实例

11.6  按键驱动程序实例 11.6.1  按键工作原理 LED和蜂鸣器是最简单的GPIO的应用,都不需要任何外部输入或控制。按键同样使用GPIO接口,但按键本身需要外部的输入,即在驱动程序中要...
  • azhangyi188
  • azhangyi188
  • 2014年01月02日 13:14
  • 1447

嵌入式应用层开发要学习什么

                                              如果从应用层的应用开发出发,建议先熟悉API函数,推荐《UNIX环境...
  • JoysonQin
  • JoysonQin
  • 2016年12月20日 16:48
  • 1982

嵌入式Linux开发第一步:虚拟机安装Ubuntu

嵌入式Linux开发第一步:虚拟机安装Ubuntu
  • yongz12
  • yongz12
  • 2016年12月19日 22:04
  • 395

linux:嵌入式linux开发环境搭建(整理)

1、安装VMware、安装ubuntu 2、配置网络,保证开发板可以ping通服务器  > 纯ubuntu系统只要保证开发板和ubuntu系统处于同一网段即可。  > 虚拟机中需要注意三点:   1...
  • sinat_36184075
  • sinat_36184075
  • 2017年05月05日 12:34
  • 2840

{嵌入式学习笔记(一)}ubuntu下嵌入式开发环境搭建

从C51到ARM,比想象中要难得多,好几天了,进展缓慢,嵌入式是基于Linux开发的,所以这次没有在Windows下,而是选择直接在Linux环境上搭建开发环境。记录下遇到的各种问题,做下备忘。...
  • zhangsheng19860919
  • zhangsheng19860919
  • 2015年06月26日 15:20
  • 3449
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux嵌入式实时操作系统开发与设计(四)
举报原因:
原因补充:

(最多只允许输入30个字)