过程(process)和操作系统中的线程(thread in os)的区别

在操作系统(OS)中,进程是由一个或多个线程执行的计算机程序的实例。例如,当我们用C或C++编写程序并编译它时,编译器就创建二进制代码。原始代码和二进制代码都是程序,因此当我们运行二进制代码时,它会变成一个进程。根据操作系统的不同,一个进程可能由多个并发执行指令的执行线程组成。...

什么是过程(process)?

007Ys3FFgy1gwyfym5dwyj30bh080wei

在操作系统(OS)中,进程是由一个或多个线程执行的计算机程序的实例。例如,当我们用C或C++编写程序并编译它时,编译器就创建二进制代码。原始代码和二进制代码都是程序,因此当我们运行二进制代码时,它会变成一个进程。根据操作系统的不同,一个进程可能由多个并发执行指令的执行线程组成。

上下文/过程的上下文/过程的属性

  • 进程Id:由操作系统(OS)分配的唯一标识符。
  • CPU调度信息:例如优先级(不同的进程可能具有不同的优先级,例如,在最短的作业优先调度中,短进程可能被分配低优先级)。
  • 进程状态:可以准备就绪、运行等。
  • I/O状态信息:例如,分配给进程的设备。
  • CPU寄存器:与程序计数器类似(当进程在CPU内外交换时,必须保存和恢复CPU寄存器)。
  • 帐户信息

为了提高工作效率,进程内存分为四个部分。这些章节包括:

  • 声明局部变量时用于它们的堆栈。
  • 堆,用于动态内存分配,通过调用newdelete、malloc、free等进行管理。
  • 文本部分,由编译后的程序代码组成,在程序启动时从非易失性存储器读入。
  • 数据部分,由全局变量和静态变量组成,在执行main之前进行分配和初始化。

关于流程,您需要了解什么

  1. 该过程可称为程序不执行。
  2. 进程越重,上下文切换需要更多的时间。
  3. 进程拥有各自的程序计数器(PC)、堆栈空间和寄存器集。
  4. 进程是完全独立的,运行在与线程不同的内存空间中。
  5. 操作系统分别处理所有不同的进程。
  6. 各个过程相互独立。
  7. 流程终止需要更多的时间。
  8. 进程之间发生的通信需要一些时间。
  9. 如果任何进程被阻塞,其余进程将继续其工作。
  10. 进程比线程需要更多的资源。
  11. 创建流程需要更多的时间。
  12. 不同的进程具有不同的代码和数据副本。
  13. 进程不需要同步。

什么是线(thread)?

线程是通过进程代码执行的流程,它有自己的程序计数器,用于跟踪要执行的指令EXCETENEXT、保存当前工作变量的系统寄存器以及包含执行历史记录的堆栈。因为线程具有进程的某些属性,所以它们有时被称为轻量级进程。

一种具有线程功能的操作系统(OS),CPU利用率的基本要素是线程。Athread由程序计数器(PC)、寄存器和堆栈空间组成。线程并不是独立于另一个类似进程的进程,因此线程与其他线程共享它们的代码部分、数据部分、操作系统资源(也称为任务),如openfiles和signals。线程可以分为两种类型:用户级线程(ULT)和内核级线程(KLT)。

  • 用户级线程(ULT)-它们在用户级库中实现,而不是使用系统调用创建。
  • 内核级线程(KLT)——KLT是一种了解和管理线程的线程。内核本身具有跟踪系统中所有线程的线程表(主线程表),而不是每个进程中的线程表。它还维护传统的流程表以跟踪流程。

你需要知道关于线程的什么

  1. 线程是进程的一部分。
  2. 线程需要较少的时间进行上下文切换,因为它们比进程轻。
  3. 一个线程与其他线程共享代码段、地址空间和数据段。
  4. 线程与其所属的进程在同一内存空间中运行。
  5. 操作系统将所有用户级对等线程视为单个任务。
  6. 线程是进程的一部分,因此是独立的。
  7. 线程终止所需的时间更少。
  8. 线程之间发生的通信所需的时间比进程短。
  9. 如果一个用户级线程经历了锁定,那么其余的线程也会受到限制,因为操作系统将这些线程视为单个任务。
  10. 与线程相比,线程需要更少的资源。
  11. 线程需要更少的时间来创建。
  12. 不同线程之间可以共享相同的代码和数据副本。
  13. 线程需要同步以避免意外情况。

Also Read: Difference Between Segmentation And Paging In Os

表格形式的进程与线程

