Linux---线程基础

一、线程的概念

1、进程和线程的区分

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

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

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

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

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

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

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

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

2、TCB

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

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

3、注意

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

执行流(粒度)<=进程

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

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

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

pthread_create

如下图:是同一个进程

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

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

物理内存管理

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

struct page mem[1048576];

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

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

相关推荐
JAVA面经实录9171 小时前
计算机基础(完整版·超详细可背诵)
java·linux·数据结构·算法
晚风_END1 小时前
Linux|操作系统|最新版openzfs编译记录
linux·运维·服务器·数据库·spring·中间件·个人开发
GanGanGanGan_2 小时前
Rocky Linux 9 + XFCE 编译安装 fcitx5 + Rime 教程
linux·centos
代码中介商2 小时前
Linux TCP 网络编程完全指南:从三次握手到高并发服务器
服务器·网络·tcp/ip
咖喱o2 小时前
QinQ/VLAN Stacking
linux·运维·服务器·网络
xiaoye-duck2 小时前
《Linux系统编程》Linux指令 (二):从零开始理解Linux基础指令
linux
月白风清江有声2 小时前
安装mingw 版 cmake
linux
sduwcgg3 小时前
IQ-Learn 在 RTX 3090 服务器上的环境配置与踩坑记录
运维·服务器
呱呱巨基4 小时前
Linux 基础IO
linux·c++·笔记·学习