基于linux-0.11
为了充分利用硬件资源,特别是CPU,要实现进程间的并发执行,所以进程分为5种状态,每种状态由一个PCB队列管理,实现进程间的调度从而实现进程的并发执行
线程是进程的子单位,每个进程有一个或多个线程,线程分为:
用户级线程:用户可直接切换线程,不涉及内核,os不可感知
核心级线程:由内核调度切换线程,涉及内核,os可感知用户级线程切换
核心级线程切换:
PCB(process control block):每个进程一个(linux里为task_struct)
TCB(thread control block):每个线程一个CPU调度策略
- FCFS(First Come First Serve)
- SJF(Shortest Job First)
- RR(Round Robin):时间片轮转法
- Job分为前后台,前台使用RR,后台使用SJF,只有前台无Job后台才能得到CPU使用权,同时调整priority使后台Job经过一定时间可以变为前台Job(防止前台Job一直有而后台Job得不到CPU)
关于fork()
关于task_struct
task_struct关于内核栈