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

相关推荐
A小辣椒21 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式