什么是进程?什么的线程?-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

进程

操作系统中最核心的概念就是进程进程是对正在运行中的程序的一个抽象是系统进行资源分配和调度的基本单位

操作系统的其他所有内容都是围绕着进程展开的负责执行这些任务的是 CPU

进程是一种抽象的概念从来没有统一的标准定义看一般由程序、数据集合和进程控制块三部分组成

  • 程序用于描述进程要完成的功能是控制进程执行的指令集

  • 数据集合是程序在执行时所需要的数据和工作区

  • 程序控制块包含进程的描述信息和控制信息是进程存在的唯一标志

线程

线程thread是操作系统能够进行运算调度的最小单位其是进程中的一个执行任务控制单元负责当前进程中程序的执行

一个进程至少有一个线程一个进程可以运行多个线程这些线程共享同一块内存线程之间可以共享对象、资源如果有冲突或需要协同还可以随时沟通以解决冲突或保持同步

举个例子假设你经营着一家物业管理公司。最初业务量很小事事都需要你亲力亲为。给老张家修完暖气管道立马再去老李家换电灯泡—这叫单线程所有的工作都得顺序执行

后来业务拓展了你雇佣了几个工人这样你的物业公司就可以同时为多户人家提供服务了—这叫多线程你是主线程。但实际上并不是线程越多进程的工作效率越高这是因为在一个进程内不管你创建了多少线程它们总是被限定在一颗 CPU内或者多核 CPU的一个核内

这意味着多线程在宏观上是并行的在微观上则是分时切换串行的多线程编程无法充分发挥多核计算资源的优势

这导致使用多线程做任务并行处理时线程数量超过一定数值后线程越多速度反倒越慢的原因

区别

  • 本质区别进程是操作系统资源分配的基本单位而线程是任务调度和执行的基本单位

  • 在开销方面每个进程都有独立的代码和数据空间程序上下文程序之间的切换会有较大的开销线程可以看做轻量级的进程同一类线程共享代码和数据空间每个线程都有自己独立的运行栈和程序计数器PC线程之间切换的开销小

  • 所处环境在操作系统中能同时运行多个进程程序而在同一个进程程序中有多个线程同时执行通过CPU调度在每个时间片中只有一个线程执行

  • 内存分配方面系统在运行的时候会为每个进程分配不同的内存空间而对线程而言除了CPU外系统不会为线程分配内存线程所使用的资源来自其所属进程的资源线程组之间只能共享资源

  • 包含关系没有线程的进程可以看做是单线程的如果一个进程内有多个线程则执行过程不是一条线的而是多条线线程共同完成的线程是进程的一部分所以线程也被称为轻权进程或者轻量级进程

举个例子进程火车线程车厢

  • 线程在进程下行进单纯的车厢无法运行

  • 一个进程可以包含多个线程一辆火车可以有多个车厢

  • 不同进程间数据很难共享一辆火车上的乘客很难换到另外一辆火车比如站点换乘

  • 同一进程下不同线程间数据很易共享A车厢换到B车厢很容易

  • 进程要比线程消耗更多的计算机资源采用多列火车相比多个车厢更耗资源

  • 进程间不会相互影响一个线程挂掉将导致整个进程挂掉一列火车不会影响到另外一列火车但是如果一列火车上中间的一节车厢着火了将影响到所有车厢

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“什么是进程?什么的线程?-CSDN博客” 的相关文章