有关linux中进程,线程,任务,调度等的知识整理总结
2026/7/17 6:43:25 网站建设 项目流程

文章目录

  • 前言
  • 一、进程和线程
    • 1.1 进程
    • 1.2 线程
    • 1.3 核心区别
  • 二、操作系统中的任务
    • 2.1 什么是任务
    • 2.2 与进程、线程的关系
  • 三、操作系统中的调度
    • 3.1调度核心概念
    • 3.2 调度三大层级(由高到低)
    • 3.3 调度方式(两大分类)
    • 3.4 调度相关核心问题
  • 总结

前言

在面试或日常开发中,多线程与进程是高频出现的核心知识。本文旨在系统性地梳理进程、线程、任务及操作系统调度等关键概念,帮助读者构建清晰的知识体系。如有疏漏,欢迎指正。

一、进程和线程

1.1 进程

核心定义:
程序运行起来就是进程
拥有独立:内存空间、文件句柄、资源、PID(进程标识符)
相互隔离:一个进程崩溃不影响其他进程
重量级,创建销毁开销大

进程五大状态

  1. 新建状态
    进程刚被创建,系统正在分配资源、初始化 PCB 进程控制块,还没进入就绪队列,暂时不能参与 CPU 调度。

  2. 就绪状态
    进程所有资源已备好,只差 CPU 时间片,进入就绪队列排队,随时等待系统调度,不占用 CPU。触发进入:新建完成、阻塞唤醒、时间片用完让出 CPU。

  3. 运行状态
    进程成功拿到 CPU 时间片,正在 CPU 上执行代码,独享当前 CPU 资源。触发进入:操作系统从就绪队列选中调度。

  4. 阻塞状态(等待状态)
    进程主动放弃 CPU,等待外部事件完成,彻底脱离 CPU 调度,就算 CPU 空闲也不会执行。
    常见等待事件:
    读写文件、网络请求、键盘输入、休眠、等待其他进程信号。
    核心特点:不占用 CPU、不参与调度。

  5. 终止状态
    进程代码执行完毕 / 异常退出,系统回收它占用的内存、文件等所有资源,清除 PCB,进程彻底消失。

状态流转最简逻辑
新建 → 就绪:初始化完成,进入排队
就绪 → 运行:CPU 调度选中,分配时间片
运行 → 就绪:时间片耗尽,被迫让出 CPU
运行 → 阻塞:主动等 IO / 事件,主动放弃 CPU
阻塞 → 就绪:等待事件完成,重新排队
运行 → 终止:程序跑完,进程结束

下面是进程五态流转的 Mermaid 流程图,直观展示各状态之间的转换关系:

初始化完成,进入排队

CPU 调度选中,分配时间片

时间片耗尽,被迫让出 CPU

主动等 IO / 事件,主动放弃 CPU

等待事件完成,重新排队

程序跑完,进程结束

新建状态

就绪状态

运行状态

阻塞状态

终止状态

易混点:
就绪、阻塞都不用 CPU,只有运行占用 CPU
只有运行态能主动进入阻塞态
阻塞态不能直接回到运行态,必须先回就绪态

1.2 线程

进程内部执行分支,轻量级执行流
共享所属进程全部资源(内存、全局变量、文件等)
无独立资源,只独有:栈、寄存器、程序计数器
轻量,创建切换速度极快

关系:


进程五大状态下,线程分别在做什么

先记住核心:进程是整体容器,线程是容器里真正干活的执行者
进程切换状态 = 整个容器状态变了,里面所有线程跟着同步变动

  1. 进程【新建状态】
    进程刚创建、分配内存、初始化 PCB
    线程:还未创建,只有空进程壳子,没有执行流,无事可做

  2. 进程【就绪状态】
    进程资源齐全,排队等 CPU 时间片
    线程:
    同进程内所有线程全部进入就绪排队
    线程已经准备好代码、栈、寄存器,只差 CPU 调度
    整体待命,不执行任何代码,不占用 CPU

  3. 进程【运行状态】
    进程拿到 CPU,正式运行
    线程:
    OS (操作系统)按调度规则,选中一个 / 多个线程占用 CPU 执行
    单核:同一时刻只有一条线程在跑,其余线程挂起等待
    多核:多条线程并行同时执行
    线程轮流使用时间片,完成业务逻辑

  4. 进程【阻塞状态】(最重点)
    进程主动放弃 CPU,等待 IO、输入、休眠、网络等事件
    线程:
    触发阻塞的那条线程直接暂停休眠
    同进程内所有线程全部跟着停止运行
    整个进程脱离 CPU 调度,里面所有线程全都躺平等待
    区别:线程阻塞 = 连累整个进程一起阻塞
    举例:主线程等待键盘输入 → 整个进程卡死,子线程也不动

  5. 进程【终止状态】
    进程结束、资源回收、销毁 PCB
    线程:
    进程一旦终止,进程内所有线程全部强制销毁
    不分主次线程,全部直接结束,无法继续运行

1.3 核心区别

