DAY1
task_struck
pid 进程id号,最多32768个
*mm
*fs
*files
*signal
就绪
执行
深度睡眠 被资源唤醒,不可被信号唤醒 kill-9杀不掉
浅度睡眠 被信号和资源唤醒
中断 调试、cpulimit、^Z
僵尸 资源已经释放,父进程清理
DAY2
fork()
返回-1失败
返回0子进程
返回 子进程pid 父进程
cow(copy on write) fork()刚创建完为共享资源,内存为read only,写时页面中断,复制内存
vfork 内存资源共享没有cow
pthread_create创建线程
top -H线程视角
pid=0线程,唯一不是被fork出来的进程,所有的线程都没在跑,它就开始跑,然后把cpu制成低功耗
DAY3
吞吐(处理主要事务)和响应的平衡,服务器更照顾吞吐,客户机更照顾响应,
2.6早期优先级数组:0-99 rt,100-139普通(nice -20~19)
实时进程(rt进程):fifo同优先级先到先运行、rr同优先级轮转
rt进程一秒只能跑0.95秒
普通进程:不同优先级轮转,优先级高时间片多、刚运行能抢占一下
io消耗型进程(需要更高的优先级)、cpu消耗型进程
big.LITTLE性能不是很好,专门用来响应io够了
睡眠越长,优先级更高
cfs: 优先级权重(nice决定)/io时间
修改优先级命令chrt、nice、renice
DAY4
每个核会push、pull均衡所有进程
对人、userspace、内核来说的cpu运行时间命令:time
cpu亲和力(affinity)命令taskset -a(进程下所有线程)-p 03(0011)19999(pid)
分群调度(cgroup)控制分配进程的cpu调用
不可抢占时间:自旋锁、硬中断、软终端
linux不硬实时
自旋锁(拿不到锁就反复重试)改成互斥锁(拿不到就睡眠)
中断线程化
优先级继承(解决优先级反转问题)
优先级反转问题:ABC三个线程优先级降序,c先运行并占用了q资源,a运行并抢占cpu,发现没q于是阻塞等c运行完,来了一堆b抢占c的cpu,a运行不了。优先级继承就让c继承a的优先级,这样c就不会一直被b抢占了