進程和線程的主要區別

記筆記 面試會問面試

  • 每一個進程都有獨立的代碼和數據空間(進程上下文),進程間的切換會有較大的開銷。
  • 線程能夠當作是輕量級的進程,屬於同一進程的線程共享代碼和數據空間,每一個線程有獨立的運行棧和程序計數器(PC),線程切換的開銷小。
  • 線程和進程最根本的區別在於:進程是資源分配的單位,線程是調度和執行的單位。
  • 多進程: 在操做系統中能同時運行多個任務(程序)。
  • 多線程: 在同一應用程序中有多個順序流同時執行。
  • 線程是進程的一部分,因此線程有的時候被稱爲輕量級進程。
  • 一個沒有線程的進程是能夠被看做單線程的,若是一個進程內擁有多個線程,進程的執行過程不是一條線(線程)的,而是多條線(線程)共同完成的。
  • 系統在運行的時候會爲每一個進程分配不一樣的內存區域,可是不會爲線程分配內存(線程所使用的資源是它所屬的進程的資源),線程組只能共享資源。那就是說,除了CPU以外(線程在運行的時候要佔用CPU資源),計算機內部的軟硬件資源的分配與線程無關,線程只能共享它所屬進程的資源。
相關文章
相關標籤/搜索