linux调度
本质:虚拟处理器,虚拟内存
分类:抢占,非抢占。IO/处理器型
调度
优先级nice 与其他系统不同是时间片比例,-20~19(越小越高)
实时优先级 0-99 越大越高 高于普通的nice
调度器
1.CFS
时间记账:task_struct的se vruntime(这个时间是经过了所有可运行进程总数的标准化,理想下相同优先级有相同vruntime)
选择最小vruntime 红黑树 可运行队列,最左侧节点缓存
2.实时调度FIFO,RR,IDLE
FIFO:一直运行直到阻塞/更高优先级的抢占
RR:有时间片,耗尽后,同优先级轮流
IDLE 比nice19优先级还低
cpu高速缓冲器(1行 32-128字节)
getruasge
getrlimit
内核系统调用 帮助进程通信,访问硬件,申请资源
软中断 0x80=》system_call eaax寄存器中断号 参数:寄存器中,若多于6个,用单独寄存器存放指向所有参数在用户空间地址的指针 返回值:eax寄存器
进程状态runing(sleep也是run)
可中断睡眠(系统调用等软中断)
不可中断(硬中断)忽略信号
等待队列简单链表wait_queue_head_t=》队列相关事件发生时wake_up=>try_to_wake_up 加入红黑树 设置need_resched
进程上下文切换:switch_mm 把虚拟内存从上一个进程映射