你知道进程和线程是什么吗?

184 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情

进程线程 都是计算机里程序运行时所涉及到的东西,因此它俩对于我们了解计算机原理是十分重要的,因此本文就准备聊聊它们,废话不多说,开搞!

ppx.jpg

什么是进程

首先咱们先聊聊进程

qidai.jpeg

进程是计算机中的程序关于某个 数据集合 上的一次 运行活动,是系统进行 资源分配 的最小单位,是操作系统结构的基础

在早期面向进程设计的计算机结构中,进程是程序的 基本执行实体;在当代面向线程设计的计算机结构中,进程是 线程的容器

程序是指令、数据及其组织形式的描述,进程是程序的实体,进程的特点主要有两点:

  • 进程是一个实体,每一个进程都有它自己的地址空间,一般情况下,包括 文本区域(text region)数据区域(data region)堆栈(stack region)
  • 进程是一个 执行中的程序,程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行时),它才能成为一个活动的实体,我们称其为进程

666.jpg

什么是线程

接下来咱们再说说线程

inte.jpg

线程是操作系统能够进行 调度的 最小单位。它被包含在进程之中,是进程中的 实际运作单位

一条线程指的是进程中一个 单一顺序的控制流,一个进程中可以并发多个线程,每条线程执行不同的任务

同一进程中的多条线程将共享该进程中的全部系统资源,如 虚拟地址空间文件描述符信号处理,但同一进程中的多个线程有各自的 调用栈(call stack)寄存器环境(register context)本地存储(thread-local storage)

线程主要有4个特点

  • 轻型实体,线程基本上不拥有系统资源,只是有一点必不可少的、能保证独立运行的资源
  • 独立调度和分派的基本单位
  • 可并发执行
  • 共享进程资源,所有线程都具有 相同的 地址空间(进程的地址空间),这意味着,线程可以访问该地址空间的 每一个虚地址,此外,还可以访问进程所拥有的已打开文件、定时器、信号量