中文
[面试问题] 进程与线程、多线程之间的区别

[面试问题] 进程与线程、多线程之间的区别

关于流程和线程之间区别的面试问题

~~ 我还在写这篇文章!~~ >~23. 23. 05. 30. 写作完成 → 23. 06. 09. 添加内容

计划

为计算机执行特定任务而编写的一组可执行指令。

它有许多不同的定义,但我在阅读时是这样理解的!我之所以先检查程序的定义,是因为进程的定义是一个范围较窄的程序。

流程

  • '运行中'的程序的'实例' (几乎可与任务互换使用)

在内存中运行的基于操作系统的工作单元

耗费大量时间和资源来创建(高开销)

我认为有特点的部分是,可以同时拥有一个程序的多个实例,而不是程序本身。

线程

  • 在进程中执行工作的基于 CPU 的执行单元。

所有处理器都至少有一个线程

线程有自己的寄存器和堆栈

堆内存空间是共享的

那么两者之间有什么区别呢?

进程可被视为一个更大的分类单元

不过,我想如果我就这么简单地回答,那就太全面了,所以我参考了一些条理清晰的文章,补充说明了一些问题!

工作原理

1. 对于流程

  • 进程运行时,操作系统会为其分配一个单独的内存区域。

  • 内存区域的格式如下:代码/数据/堆栈/Heap

  • 不能访问其他进程的内存区域

2. 对于线程

  • 进程的堆栈区域被分割并拥有自己的区域

  • 代码区、数据区和堆区的其余部分是共享的

一个进程的错误不会扩散到其他进程的区域

  • 但如果一个线程失败,所有线程都会终止。 → 因为它们共享内存区域

摘要

进程(Process)和线程(Thread)有什么区别?

  • 进程是动态使用的程序,线程是任务的执行单位,但概念不同。

  • 一个进程至少包含一个线程

  • 进程通常不共享内存空间,但线程可以

  • 进程在每次出错时都会单独宕机,而线程则会在同一进程内全部宕机

***]

+ 关于多线程

在一个进程中同时运行多个线程。

上下文切换(上下文切换)

默认情况下,可同时处理的最大任务数为内核数。 如果运行的线程数多于内核数,则每个内核会交替执行多个任务。 线程切换时,会保存并读取任务的当前状态或下一个任务所需的数据。

多线程和进程的优缺点

1) 多线程的优点
  • 创建进程和分配资源的系统调用处于休眠状态,可有效管理资源。

  • 线程之间发送和接收数据的处理成本较低,因为除堆栈外,它们在一个进程内共享内存空间。

  • 由于线程之间的通信方法不那么复杂,程序响应时间缩短。

2) 多线程的缺点
  • 增加调试难度和设计难度

  • 其他进程线程的不可控性

  • 内存共享(同时访问相同资源)导致的同步问题

  • 一个线程的问题会影响整个进程

3) 多进程的优势
  • 如果一个进程出现问题,其影响不会扩散到该进程之外
4) 多进程的缺点
  • 上下文交换开销大

  • 进程间通信比线程间通信更加困难和复杂

注意

维基百科关于进程和线程的词条 进程与线程的区别 进程与线程的区别 by heejeong Kwon

댓글 작성

게시글에 대한 의견을 남겨 주세요.

댓글 0