进程vs线程

作者: 雨幻逐光 | 来源:发表于2020-04-28 11:08 被阅读0次

进程vs线程:有什么不同?

什么是进程?

进程是程序的执行过程。在这个过程中,我们可以操作一些定义在程序中的功能。可以把进程定义为一个执行单元(execution unit)。程序就在这个执行单元中跑。操作系统(OS)可以帮助你创建(create),调度(schedule)和结束(terminate)供CPU使用的进程。其他有主线程创建出来的进程称为子进程。

通过PCB(Process Control Block)的帮助,你可以很容易的控制一个进程的操作。你可以把它理解为进程的大脑。这个大脑里面包含了关于进程的所有重要信息。例如进程的id,优先级,状态和CPU的寄存器内容。

什么是线程?

线程也是个执行单元。这个执行单元是进程的一部分。一个进程可以拥有多个同时执行的线程。线程是个同时编程的执行单元。线程是轻量级的而且可以被一个调度器独立操作的。它可以帮助你通过并行来提高应用程序的性能。

多线程共享包括数据,代码,文件等信息。你可以从以下三种不同的方式来实现线程:

  1. 内核级别线程(Kernel-level threads)
  2. 用户级别线程(User-level threads)
  3. 混合线程(Hybrid threads)

进程的性质

进程有一些重要的性质:

  • 每个进程的创建需要独立的系统调用
  • 进程是独立的执行实体,互相之间没有共享数据和信息
  • 进程用IPC(Inter-Process Communication)机制来通讯。这使得系统调用次数大幅增加
  • 进程的管理需要更多的系统调用
  • 进程拥有自己的栈(stack),堆(heap)内存和数据映射

线程的性质

线程有一些重要的性质:

  • 单个系统调用可以创建多个线程
  • 线程之间共享数据和信息
  • 线程之间共享指令,全局和堆内存。但是他们拥有自己的寄存器和栈内存
  • 线程的管理开销很小。因为线程之间的交互不需要通过系统调用来完成。它们可以通过共享的内存进行交互

进程和线程的不同

进程vs线程

下面列举一些进程和线程之间重要的不同点(都是相比较而言):

参数 进程 线程
定义 进程是一个正在执行的程序 线程是进程的一部分
轻量级 进程不是轻量级的 线程是轻量级的
终止用时 终止进程所需时间更长 终止线程所需时间较少
创建用时 创建进程所需时间更长 创建线程所需时间较少
通讯 进程间的通讯需要更多时间 线程间的通讯需要更少的时间
上下文切换时间 进程切换上下文需要更多的时间 线程切换上下文需要较少的时间
资源 进程更耗资源 线程耗资源较少
对于操作系统 对于操作系统来说,不同进程是相互独立的 对于操作系统来说,所有同一级别的线程(peer threads)都被看做是同一个任务
内存 进程间基本上是相互独立的 线程间共享内存
共享 进程间不共享数据 线程间相互共享数据

什么是多线程?

多线程是指有多个线程在操作系统中执行。简单来说就是,有两个及以上同一个进程下的线程同时执行。

关键不同点

  • 进程是指正在执行的程序,然而线程是进程的一部分
  • 进程不是轻量级的,而线程是轻量级的
  • 销毁进程(终止进程)耗时久,销毁线程(终止线程)耗时少
  • 创建进程耗时久,创建线程耗时少
  • 进程上下文切换的花销大,线程上下文切换的花销小
  • 进程间相互独立,线程间共享内存
  • 进程不共享数据,线程共享数据

Reference

Process vs Thread: What's the difference?

相关文章

  • 操作系统OS知识点

    OS* 内核态 vs 用户态* 进程 vs 线程* 进程调度算法* 进程间通信的几种方式* O...

  • 操作系统

    进程VS线程 Process/Thread 进程: 1. 进程是相对独立的 2. 包含多个线程 3. ...

  • 为什么校招面试中“线程与进程的区别”老是被问到?我该如何回答?

    进程与线程?(Process vs. Thread?) 面试官(正襟危坐中):给我说说“线程”与“进程”吧。 我(...

  • 操作系统

    进程vs线程 进程和进程之间独立,线程是进程里的内容,内存在进程里(逻辑内存,32位操作系统,2^32=4G,每个...

  • 进程vs线程

    from知乎: 进程就是包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文。 线...

  • 线程 VS 进程

    线程与进程的异同

  • 进程VS线程

    功能 • 进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ• 线程,能够完成多任务,比如 一个...

  • 进程vs线程

    进程vs线程:有什么不同? 什么是进程? 进程是程序的执行过程。在这个过程中,我们可以操作一些定义在程序中的功能。...

  • 【The Java™ Tutorials】【Concurrenc

    进程 vs. 线程 ProcessA process has a self-contained execution...

  • 操作系统面试复习点

    堆和栈的区别 浮点数在内存中存放方式 内存对齐 进程vs线程 内核态 vs 用户态 进程调度算法 进程间通信的几种...

网友评论

    本文标题:进程vs线程

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