操作系统原理-2 进程管理
相关资料 引用&推荐
计算机组成
操作系统原理-1 启动运行流程
操作系统原理-2 进程管理
操作系统原理-3 内存管理
操作系统原理-4 文件系统
操作系统原理-5 并发
操作系统原理-6 网络
控制方式 : data; metadata; 管理者线程
从磁盘加载: data=程序
metadata=头,例如linux: ELF头,dos:MZ, windows: PE
管理=加载运行中: data= 进程
metadata=PCB
管理=调度,上下文切换
程序文件
ELF头
magic
section Header表 : .text .rodata .data .bss …
program|segment Header表: (定义一个段包括哪些节)
进程
PCB结构体
一个进程的状态 数据
进程 状态转移
一个cpu同一时间只有一个进程($p_i$)在运行! 时间片到
–> 保存$p_i$现场
–> 调度算法,从就绪
中 选择一个进程j$p_j$
–> 恢复$p_j$现场,执行
进程调度
事件,发生的时机:
中断: 时钟中断,IO中断,系统调用, 异常
过程中 调用 schedule()
结束返回时 调用 schedule()
内核线程: 主动, 可以直接调用schedule();
用户态:被动, 只能标记(need_resched标记)自己, 等待被调度
schedule(){
1 选择 下一个进程 next=策略算法(rq, pre)
// rq: run queue, 运行队列, 就绪态
2 上下文切换, 保持pre的上下文, 恢复next的上下文
}
调度策略
policy
实时进程: SCHED_FIFO(先进先出), 一直占用cpu,直到退出或阻塞
—->让出cpu –>(根据优先级i) 排到 优先级队列i 的末尾
实时进程: SCHED_RR,round-robin(时间片轮转) , 公平分享 时间片. 此时优先级
普通进程: SCHED_OTHER
priority
静态: 程序加载时决定,
动态:
rt_priority
实时进程 特有的优先级
counter
to be continued . . .