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 来记录状态,这就是物理内存管理的基础。

相关推荐
kk”4 小时前
Linux的组和权限管理
linux·运维·服务器
智购科技智能售货柜5 小时前
2026自动售货机整机可靠性测试:从高低温交变到EMC电磁兼容的认证工程实践~YH
运维·服务器·数据库·人工智能·物联网
mohesashou6 小时前
红帽linux的K8S部署
linux·kubernetes·ansible
xiaoye-duck6 小时前
《Linux网络编程》UDP Socket 编程实战:从 Echo 回显、通用字典服务到套接字封装全流程
linux·网络·udp
酒神dnspup7 小时前
CDN 回源检测怎么做?用 DNSPup 验证节点命中、源站暴露与多地可用性
运维·服务器·网络·网络协议·tcp/ip
Rain的Java大神之路7 小时前
短信接口被狂刷怎么处理
java·运维·后端·web安全·面试·架构·xss
江南风月7 小时前
3分钟快速上手日志审计系统 WGLOG v2.2 更新了什么
运维·服务器·网络
孙克旭_7 小时前
Docker 镜像构建|Vue+SpringBoot+Go 多语言项目 Dockerfile 案例
linux·运维·vue.js·spring boot·docker·dockerfile