您的位置:控制工程论坛网论坛 » 嵌入式系统 » 关于嵌入式Linux系统进程调度的分析

nicebaby

nicebaby   |   当前状态:在线

总积分:415  2024年可用积分:0

注册时间: 2008-09-09

最后登录时间: 2011-08-09

空间 发短消息加为好友

关于嵌入式Linux系统进程调度的分析

nicebaby  发表于 2008/10/27 20:26:12      713 查看 0 回复  [上一主题]  [下一主题]

手机阅读

  摘 要:本文结合源代码着重分析了Linux进程调度的依据、策略和调度程序schedule()。

  关键词: 嵌入式Linux;进程调度;实时进程;调度策略。

  1 前言

  处理机(CPU)是整个计算机系统的核心资源,在多进程的操作系统中,进程数往往多于处理机数,这将导致各进程互相争夺处理机。进程调度对系统功能的实现及各方面的性能都有着决定性的影响,其实质就是把处理机公平、合理、高效地分配给各个进程。调度是实现多任务并发执行的必要手段,不同的操作系统有着不同的调度目标。在传统的Unix类分时系统中,保证多个进程公平地使用系统资源,提供较好的响应时间是调度的主要目标;而在强实时操作系统中,总是优先级高的任务优先获得处理机的使用权。

  Linux具有内核稳定、功能强大、可裁减、低成本等特点,非常适合嵌入式应用。但是Linux内核本身并不具备强实时特性,且内核体积较大,因此,想要把Linux用于嵌入式系统,必须对Linux进行实时化、嵌入式化。Linux结合实时进程和非实时进程(普通进程)自身的特点,综合了上述几种调度策略,实现了高效、灵活的进程调度。

  2 Linux进程调度分析

  2.1 Linux进程状态的描述

  Linux将进程状态描述为如下五种:

  TASK_RUNNING:可运行状态。处于该状态的进程可以被调度执行而成为当前进程。

  TASK_INTERRUPTIBLE:可中断的睡眠状态。处于该状态的进程在所需资源有效时被唤醒,也可以通过信号或定时中断唤醒。

  TASK_UNINTERRUPTIBLE:不可中断的睡眠状态。处于该状态的进程仅当所需资源有效时被唤醒。

  TASK_ZOMBIE:僵尸状态。表示进程结束且已释放资源,但其task_struct仍未释放。

  TASK_STOPPED:暂停状态。处于该状态的进程通过其他进程的信号才能被唤醒

1楼 0 0 回复