资源归属
进程:资源独立,互不共享(内存空间、文件句柄等)。
线程:同进程内共享进程资源(堆、全局变量、文件描述符等),仅独有栈和寄存器。

开销与切换
进程:创建、销毁、切换开销大,需要系统重新分配和回收资源。
线程:创建、销毁、切换开销小,同一进程内线程切换只需保存/恢复少量寄存器。

通信方式
进程:进程间通信(IPC)复杂,需借助管道、消息队列、共享内存、信号量等机制。
线程:同一进程内线程可直接读写共享变量,通信简单,但需处理同步与互斥问题。

安全性
进程:相互隔离,一个进程崩溃不影响其他进程,安全性高。
线程:一个线程崩溃(如非法内存访问)可能导致整个进程崩溃,安全性较低。
调度级别
进程:独立调度单元
线程:操作系统真正 CPU 调度最小单位

二、操作系统中的任务

前面已经对进程和线程进行了整理和归纳,那么就由此引出了进程和线程实际作用,那就是为了完成任务
那么接下来就是对任务进行一下归纳和整理

2.1 什么是任务

任务 = 系统中需要完成的一件独立工作、一件事是逻辑层面的叫法,最笼统、最宽泛。

例子:
你想让电脑干一件事,这件事就叫任务。例子:
播放音乐 = 一个任务
聊天发消息 = 一个任务
下载文件 = 一个任务
打开浏览器 = 一个任务

2.2 与进程、线程的关系

逻辑层:任务
抽象概念,指要做的事情,不分大小,只看目标。无资源、无状态、不占内存,只是需求。

资源层:进程(承载任务的容器)
为了完成某个任务,系统创建的资源容器。分配内存、PID、文件资源,负责把任务跑起来。

执行层:线程(真正干活的执行者)
进程内部执行单元,真正跑代码、完成任务细节。一个任务复杂,就开多线程分头干活。

简述:
一个任务 → 交给一个进程去承载 → 进程开多条线程并发完成

拓展:(并发:单核 CPU,快速轮流切换线程,看起来同时跑
并行:多核 CPU,同一时刻真正同时运行多个线程 / 进程)

三、操作系统中的调度

3.1调度核心概念

调度定义
操作系统按照一定规则,把CPU 时间片分配给就绪队列里的进程 / 线程,决定谁先用 CPU、用多久。
调度目的
提高 CPU 利用率、缩短等待时间、保证公平、兼顾紧急任务。
调度单位
早期:进程调度
现在主流:线程调度(CPU 最小调度单位)
调度时机
时间片用完、进程阻塞、进程终止、中断到来

3.2 调度三大层级(由高到低)

高级调度(作业调度)从外存把程序调入内存,创建进程,进入就绪队列。负责:选任务进内存
中级调度(内存调度)内存不足时,把暂时不用的进程挂起放到外存,腾出空间。负责:内存扩容、换入换出
低级调度(进程 / 线程调度)最频繁、最核心,就绪队列选进程 / 线程占用 CPU。负责:真正分配 CPU,日常说的调度就是它

3.3 调度方式(两大分类)

  1. 非抢占式调度
    进程拿到 CPU 后,主动放弃才让出
    时间片没用完、不阻塞就一直占用
    优点:简单、系统开销小
    缺点:紧急任务无法插队,响应慢
  2. 抢占式调度(现代系统全用这个)
    高优先级任务 / 时间片到,强行抢走 CPU
    优先级高、短任务优先插队
    优点:响应快、实时性强
    缺点:切换频繁,系统开销略大
    Windows、Linux、安卓、iOS 全是抢占式

3.4 调度相关核心问题

  1. 饥饿现象
    低优先级 / 长任务一直得不到 CPU,长期无法执行。解决:优先级动态提升、老化机制。

  2. 进程切换(上下文切换)
    切换 CPU 执行任务时,保存旧线程寄存器、栈、程序计数器,加载新线程数据。开销:耗时间、耗性能,切换不能太频繁

  3. 并发与调度关系
    单核 CPU 靠时间片轮转调度实现宏观并发多核 CPU 调度可实现真正并行

  4. 阻塞与调度关系
    进程进入阻塞态主动放弃 CPU,调度器直接跳过它,调度就绪队列其他任务。

  5. 线程调度特点
    同一进程内线程共享资源,切换开销远小于进程
    一个线程阻塞,同进程其余线程无法被调度执行
    主线程优先级普遍高于子线程

总结

本文从进程和线程的基本概念出发,详细梳理了进程的五态模型及线程在各状态下的行为,并对比了二者的核心区别。随后,我们引入了“任务”这一抽象概念,理清了任务、进程、线程三者之间的逻辑关系。最后,深入探讨了操作系统的调度机制,包括调度层级、方式及饥饿、上下文切换等核心问题。

掌握这些基础,是理解并发编程、性能优化和操作系统原理的关键。建议读者结合代码实践(如 Java 多线程、Python 多进程)加深理解,并关注死锁、活锁、竞态条件等进阶话题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询