相关资料 引用&推荐
计算机组成
操作系统原理-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结构体

一个进程的状态 数据

image-20200108012937104

image-20200108013119604

image-20200108013246498

进程 状态转移

image-20200108014416444

一个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 . . .