性能測試必備知識(1)- 進程和線程的區別


做性能測試的必備知識系列,可以看下面鏈接的文章哦

https://www.cnblogs.com/poloyy/category/1806772.html

 

進程

  • 一個正在運行的應用程序
  • 比如,在 Window下,一個運行中的 exe 就是一個進程(如下圖)

 

深挖進程

  • 一個進程可以有很多個線程,但至少有一個線程
  • 內存是邏輯內存
  • 文件/網絡句柄就是資源文件

 

進程有多個線程的場景類比

  • 打開一個 qq,就是一個進程
  • 很多個聊天框,就是很多個線程在同時運行中

 

什么是多進程

  • 同時運行多個應用程序
  • 當你打開電腦,就已經是多進程模式了,同時跑着多個不同的程序

 

線程

進程中的一個任務調度和執行的基本單位

 

深挖線程

  • PC:program contact,存放的是當前下一條執行指令的地址
  • TLS:安全傳輸層協議
  • PC 指向內存:相當於操作系統運行的是一個個線程,進程只是容器,指令本身放在內存;同一進程中的線程共享相同的地址空間,因此可以讀寫同樣的數據結構和變量,便於通信

 

什么是多線程

  • 在同一個進程中同時運行多個任務
  • 比如:在 qq 和多個人、群同時聊天

 

進程和線程的區別

 從幾個層面去分析

內存

  • 進程:不共享內存
  • 線程:共享進程的內存空間

 

作用

  • 進程:是 CPU 資源分配的最小單位,它主要用來就是資源的分配
  • 線程:是 CPU 調度執行的最小單位,它主要用來系統調度

 

資源

進程共享系統的文件、網絡資源,而線程會共享進程的資源文件

 

獨立

  • 進程:獨立存在,有自己的內存地址
  • 線程:不可以獨立,必須依賴進程而存在

 

開銷

  • 進程:需要分配內存,開銷較大
  • 線程:只需要分配棧和一個 PC,開銷比較小

 

通信

  • 進程:進程間通信比較復雜,因為它的數據空間獨立性,需要通過操作系統,基於 socket 的進程間的通信機制
  • 線程:線程間的通信由於多線程共享內存地址空間和數據空間,可直接通信,不必通過操作系統(內核的調度),比較簡單

 

影響關系

  • 進程:進程崩潰之后,在系統保護模式下,不會對其他進程產生影響
  • 線程:一個線程崩潰之后,整個進程都會死掉
  • 總結:多進程比多線程要健壯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM