分享

Freezing of tasks

 吴家小院 2011-12-31

1. 功能

     将user space processes和 freezable的kernel thread 置成 TASK_UNINTERRUPTIBLE。

     kernel threads are not freezable by default.

2. android 2.3里面

     除了runtime_suspend所用到pm工作队列,没有其他线程是freezable的。

3. runtime_suspend
 在系统工作状态下,某些设备,如sdcc和usb之类的长期不工作,会调用runtime_suspend进入睡眠状态。工作的时候唤醒。
 这是kernel的机制,在android下,大部分设备没用这一机制,比如各种sensors.

4.下面的信息供参考。

1、TASK_RUNNING(运行状态):

表示进程正在被CPU执行,或者已经准备就绪随时可由调度程序调度执行。若此时进 程没有被CPU执行,则称其处于就绪状态当一个进程在内核代码中运行时,我们称其处于内核态,当一个进程正在执行用户自己的代码时,我们称其处于用户态。当系统资源已经可用时,进程就被唤醒而进入准备运行状态,也就是就绪状态。这些状态在内核中表示方法相同,都被称为TASK_RUNNING状态。当 一个进程刚被创建后就处于TASK_RUNNING状态。

2、TASK_INTERRUPTIBLE(可中断睡眠状态):

     睡眠,可中断

进程处于等待状态,不会被调度执行。直到等待的资源可用(或等待某条件为真)或者 系统产生一个中断或进程收到一个信号时,进程就被唤醒继而进入就绪状态(TASK_RUNNING)

3、TASK_UNINTERRUPTIBLE(不可中断的睡眠状态):

    睡眠,不可中断(不可被信号唤醒)

与TASK_INTERRUPTINLE状态的唯一区别就是该状态不可被收到的信号唤醒。这种状态很少用到,但在一些特殊的情况下(进程必须等待,直到一个不能被中断的事件发生,发送硬盘I/O要求而等待I/O完成的状态,等待TTY 终端的输入的状态等),这种状态是很有用的。例如,当进程打开一个设备文件,其相应的设备驱动程序开始探测相应的硬件设备时会用到这种状态。探测完成以 前,设备驱动程序不能被中断,否则,硬件设备会处于不可预知的状态。在状态通常在进程需要不受干扰的等待或者所等待的事件会很快发生时使用。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多