首页 > 其他分享 >线程概念浅谈

线程概念浅谈

时间:2024-05-28 23:45:56浏览次数:16  
标签:浅谈 一个 概念 线程 进程 PCB 执行 资源

1. 为什么要有线程

我们知道一个集成应用场景需要多个进程同时调度执行各自的功能,那么多进程的本质就是产生多个执行流,每个执行流执行不同的代码和功能,但是一个进程由PCB(task_struct)、进程地址空间、页表、文件描述符表等资源组成,是一个资源集合,创建的开销较大,那么为了满足用户的多执行流的需求的同时又降低开销,线程就因此诞生,一个进程可以有多个线程,同一个进程的线程共享同一份资源(进程地址空间、页表等)。

2. 线程是什么

在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。
认识线程,我们需要重新定义进程,我们对进程的粗浅认知是进程 = PCB + 进程资源,但是我们一般认为一个进程只有一个PCB,是因为我们的程序一般都是单线程执行流,而多线程执行流就是有多个PCB指向同一份资源(进程地址空间、页表等)。

2.1 线程的理解

线程是CPU调度的基本单位,如果一个进程有多个线程,那么OS肯定要对其进行管理、运行、终止等操作,如何管理——先描述,再组织。
Linux的设计者认为,进程和线程都是执行流,具有极度的相似性,没必要单独设计数据结构,因为一旦设计新的数据结构,就必然要设计配套的接口,编程难度增大,代码的维护也会更难,因此设计者想出直接采用PCB描述线程,复用以前描述进程的代码,来模拟线程,因此每一个PCB就对应一个线程,我们以前认识的进程就是特殊的一种形式——单线程进程(只有一个PCB)。

2.2 线程和进程之间的关系

将内存资源形象的表示为国家,进程表示一个个家庭,而线程就比作一个家庭中的一个个成员,每个成员都在并发地执行各自的工作,共享同一份家庭资源(房子、汽车等等),都是在为这个家庭生活所努力。

标签:浅谈,一个,概念,线程,进程,PCB,执行,资源
From: https://www.cnblogs.com/Mitoma/p/18219248

相关文章

  • docker的一些概念
     Docker主机(Host):一个物理机或虚拟机,用于运行Docker服务进程和容器,也称为宿主机,node节点;Docker服务端(Server):Docker守护进程,运行docker容器;Docker客户端(Client):客户端使用docker命令或其他工具调用dockerAPI;Docker镜像(Images):镜像可以理解为创建实例使用......
  • bet8链接:浅谈LKL对Linux和新的成果
    由bet8链接 вт989点сс编译,LinuxKernelLibrary(LKL)设计为Linux核心的移植版本,在目录arch/lkl中,约有3500行的程式码。LKL与应用程式连结,以运作于使用者空间,依赖由主机作业系统提供的一组主机端的功能,例如semaphore,POSIXThreads,malloc、计时器(timer)......
  • Java三种方法实现多线程,继承Thread类,实现Runnable接口,实现Callable接口
    目录线程:继承Thread类:实现Runnable类:实现Callable接口:验证多线程:线程:定义:进程可以同时执行多个任务,每个任务就是线程。举个例子:一个Java程序,如果同时有两个循环同时进行,就是线程。再比如,你用百度网盘,边看视频,边下载。继承Thread类:步骤写在代码里的classmythrea......
  • 反射的基本概念和使用方法及其应用案例
    反射是一种编程技术,允许程序在运行时检查和操作自身或其它程序集的信息,包括类、属性、方法等。它提供了一种动态访问和操作类型的能力。使用方法:获取类型信息:通过Type对象(Java中的Class对象)可以获取类的名称、属性、方法等信息。创建实例:即使不知道具体的类名,也可以在运行时创......
  • 如何进行接口优化?如何进行接口优化?多线程的核心参数有哪些?SpringCloud使用了哪些组件?
    在快速迭代的技术领域中,持续地回顾与总结项目经验不仅是个人成长的催化剂,也是智慧积累的关键环节,本次知识积累旨在深入剖析如何进行接口优化?如何进行接口优化?多线程的核心参数有哪些?SpringCloud使用了哪些组件?一、如何优化SQL?优化SQL语句以提高查询效率和性能是一项......
  • Java高并发编程详解:深入理解并发核心库(Java高并发编程详解:多线程与架构设计姊妹篇) (Ja
    我的阅读笔记:并发核心库概览:首先介绍Java并发核心库的组成,包括java.util.concurrent包下的主要类和接口,以及它们之间的关系。线程池技术:详细讲解Java中的线程池技术,包括线程池的创建、配置、使用以及调优。介绍不同类型的线程池(如FixedThreadPool、CachedThreadPool等)以及它们......
  • 深度学习概念
    一、前言在大四的时候,同专业的同学都开始找工作,听到他们说自己的工资的时候说实话挺羡慕的,可能我比较现实,我认为现在读书其实就是为了以后能够找个好工作,在我眼里,好工作就是工资高,上班累点也没关系。人生就是这样,面临多个选择的时候,无论选择哪条路以后都有可能会后悔。我时常在......
  • 29.并发编制【六】守护线程与锁
    【一】守护线程守护线程是在后台运行并依赖于主线程或非守护线程的存在1)主线程死亡,子线程存活主线程结束后不会立马结束,而是等待其他子线程结束之后结束fromthreadingimportThreadimporttimedefwork(name):print(f'{name}开始')time.sleep(2)print(f......
  • 28.并发编制【五】管道与多线程
    【一】管道1)介绍frommultiprocessingimportPipe#创建管道left_pipe,right_pipe=Pipe()#返回管道两端的连接对象,需在产生Process对象之前产生管道#默认参数dumplex:默认管道是全双工的#若为False,left_pipe只能用于接收,right_pipe只能用于发送2)主要方法#接收数......
  • kafka多线程顺序消费
    一、单线程顺序消费为了避免有的小伙伴第一次接触顺序消费的概念,我还是先介绍一下顺序消费是个什么东西。双十一,大量的用户抢在0点下订单。为了用户的友好体验,我们把订单生成逻辑与支付逻辑包装成一个个的MQ消息发送到Kafka中,让kafka积压部分消息,防止瞬间的流量压垮服务。那么......