#Linux #schedule #BasicKnowledge
进程
进程是计算机资源分配最小的单位,是CPU分配资源的基本单位,具有独立的内存。
切换需要切换上下文
- 需要切换内存映射表(MMU)
- 进程栈大小随机,但比线程栈大
线程
线程是计算机调度最小的单位,也是程序执行的最小单位。
线程的内存描述符直接指向父进程的描述符。线程间切换代价比较小,不需要切换映射表(MMU),只是指令间的切换即可,比较轻量级。线程的栈在主进程的堆中。
- 只需切换各种寄存器
- 线程共享地址空间
- 线程栈固定大小,默认 8M ,默认值由操作系统确定,
ulimit -a
查看,ulimit -s
修改
同一进程内的线程间共享:
细节
关于 MMU : [[Linux 内存 —— 内存分页、分段]]
内存管理是以进程为单元,线程的栈在主进程的堆中。[[Linux 内存 —— 堆和栈]]
上下文切换开销
- 寄存器状态保存、恢复
- 缓存失效
- 陷入内核态开销