Linux---线程基础

一、线程的概念

1、进程和线程的区分

进程:运行起来的程序。(进程=内核数据结构+代码和数据)--->操作系统:承担分配资源的基本实体。

线程:线程是进程内部的执行分支。

Linux"线程"在进程内部运行,本质是在进程的地址空间内运行。

我们一起学习的进程,本质:内部只有一个线程的进程~,进程内部只有一个执行分支。

进程=多个线程+地址空间+页表+代码和数据

代码段是一整块,没被切开

但每个线程,只跑其中的某一段代码

所以:每个线程执行的就是正文代码的一部分

2、TCB

TCB---->Tread Ctrl Block ---->线程控制块,在OS中,单独为线程设计TCB,

Linux复用进程相关的数据结构,task_struct。 用"进程"北河结构模拟实现"线程效果"。

3、注意

在CPU角度,没有进程,只有执行流!!!(线程)----->轻量级进程

执行流(粒度)<=进程

在linux系统中:执行流==轻量级进程,进程=一个或者多个轻量级进程+其他资源

Linux中,在这里我们不说线程,只有进程和轻量级进程。

二、创建一个轻量级进程(线程)

pthread_create

如下图:是同一个进程

完美验证了线程的核心特性:多个线程共享同一个进程 ID,属于同一个进程

三、再谈虚拟地址空间(页表+虚拟地址+物理地址)

物理内存管理

物理内存管理其思想是将虚拟内存下的逻辑地址空间分为若干页,将物理内存空间分为若干页框,通过 页表便能把连续的虚拟内存,映射到若干个不连续的物理内存页。这样就解决了使用连续的物理内存 造成的碎片问题。

struct page mem1048576;

  • 物理内存侧 :被划分成一个个大小固定的单元,叫页框(Page Frame,也叫页帧),Linux 下默认大小就是 4KB。
  • 磁盘侧 :文件系统里,数据存储的基本单元叫块(Block),常见的默认大小也是 4KB。
  • 1:1 对应:内存和磁盘之间交换数据(比如加载程序、读写文件)时,都是以 4KB 为单位批量传输的,这就是图里 "1:1" 箭头的含义。

操作系统把物理内存切成 4KB 的页框,磁盘也以 4KB 为块,两者直接 1:1 交换;每个页框都有一个 struct Page 来记录状态,这就是物理内存管理的基础。

相关推荐
DianSan_ERP20 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
恒53920 小时前
Linux文件系统I
linux·运维·服务器
阿成学长_Cain20 小时前
Linux ipcs 命令超全详解:查看共享内存 / 消息队列 / 信号量,IPC 运维必备
linux·运维·服务器·网络·数据库
黯然神伤88820 小时前
AlmaLinux设置软件下载源
linux·alma
青瓦梦滋21 小时前
协议定制/序列化-反序列化(Linux视角)
linux·服务器·网络·c++
运维老郭1 天前
【K8s运维实战】Kubernetes临时存储卷实战:emptyDir核心用法与gitRepo弃用迁移指南
运维·云原生·kubernetes
珠海西格电力1 天前
云边端协同架构:零碳园区管理系统的技术底座
大数据·运维·人工智能·算法·架构·能源
阿成学长_Cain1 天前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
小羊Yveesss1 天前
2026年微信小程序后端怎么搭建?后台、数据、接口和运维怎么选
运维·微信小程序·小程序