继承和线程

进程是"资源分配的最小单位",
线程是"CPU 调度的最小单位"。

在内核里,只有结构体,没有概念

比如,在32为操作系统中,一个进程的虚拟内存为4GB,这就是一个进程。进程是一个资源容器+至少一个线程。

Linux 中的"PCB"就是 task_struct

这是一个内核级结构体 ,Linux 里进程和线程本质上都是 task_struct(线程 = 共享资源的 task)。

  • 定义在:include/linux/sched.h

  • 一个 task_struct = 一个可调度实体

  • 进程 / 线程 没有结构体区别

    • 区别在于 是否共享资源

你可以把它理解成 5 大块信息:

task_struct
├── 1. 进程状态 & 调度信息
├── 2. 标识信息(PID / TGID)
├── 3. 内存管理(mm)
├── 4. 文件系统 & IO
├── 5. 关系 & 信号 & 安全

进程: 是资源分配与隔离的基本单位,

拥有独立的虚拟地址空间和系统资源;

线程: 是 CPU 调度的最小单位,只保存执行上下文,

多个线程共享进程的资源。

因此线程切换比进程切换开销小,但并发安全问题更复杂。

相关推荐
小宇子2B2 天前
三、内核入口 el0_svc / entry_SYSCALL_64 的汇编做了什么——从异常向量到 C 函数
操作系统
小宇子2B3 天前
四、从 write(1, "hello", 5) 到 ksys_write() —— sys_call_table 怎么路由的
操作系统
小宇子2B3 天前
一、printf("hello") 怎么变成 write(1, "hello", 5) —— libc 的 stdout 缓冲机制
操作系统
小宇子2B8 天前
一个 pthread_mutex_lock() 到底锁了什么——从用户态 CAS 到内核调度
操作系统
小宇子2B9 天前
多线程 malloc 为什么会变慢——glibc 的 arena 到 bins 全景
操作系统
fakerth14 天前
【OpenHarmony】communication_ipc模块
操作系统·openharmony
Coisinier14 天前
RHCE中shell脚本基础(磁盘剩余空间监控,Web 服务状态检查,curl 访问 Web 服务并返回状态)
linux·运维·服务器·前端·nginx·操作系统
小宇子2B15 天前
free 完再 malloc 同样大小,为什么常拿回刚还回去的那块?
操作系统
触底反弹17 天前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
杊页17 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·操作系统