资讯专栏INFORMATION COLUMN

进程与线程的一个简单解释

番茄西红柿 / 3069人阅读

摘要:线程线程,有时被称为轻量级进程,,是程序执行流的最小单元。进程和线程区别进程是资源分配的基本单位。说得简单点,下面这段代码执行的时候参考博文进程与线程的一个简单解释多线程和多进程的区别小结多线程还是多进程的选择及区别加锁

关于进程与线程的简单理解(以工厂举例:cup-》工厂,车间-》进程,线程-》工人),可以参考阮一峰的博文进程与线程的一个简单图文解释

先来了解下进程和线程的概念
关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。

进程(Process)

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

线程

线程(thread),有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪阻塞运行三种基本状态。就绪状态是指线程具备运行的所有条件,逻辑上可以运行,在等待处理机;运行状态是指线程占有处理机正在运行;阻塞状态是指线程在等待一个事件(如某个信号量),逻辑上不可执行。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。
线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程

进程和线程区别

进程是资源分配的基本单位。所有与该进程有关的资源,都被记录在进程控制块PCB中。以表示该进程拥有这些资源或正在使用它们。
另外,进程也是抢占处理机的调度单位,它拥有一个完整的虚拟地址空间。当进程发生调度时,不同的进程拥有不同的虚拟地址空间,而同一进程内的不同线程共享同一地址空间。
与进程相对应,线程与资源分配无关,它属于某一个进程,并与进程内的其他线程一起共享进程的资源。

线程只由相关堆栈(系统栈或用户栈)寄存器和线程控制表TCB组成。寄存器可被用来存储线程内的局部变量,但不能存储其他线程的相关变量。
通常在一个进程中可以包含若干个线程,它们可以利用进程所拥有的资源。在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度,从而显著提高系统资源的利用率和吞吐量。因而近年来推出的通用操作系统都引入了线程,以便进一步提高系统的并发性,并把它视为现代操作系统的一个重要指标。

线程与进程的区别可以归纳为以下4点:

地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。

通信:进程间通信IPC,线程间可以直接读写进程数据段(如全局变量)来进行通信——需要进程同步和互斥手段的辅助,以保证数据的一致性。

调度和切换:线程上下文切换比进程上下文切换要快得多。

在多线程OS中,进程不是一个可执行的实体。

多进程和多线程的比较

一.为何需要多进程(或者多线程),为何需要并发?

这个问题或许本身都不是个问题。但是对于没有接触过多进程编程的朋友来说,他们确实无法感受到并发的魅力以及必要性。
我想,只要你不是整天都写那种int main()到底的代码的人,那么或多或少你会遇到代码响应不够用的情况,也应该有尝过并发编程的甜头。就像一个快餐点的服务员,既要在前台接待客户点餐,又要接电话送外卖,没有分身术肯定会忙得你焦头烂额的。幸运的是确实有这么一种技术,让你可以像孙悟空一样分身,灵魂出窍,乐哉乐哉地轻松应付一切状况,这就是多进程/线程技术。
并发技术,就是可以让你在同一时间同时执行多条任务的技术。你的代码将不仅仅是从上到下,从左到右这样规规矩矩的一条线执行。你可以一条线在main函数里跟你的客户交流,另一条线,你早就把你外卖送到了其他客户的手里。

所以,为何需要并发?因为我们需要更强大的功能,提供更多的服务,所以并发,必不可少。

二.多进程

什么是进程。最直观的就是一个个pid,官方的说法就:进程是程序在计算机上的一次执行活动
说得简单点,下面这段代码执行的时候

参考博文:
进程与线程的一个简单解释
多线程和多进程的区别(小结)
多线程还是多进程的选择及区别
MYsql加锁

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21745.html

相关文章

  • GIL 已经被杀死了么?

    摘要:酷睿代在年取代了奔腾,主频远低于此。该词被敏捷开发团队使用较多,含义与形式会略有不同,更改已经开始将垃圾收集器的状态转到解释器,因此每个子解释器将拥有它自己的本该如此。结论死亡了吗对于单线程的应用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原创并首发于公众号【Python猫】,未经授...

    番茄西红柿 评论0 收藏0
  • GIL 已经被杀死了么?

    摘要:酷睿代在年取代了奔腾,主频远低于此。该词被敏捷开发团队使用较多,含义与形式会略有不同,更改已经开始将垃圾收集器的状态转到解释器,因此每个子解释器将拥有它自己的本该如此。结论死亡了吗对于单线程的应用程序,仍然存活。showImg(https://user-gold-cdn.xitu.io/2019/5/19/16ad09f554fdf443); 本文原创并首发于公众号【Python猫】,未经授...

    pkwenda 评论0 收藏0
  • GIL 已经被杀死了么?

    摘要:酷睿代在年取代了奔腾,主频远低于此。该词被敏捷开发团队使用较多,含义与形式会略有不同,更改已经开始将垃圾收集器的状态转到解释器,因此每个子解释器将拥有它自己的本该如此。结论死亡了吗对于单线程的应用程序,仍然存活。 showImg(https://segmentfault.com/img/remote/1460000019229774); 本文原创并首发于公众号【Python猫】,未经授...

    xietao3 评论0 收藏0
  • 进程线程

    摘要:进程与线程进程和线程是操作系统的基本概念但是它们比较抽象不容易掌握。线程,有时被称为轻量进程,,是程序执行流的最小单元。 进程与线程 进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。 有一个很好的类比,可以把它们解释地清晰易懂。 CPU 计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。 假定工厂的电力有限,一次...

    Jingbin_ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<