Linux 编程之进程篇:调度、优先级、亲和性和资源限制

本文介绍了Linux进程调度的概念,包括抢占式调度和CFS调度器,详细讨论了FIFO和RR调度策略。此外,还讲解了进程的nice值、静态优先级以及如何获取和设置调度策略。在Android上,线程优先级通过nice值调整,并提供了API示例。还阐述了处理器亲和度和进程资源限制,如coredump、文件大小、打开文件数等,以及如何修改这些限制。

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

上篇文章介绍了 Linux 进程的数据结构和创建、退出

这篇文章我们来看下处理器在调度不同进程时有什么策略,我们开发者可以如何影响处理器的调度。

什么是调度

首先我们来看下,调度的基本概念:

  • 调度对象
  • 调度策略

我们知道进程/线程有很多状态:

  • TASK_INTERRUPTIBLE:可中断的睡眠,等待资源时进入,除了资源,还可以被信号中断唤醒
  • TASK_UNINTERRUPTIBLE(D状态):不可中断睡眠,必须得等到资源才能唤醒
  • TASK_RUNNING:等待执行或者正在执行

处理器调度的对象,是就绪(TASK_RUNNING)的线程(因为 I/O 或者锁等原因进入阻塞状态的线程,暂时不会被调度)。

在多个任务并行执行时,究竟由哪个进程执行,有 2 种机制:

  • 抢占式
  • 协同式

抢占式就是由调度器决定谁来运行、运行多久,同时在运行时间片结束后,强制切换到下一个进程。

协同式就是由用户态进程自行决定是否要占用 CPU 还是让出,目前比较火的“协程”就是这种理念,好处就是一个进程内的协程切换不需要内核参与,CPU 缓存数据也不需要反复切换,性能更好。

Linux 中采用的是抢占式调度,所

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拭心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值