全方位讲解的线程和进程

发布时间:2023-04-29 09:34:11

hello~ 我是小索奇

本文将用不同的例子和思维向您详细讲解过程和线程,避免您感到困惑;

过程和线程是计算机操作系统的基本概念。虽然听起来很高,但它们与我们日常生活中使用的手机、电脑和其他设备密切相关。

索奇在学习过程和线程概念时,读了很多文章,也有很多混乱的地方,当时我经常与手机和电脑进行比较...话不多说,go

简单易懂的例子

全方位讲解的线程和进程_创建进程

首先,我们可以把这个过程理解为正在运行的程序的例子。就像当我们在手机上打开微信、QQ等应用程序时,手机将启动一个新的过程来运行应用程序一样。该过程包含了应用程序所需的所有资源,如内存、CPU时间等。如果您同时打开多个应用程序,则将同时运行多个过程。

这些过程相互独立,不相互干扰,但它们共享一些系统资源,如网络连接和文件系统。

线程是同时执行多个任务的最小单位。线程可以并发运行,以提高程序的效率和响应速度。就像我们同时在手机上下载多个文件一样,手机会创建多个线程并发下载这些文件,以达到更快的下载速度。

当您在计算机上打开一个应用程序时,计算机还将启动一个操作程序的过程,然后创建多个线程来执行不同的任务。例如,浏览器可能有一个线程负责加载网页内容,另一个线程负责处理用户输入等。这些线程可以相互通信,共享相同的数据,但它们也是独立的,不相互干扰。

一些应用程序将启动多个过程来操作,例如,游戏应用程序将启动一个过程来负责游戏逻辑,另一个过程负责渲染游戏图片。其优点是将不同的任务分配到不同的过程中,以提高程序的性能和稳定性。

计算机操作系统概念(不懂也没关系)

全方位讲解的线程和进程_时间片_02

什么是过程和线程?有什么关系?

在计算机操作系统中,过程和线程负责管理计算机资源,协调不同任务的执行,使程序能够正常运行。

全方位讲解的线程和进程_时间片_03

过程是程序的执行过程,是动态概念,是程序在执行过程中分配和管理资源的基本单位。每个过程都有自己的地址空间,至少有 5 基本状态为:初始状态、执行状态、等待状态、就绪状态和终止状态。

  1. 新建状态(New):当操作系统创建新过程时,该过程处于新状态。此时,操作系统已经为过程分配了必要的资源,但过程尚未开始实施。
  2. 就绪状态(Ready):当过程准备好运行,并分配所有必要的资源,等待CPU分配时间片执行时,过程就准备好了。
  3. 运行状态(Running):当过程分配到CPU时间片并开始执行时,过程处于运行状态。
  4. 阻塞状态(Blocked):当过程需要等待事件发生(如等待输入/输出操作完成)而暂时无法执行时,过程处于堵塞状态。
  5. 终止状态(Terminated):当过程完成任务或被操作系统强制终止时,过程处于终止状态。在终止状态下,操作系统将恢复过程中占用的资源。

进程 & 线程

  • 过程也被称为过程实体,过程图像但严格来说,过程不是过程实体,过程实体是静态的,过程是动态的。如果没有特别强调两者之间的区别,一般可以认为过程是过程实体因此,我们也可以说,过程由程序段、数据段和PCB组成
  • 例如,创建过程的本质是创建过程实体中的PCB;撤销过程是PCB(过程控制块)在撤销过程中
  • 流程是资源分配的最小单位,线程是CPU调度的最小单位
  • 一个线程 它只能属于一个过程,一个过程可以有多个线程,但至少有一个线程
  • 费用方面:每个过程都有独立的代码和数据空间(程序上下文),过程之间的切换费用较大;线程可视为轻量级过程,相同类型的线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的费用很小
  • 环境:多个过程(程序)可以在操作系统中同时运行;在同一过程(程序)中,同时执行多个线程(CPU调度,每个时间片中只执行一个线程)
  • 内存分配:系统为每个过程分配不同的内存空间;对于线程,除CPU外,系统不会为线程分配内存(线程使用的资源来自其流程),线程组只能共享资源
  • 包括关系:线程是过程的一部分,因此线程也称为轻权过程或轻量级过程
  • 根据线程执行的任务和系统的调度策略,一个线程可以占用一个或多个CPU的核心资源。在多核CPU上,多个线程可以同时运行,以达到并发执行的效果。

CPU核心是一个过程吗?

线程和过程的全方位解释_时间片_04

一个 CPU 核心不一定是一个过程,也不一定是核心。CPU 核心是执行指令和计算操作的处理器中的物理单元。过程是操作系统中的抽象概念,表示正在运行的程序实例可以分配到多个 CPU 核心执行。核心是操作系统的核心部分,负责管理和调度过程,提供系统资源。一个 CPU 操作系统的核心可以调度多个过程。(一个操作系统通常只有一个内核哈)

过程的哪些部分组成?

  1. 程序段:也称为代码段,是该过程的可执行代码部分。在此段中,存储程序指令和操作系统所需的其他信息。当调度过程时,操作系统将程序段加载到内存中,并根据程序计数器(PC)执行指令。
  2. 数据段:又称静态段,是过程中存储数据的一部分。在此段中,存储了程序所需的各种数据结构、变量和常量。当调度过程时,操作系统将过程的数据段加载到内存中,并提供给过程进行读写操作。
  3. PCB:它是操作系统中用于管理过程的数据结构,包括过程状态、程序计数器、寄存器值、堆栈指针、内存分配、打开文件列表等所有信息。PCB的使用可以帮助操作系统更好地管理过程,确保不同过程之间的独立性和安全性,协调不同过程之间的资源共享和相互排斥访问。

对PCB还是有点傻?

全方位讲解的线程和进程_创建进程_05

  • PCB是进程控制块(Process Control Block)缩写是操作系统中用于管理过程的数据结构。
  • PCB是过程中唯一存在的标志
  • 当操作系统需要切换当前正在运行的过程时,首先保存当前过程的PCB,然后加载下一个过程的PCB信息,以实现过程之间的切换。PCB的使用可以帮助操作系统更好地管理过程,确保不同过程之间的独立性和安全性,协调不同过程之间的资源共享和相互排斥访问。
  • 例如,创建过程的本质是创建过程实体中的PCB;撤销过程是PCB(过程控制块)在撤销过程中

拓展概念

除了过程和线程,还有其他一些概念也非常重要。例如,CPU时间片、死锁等。CPU时间片是指操作系统为每个过程或线程分配的最小单位时间。在此期间,过程或线程占据CPU资源。死锁是由于不同任务之间的相互依赖而无法继续执行的。

为什么这么卡~

全方位讲解的线程和进程_创建进程_06

如果您同时在计算机上打开多个应用程序,其中一个占用了大量CPU资源,其他应用程序将变得非常卡住。这是因为操作系统将CPU资源分配给正在运行的应用程序。如果其中一个应用程序占用了太多的CPU资源,其他应用程序将受到影响。

当您选择移动电脑时,我们可以考虑设备的处理器性能和内存大小,因为这些硬件资源将直接影响设备运行多个过程和线程的能力(即您是否卡住~)

上一篇 【JAVA】智慧校园电子班牌系统的实现 springboot技术
下一篇 配置新用户的SSH连接权限

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题