进程&线程

作者: high_m | 来源:发表于2017-08-28 21:10 被阅读0次

写这篇博客(不仅仅是这篇)的初衷是在朋友的推荐下,阅读了一篇文章你应该知道的JAVA面试题,里面提出了若干方面的面试题,有兴趣的你可以点进去看一下。文章的作者是阿里的一位技术大牛方腾飞,从这一角度来看我认为还是非常有意义、有价值的面试题。我与朋友约定,站在自身的知识角度共同来答复这些面试题。一方面在于分享与共同探讨知识,二是培养自己的思考写作习惯,提升自己。本文仅仅是开始


进程

进程是系统进行资源分配和调度的基本单位。在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。

进程相对于程序而言,进程是一个活动的实体,而程序是一个没有生命的实体。只有当系统在执行程序时,它才能转为一个活动的实体(进程)。

进程的状态图示如下:


进程状态图

线程

线程,有时被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。

已经有可进程,为何要引入线程呢?

60年代,在OS中能拥有资源和独立运行的基本单位是进程,然而随着计算机技术的发展,进程出现了很多弊端,一是由于进程是资源拥有者,创建、撤消与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机(SMP)出现,可以满足多个运行单位,而多个进程并行开销过大。
因此在80年代,出现了能独立运行的基本单位——线程(Threads)。

总之,相较进程而言,线程更加轻巧,同一进程内的线程切换更加迅速且开销小。线程可并发执行(你也可以尝试着去了解并行与并发的区别),共享进程资源。在多线程操作系统中,进程不再是一个可执行的实体,由线程所取代

线程的状态跟进程类似,也有就绪,运行,阻塞状态,不过可能细节更加丰富具体。
线程的状态示意图如下:


引自[并发编程的艺术]

区别总结

上面的阐述中或多或少都有些线程与进程的区别描述,这里做下总结。

  • 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。
  • 通信:进程间通信与线程间通信方式不同。
  • 调度和切换:线程上下文切换比进程上下文切换要快得多。
  • 在多线程OS中,进程不是一个可执行的实体。

通信方式

进程间通信,参考文章如下:
进程间通信方式
进程间通信介绍

线程间通信,参考文章如下:
线程通信
线程间的通信、同步方式与进程间通信方式

相关文章

  • 线程和进程概念

    线程和进程 进程 线程 线程和进程的区别

  • 1 多线程基础和Sync

    目录 进程、线程概念 创建线程的方法 线程常用方法 线程同步:Sync 1 进程线程概念 1.1 进程 进程指的是...

  • OC-底层原理 23:多线程原理

    本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理 线程 和 进程 线程和进程的定义 线程 线程时进程...

  • iOS 多线程原理

    本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理 线程 和 进程 线程和进程的定义 线程 线程时进程...

  • 17_多线程

    =================线程和进程 =============进程 =============线程 ==...

  • iOS底层原理24:多线程原理

    本文的目的在于了解进程、线程、多线程、线程池等的基本概念及原理 线程和进程 线程和进程的定义 线程 线程是进程的基...

  • OC底层原理18-多线程

    线程 & 进程 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,一个进程可以有多个线程。 进程想...

  • OpenMP笔记

    进程与线程 进程:进程是正在运行的程序实例线程:线程是进程中实际运作单位,一个进程可以并行多个线程 进程包含如下程...

  • 多线程

    线程和进程 线程 线程是进程的基本执行单元,一个进程的所有任务都在线程中执行 进程要想执行任务,必须得有线程,进程...

  • 详解iOS面试:进程与线程

    进程与线程 进程 = 资源管理 + 线程, 进程是资源分配单位,线程是 CPU 调度单位 以前没有线程的时候,进程...

网友评论

    本文标题:进程&线程

    本文链接:https://www.haomeiwen.com/subject/vjvgdxtx.html