【Linux 线程】线程的基本概念、LWP的理解

一、ps -L 指令🍎

  • 🐧 使用 ps -L 命令查看轻量级进程信息;
  • 🐧 pthread_self() 用于获取用户态线程的 tid,而并非轻量级进程ID;
  • 🐧 getpid() 用于获取当前进程id,而并非某个特定轻量级进程;

二、线程控制

🍎 Linux 操作系统不会直接提供给我们线程的系统调用,只会提供轻量级进程的系统调用

🍎 将轻量级进程的接口进行封装,给用户在应用层封装一个pthread线程库。


几个细节知识点🔍

  • 什么叫做主线程呢 ?🍎

主线程:通常指的是程序启动时最初创建并执行的线程,即从 main 函数开始执行的线程。CPU 调度的基本单位是线程,PID == LWP 的线程叫做 主线程


  • 简述什么是 LWP ?🍎

LWP:是轻量级进程,在 Linux下进程是资源分配的基本单位,线程是CPU调度的基本单位,而线程使用进程 pcb描述实现,并且同一个进程中的所有pcb共用 同一个虚拟地址空间,因此相较于传统进程更加轻量化


  • 请简述LWPpthread_create 创建的线程之间的关系 ? 🍎

pthread_create 是一个库函数,功能是在用户态创建一个用户线程,而这个线程的运行调度是基于一个 轻量级进程 实现的。


  • 请简述轻量级进程ID与进程ID之间的区别 ?🍎

因为 Linux下的轻量级进程是一个 pcb,每个轻量级进程都有一个自己的轻量级进程 ID(pcb 中的 pid),而同一个程序中的轻量级进程组成线程组,拥有一个共同的线程组 ID


在这里插入图片描述


  • 共享资源、临界区、临界资源的区别 ? 🍎

①🐧 共享资源:表示能被多个执行流同时访问的资源;

②🐧 临界区:对临界资源进行操作的代码段

③🐧 临界资源:同一时间只能有一个执行流访问访问的共享资源;


  • mutex 的理解 ?🍎

mutex 简单理解就是一个 0/1 计数器,用于标记资源访问状态;

0表示已经有执行流加锁成功,资源处于不可访问;

1表示未加锁,资源可访问;


  • 请简述什么是线程互斥,为什么需要互斥 ? 🍎

线程互斥指的是多个线程间对临界资源进行争夺访问时有可能会造成数据的二义性,因此通过保证同一时间只有一个线程能够访问临界资源的方式实现线程对临界资源的访问安全性。


  • pthread_create 创建一个线程 🔍

在这里插入图片描述

在这里插入图片描述


相关推荐

  1. Linux线篇章 - 线基础知识储备】

    2024-07-11 01:42:04       15 阅读
  2. Linux线

    2024-07-11 01:42:04       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 01:42:04       53 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 01:42:04       55 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 01:42:04       46 阅读
  4. Python语言-面向对象

    2024-07-11 01:42:04       56 阅读

热门阅读

  1. GraalVM简介及使用

    2024-07-11 01:42:04       19 阅读
  2. 徐州服务器租用:论带宽的作用有哪些

    2024-07-11 01:42:04       20 阅读
  3. 1. Go 九九乘法表

    2024-07-11 01:42:04       24 阅读
  4. Perl词法作用域:自定义编程环境的构建术

    2024-07-11 01:42:04       22 阅读
  5. SQL Server 设置端口详解

    2024-07-11 01:42:04       20 阅读
  6. MyBatis 框架核心及面试知识要点

    2024-07-11 01:42:04       23 阅读
  7. NLP - 基于bert预训练模型的文本多分类示例

    2024-07-11 01:42:04       17 阅读