nodebook/Miscellaneous/嵌入式.md
2020-04-02 17:29:57 +08:00

32 lines
1.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

* 调度策略
* SCHED_NORMAL(SCHED_OTHER): 普通的分时进程
* SCHED_FIFO: 先进先出的实时进程
* SCHED_RR: 时间片轮转的实时进程
* SCHED_BATCH: 批处理进程
* SCHED_IDLE: 只在系统空闲时才能被调度执行的进程
* 调度时机
* 主动式
* 在内核中直接调用schedule() 当进程需要等待资源而暂时停止运行,主动请求调度把自己挂起
* current -> state = TASK_INTERRUPTIBLE(可唤醒的阻塞态)
* schedule()
* 被动式
* 又名抢占式调度用户态抢占2.4+2.6内核态抢占2.6
* 用户抢占 -> 用户态(时间) / 抢占
* 从**系统调用**返回用户空间
* 从**中断处理程序**返回用户空间
* 内核态抢占
* 进程/线程一旦运行到**内核态**,就可以一直执行,直到它**主动放弃**或者**时间片耗尽**为止,会降低整个系统的实时性 2.4
* 中断处理程序完成,返回**内核空间**之前
* 当内核代码再一次具有可抢占性的时候,如**解锁**以及**使能软中断**
* 不允许抢占
* 内核正在运行中断处理
* 正在执行调度
* 持有锁的时候
* 抢占计数
* 抢占式内核有一个内核抢占计数preement_count
* 调度步骤
* schedule函数工作流程
* 清理当前运行中的进程
* 选择下一个要运行的进程
* 设置新进程的运行环境
* 进程上下文切换