首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

新兴嵌入式系统 广泛应用智能硬件(2)

新兴嵌入式系统 广泛应用智能硬件(2)

 优化改造的Linux内核  针对嵌入式行业的特定的需求,如高实时、高稳定、安全的特点。中兴新支点嵌入式操作系统对Linux内核做了大量的优化,从而大大的提高了系统的实时性、稳定性、和安全。下面是几个重要内核优化点:
  进程调度改造和优化
  进程调度的改造和优化主要分两个部分:优化和改造调度算法;增加调度点,增强系统的抢占能力。
  优化和改造调度算法
  调度算法优化的原则主要是高优先级的进程先执行,而低优先级的进程等待高优先级的进程执行完。然而在SMP环境下,由于每个CPU都有自己单独的运行的进程队列,每个CPU都只在自己的队列上选取进程,内核对进程的调度并不是完全按照优先级来调度的,这严重的影响了内核的实时性。优化的方式是在进程调度的时候每次都取得系统中优先级最高的进程,而不是本CPU队列中的最高的进程。
  增加调度点,增强系统的抢占能力
  针对系统长时间得不到调度的情况,导致高优先级的进程不能抢占低优先级的进程的情况。找出长时间不能调度的代码,增加调度点,保证高优先级的进程能够尽快抢占低优先级的进程,从而提高系统的实时性能。
 中断线程化
  在开源Linux 中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行的进程,因此有可能造成实时任务得不到及时的处理。中断线程化技术之后,中断将作为内核线程运行而且被赋予不同的优先级,实时任务可以有比中断线程更高的优先级。这样,具有最高优先级的实时任务就能得到优先处理,即使在严重负载下仍有实时性保证。
  信号量优先级继承
  在开源的Linux中,由于信号量不支持优先级继承,因此可能导致高优先级的进程被低优先级的进程阻塞。举个例子,系统中运行着三个进程A、B、C,A的优先级最高,B的优先级中,C的优先级最低,进程A和C都需要信号量D,现在进程C最先获得信号量D,但是在进程C释放信号量D之前,进程A获取信号量D,这时由于进程C已经持有了信号量D,因此进程A必须休眠等待,而当进程A放弃CPU的时候,由于进程B的优先级比进程C高,所以最先被调度的是进程B,这样就相当于进程A这个高优先级的进程被进程B这个中优先级的进程阻塞。而优化之后的信号量由于有了优先级继承的功能,当进程A获取信号量D的时候,进程C会继承进程A的优先级,所以当进程A放弃CPU的时候,最先调度进来的是进程C,这样就能尽快让进程C释放信号量D,而让进程A最快得到执行。
继承事业,薪火相传
返回列表