嵌入式操作系统设计中的若干问题

[复制链接]
查看1137 | 回复0 | 2011-10-3 21:45:14 | 显示全部楼层 |阅读模式
<
1  什么是嵌入式操作系统
  随着计算机技术的发展,嵌入式应用已经成为计算机应用领域的一个重要组成部分。所谓嵌入式应用,是指应用系统不是以计算机为主,而是把计算机技术做为应用系统的一个组成部分嵌入到应用系统中,使其具有更高的性能。例如:程控交换机、手持式电话等,计算机的嵌入式应用领域是十分广阔的。  
  为了适应嵌入式应用的复杂性和多样性,并缩短其开发周期,嵌入式操作系统应运而生。嵌入式操作系统是相对于一般操作系统而言,通常指的是操作系统的核,严格地说是微内核。嵌入式操作系统为了适应被嵌入系统的要求具备了一般操作系统最基本的功能,如任务调度、同步机制、中断处理,但是没有一般操作系统的用户界面,如Shell。嵌入式操作系统是以库的形式提供给用户,用户可以通过操作系统的API(Application Programming Interface)使用嵌入式操作系统。
  2  操作系统的几种结构
  单一操作系统
  操作系统由许多模块组成,这些模块之间可以相互调用。在这样的操作系统中通常有二种工作模式,即系统模式和用户模式。在系统模式下可以执行任何操作,而在用户模式下有些操作是受限制的,例如I/O操作和一些特殊指令。运行在用户模式的应用程序可以通过系统调用进入系统模式,完成操作后再返回用户模式,但是这样的操作系统很难维护和调试。  
  层次结构操作系统
  层次结构操作系统通常可以分为用户程序、I/O管理、进程通信、存储管理4层。程序可以在各层运行,这样的操作系统提供了“环”管理机制,即第n环的程序无权修改第n-1环的数据,从而提高了操作系统的安全性。  
  客户/服务器方式操作系统
  这种操作系统只有一个很小的内核,以完成进程间通信等基本功能,而把许多其它功能作为服务进程,运行于用户模式,用户程序作为客户进程。其工作方式是客户进程发出请求,服务进程响应请求,操作系统仅完成它们之间的通信。  
  嵌入式操作系统
  一般的操作系统不仅向用户提供开发应用程序的各种API,而且,还必须以命令行的形式或是图形的形式提供一个界面。但是嵌入式操作系统只有API而没有通常意义下的界面,亦即只有一个核心。在核心里只有操作系统的一些基本功能,如任务(线程)调度、存储管理、同步机制、中断管理、API等,而这些功能又可以根据不同的应用系统裁剪和扩充,以便以最小的代码量满足嵌入式系统的需求。  
  3  设计嵌入式操作系统应考虑的问题
  确切地说,嵌入式设计不是一种技术,而是一种概念,一种设计哲学,即把计算机相关技术嵌入到各种应用系统中去,嵌入的方式可以是软件嵌入或硬件嵌入。在这种概念下,一个好的嵌入式设计应该满足以下几点:
  使用相关计算机的技术使被嵌入的系统获得很好的性能价格比;  
  能很好地与被嵌入系统相匹配;  
  在满足被嵌入系统功能的前提下尽可能简单,避免导致大的系统开销。  
  从某种意义上说,操作系统是计算机的一个扩展,它赋予了计算机更多的功能;从另一个角度看,操作系统也是计算机系统的资源管理者。因此,在嵌入式操作系统中,内核的最小构成也应包含下列各部分。
  (1)任务调度
  在当前的嵌入式应用中,特别是对一个复杂的嵌入式应用而言,用单任务来实现是不可能的,而只能采用多任务实现,因此任务调度策略的优劣是至关重要的。
  虽然有各种各样的任务调度方法,但概括起来可以分为优先级调度、轮转调度、时间片调度3种。
  优先级调度又可以分为2种:优先级抢占和优先级不抢占。优先级抢占是指当有高的优先级进程被激活后,则立即终止当前运行的进程,使其抢占CPU运行。优先级不抢占是指当有高的优先级进程被激活后,并不立即终止当前运行的进程使其抢占CPU,而是将其放到进程就绪队列中,在当前运行的进程结束后,从进程就绪队列中选择优先级最高的进程运行。轮转调度是进程管理者按照一个固定的时间间隔让就绪进程轮流运行。时间片调度是根据每个进程各自的实际情况在不同数量的单位时间的时间片内运行。
  在一般的操作系统中,固定采用其中的1种或几种方法进行任务调度。例如在Unix和Linux中,采用了优先级不抢占、轮转和时间片3种方法,而在实时操作系统中,优先级抢占则是必不可少的。
  无论是在一般的操作系统中还是在嵌入式操作系统中,任务调度都是操作系统的核心。在嵌入式操作系统设计中,很难明确地说哪一种方法比其它方法更好,而要根据被嵌入的实际系统的需求进行优化选择。由于线程的切换速度快于进程的切换速度,因此,在实时嵌入式应用中,多采用单进程多线程调度来提高实时性。在嵌入式操作<
热帖推荐
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则