比较基础 过程 线
描述 该过程可以称为正在执行的程序。 线程是进程的一部分。
上下文切换时间 上下文切换需要更多的时间,因为它们比较重。 上下文切换需要的时间更少,因为它们比进程轻。
组件共享 进程拥有各自的程序计数器(PC)、堆栈空间和寄存器集。 一个线程与其他线程共享代码段、地址空间和数据段。
独立性 进程是完全独立的,并且运行在与线程不同的内存空间中。 线程与其所属的进程在相同的内存空间中运行。
依赖 各个过程相互独立。 线程是进程的一部分,因此是依赖的。
终止时间 流程终止需要更多的时间。 线程终止所需的时间更少。
通信时间 进程之间的通信需要一些时间。 线程之间的通信所需的时间比进程短。
阻塞对其他进程/线程的影响 如果任何进程被阻塞,其余进程将继续工作。 如果用户级线程遇到阻塞,其余线程也会受到限制,因为操作系统将这些线程视为单个任务。
操作系统资源 进程比线程需要更多的资源。 与线程相比,线程需要更少的资源。
创建时间 创建流程需要更多的时间。 线程需要更少的时间来创建。
数据和代码的副本 不同的进程具有不同的代码和数据副本。 不同线程之间可以共享相同的代码和数据副本。
同步 进程不需要同步。 线程需要同步以避免意外情况。

什么是线程和进程之间的一些相似之处(some of the similarities between threads and processes)?

  • 就像进程一样,线程共享CPU,一次只有一个线程处于活动(运行)状态。
  • 进程内的线程按顺序执行,进程也是如此。
  • 和进程的情况一样,如果一个线程被阻塞,另一个线程可以运行。
  • 线程就像进程一样可以创建子线程。

Also Read: Difference Between Logical And Physical Address In OS

  • 发表于 2021-11-29 18:13
  • 阅读 ( 155 )
  • 分类:IT

你可能感兴趣的文章

睡觉(sleep)和在java中等待(wait in java)的区别

...直到另一个线程调用对象的notify或notifyAll方法。 线程是操作系统中最小的处理单元。它是一个程序中的单一顺序控制流。线程是轻量级的。多线程是同时运行多个线程的机制。Java等编程语言支持多线程。多线程处理有很多优点...

  • 发布于 2020-10-19 03:04
  • 阅读 ( 274 )

可运行(runnable)和线(thread)的区别

...这些子流程称为线程。多线程处理是同时执行多个线程的过程。线程化应用程序可以使用不同的编程语言构建。Runnable和Thread与Java编程相关联。Java中有两种方法通过实现可运行接口或扩展thread类来创建线程。在实现Runnable时,许...

  • 发布于 2020-10-19 19:23
  • 阅读 ( 189 )

过程(process)和线(thread)的区别

...和进程来**高性能的处理器。线程和进程的实现因可用的操作系统而异。 什么是一个过程(a process)? 一般来说,一个过程是为了达到特定结果而进行的一系列连续的行动。但是,在计算机世界中,进程是一个正在执行的计算机程...

  • 发布于 2020-10-29 12:02
  • 阅读 ( 210 )

java8lambdas简介

... 使用lambda,创建Runnable的过程变得更加简单。上面的任务定义可以重写为: ...

  • 发布于 2021-03-12 08:09
  • 阅读 ( 246 )

线程是什么?它对您的智能家居意味着什么?

...为6LoWPAN,以减少设备的能源需求。这意味着物联网设备中的一块AA电池可以使用数年而无需更换。线程在ieee802.15.4mac/PHY无线电标准上运行。本标准是6LoWPAN的基础,以低功耗、低成本为经营理念。 ...

  • 发布于 2021-03-28 00:33
  • 阅读 ( 221 )

为什么没有奇数编号的windows进程id?

...没有奇数编号的Windows进程ID: There are many ways to look at the process IDs in Windows. Using PowerShell: I get this result: As you can see, all the process IDs are even-numbered, not only that, they are all multiples of four. You can look as hard as you want and you will never find an ...

  • 发布于 2021-04-10 09:14
  • 阅读 ( 218 )

在旧版本的windows中,多任务是如何实现的?

考虑到DOS是一个单任务操作系统,以及它与早期版本Windows的联系,那么早期版本Windows是如何实现多任务的呢?今天的超级用户问答帖子将探讨这个问题的答案。 今天的问答环节是由SuperUser提供的,SuperUser是Stack Exchange的一个分...

  • 发布于 2021-04-11 10:09
  • 阅读 ( 184 )

线(thread)和过程(process)的区别

...定进程。指令可以同时执行。但是,这将取决于所使用的操作系统。 基本上,过程是非常重要的程序。它们消耗大量的内存。因此,它们在很大程度上依赖于可供执行的资源。综上所述,一个过程被称为“重量级过程”。 每个...

  • 发布于 2021-06-23 04:04
  • 阅读 ( 297 )

僵局(deadlock)和操作系统操作系统中的饥饿(starvation in operating system os)的区别

操作系统是计算机上运行的最基本的软件。它负责管理计算机的内存和进程,以及屏蔽使用它的应用程序的硬件细节。计算机的操作系统还确保资源公平地分配给用户和程序,而不是在进程之间平均分配。公平调度系统允许一个...

  • 发布于 2021-06-25 16:03
  • 阅读 ( 403 )

过程(process)和线(thread)的区别

...线程之间的差异-关键差异的比较 关键术语 进程、线程、操作系统 什么是过程(a process)? 进程是一个正在执行的程序。当程序员编写并执行一个程序时,这个程序就变成了一个进程。它根据程序的指令执行任务。 当一个进程加...

  • 发布于 2021-06-30 18:54
  • 阅读 ( 280 )
qibz7651
qibz7651

0 篇文章

相关推荐