美文网首页
为什么要引入线程?——比进程更灵活高效的调度单位

为什么要引入线程?——比进程更灵活高效的调度单位

作者: wangawu121 | 来源:发表于2020-05-31 01:59 被阅读0次

线程:比进程更灵活高效的调度单位

线程是OS运行调度的最小单位,比进程要小。线程的引入可以说是为了克服进程的缺点。

进程的缺点是什么呢?我们首先来回顾一下OS使用进程时都需要为进程做些什么,以及这样的开销上的负担:

  1. 创建它时,我们要给它分配除了处理及外所有需要的资源(内存,I/O设备等),然后给它建立PCB(进程控制块,Process Control Block)
  2. 撤销它时,要收回这些分给它的资源,然后撤销PCB
  3. 进程切换时,要保留当前进程的CPU环境,然后设置新的进程的CPU环境

以上都需要花上好一些时间和资源,所以我们最好不要在系统中设置太多的进程,也不要在进程间频繁切来切去,以免给系统造成沉重负担。

我们可以看到进程面临这些限制,所以并发程度也就受到了限制。

但是我们想要获得更好的并发性和效率,怎么办?考虑一下进程的两个特点:

(1)它是调度和分派的基本单位;

(2)它拥有资源块。

既然要更加灵活高效地并发,我们可以尝试把这两个特性分开一下:我们依然让进程拥有资源块,然后让它拥有许多“小进程”去完成调度任务,在需要的适合进程再把资源分配给它们——这些只有作为调度单位的功能,而自己本身没有什么资源的“小进程”,就是线程了。

我们现在看看线程如何解决了上述缺陷:

  1. 进程创建一个线程,只需要把比起进程总资源少得多的资源分配给线程,然后给它配一个TCB(Thread Control Block,线程控制块)
  2. 撤销一个线程时,也只要收回这些较少的资源,这样我们就不会花太多时间,也可以减少空间的无效占领。
  3. 切换线程时仅需保存和设置少量寄存器内容,不涉及存储器管理方面的操作,又给我们省了很多时间空间。

在同一个进程里的线程拥有同一套地址空间,共享着进程拥有的资源,它们之间的同步和通信因此比较容易,它们之间的切换也变得很省开销。但是要注意不同进程里的两个线程切换时仍然需要是切换进程的。

现在,进程就把作为调度单位功能给了体量更小的线程,线程也就成了最小调度单位。那么进程自己还可以执行什么来自处理及的调度任务吗?答案是所有调度任务现在都给它手下的进程们干了,它自己只负责给线程们发发资源。

线程当然是可以并发执行的了——既然我们是为了获得更好的并发性。它可以并发,可以被调度,这和它的大哥进程很像,所以有时候我们也把线程叫做“轻进程”。

我们同时也因为线程获得了更好的灵活性——如果不引入线程,一个进程在出于某种原因被阻塞时,它依然会占有被OS分配的资源然而却不工作,也不能完成其他的功能而浪费了时间;如果引入线程,而让线程并行地分别去完成进程的若干个工作,即使某个线程被阻塞了,其他线程也可以继续干自己的,既不浪费占有的资源也不浪费时间。

Good job,现在我们的系统更加灵活高效了!

相关文章

  • 为什么要引入线程?——比进程更灵活高效的调度单位

    线程:比进程更灵活高效的调度单位 线程是OS运行调度的最小单位,比进程要小。线程的引入可以说是为了克服进程的缺点。...

  • JVM--Java与线程

    线程的实现: 线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可...

  • Java 与线程 深入理解Java虚拟机 总结

    线程的实现 我们知道,线程是比进程更轻量级的调度执行单位,线程的引入可以把一个进程的资源分配和执行调度分开,各个线...

  • Java 线程在虚拟机中的实现

    前言 线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进...

  • 操作系统基础知识

    进程和线程的区别img进程是系统进行资源分配和调度的一个独立单位, 线程是CPU调度和分派的基本单位,它是比进程更...

  • java 线程学习(一)

    java线程 线程是cpu执行的基本调度单位,它比进程更加轻量级,线程的引入,可以把一个进程的资源分配和执行调度分...

  • 线程概念

    线程简介 什么是线程? 线程是比进程更轻量级的调度执行单元,线程的引入,可以把一个进程的资源分配和执行调度分开,各...

  • 理解协程

    一、进程、线程、协程的区别 进程:操作系统中分配资源的基本单位 线程:操作系统中调度资源的基本单位 协程:比线程更...

  • 进程与线程

    进程与线程的比较 调度。在传统的操作系统中,拥有资源和独立调度的基本单位都是进程。在引入线程的操作系统中,线程是独...

  • Java线程原理

    线程是比进程轻量级的调度执行单位,线程可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址...

网友评论

      本文标题:为什么要引入线程?——比进程更灵活高效的调度单位

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