linux线程学习(task_struck)(进程状态)(优先级)

本文深入探讨Linux下的进程管理,包括fork、vfork、线程创建、进程状态及调度策略。从进程创建机制到实时与普通进程的区别,再到优先级、抢占与平衡策略,全面解析Linux系统如何高效处理任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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抢占了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值