进程和线程的基本概念
進-線目錄
- 前言
- 1.為什么會產生進程?
- 2.進程是什么?
- 3.為什么會產生線程?
- 4.多進程可以實現并發,為什么還要使用線程?
- 5.進程和線程的區別
- 6.理解上下文切換
前言
程序:指令和數據的集合
通常是我們使用Java/python編寫能夠完成某個功能的代碼的集合,是一段靜態代碼
1.為什么會產生進程?
1.1.最初的計算機每次只能執行一個指令,這樣的效率非常低下
1.2.后來出現了批處理系統,程序員可以將一串指令一次性交給計算機,這樣雖然相比最初的計算機提高了效率,但是內存中始終只允許一個程序;
1.3.所以進程的概念就誕生了
2.進程是什么?
進程是應用程序在內存中分配的空間,各個進程互不干擾,每個進程保持著程序每一時刻的運行狀態
特點:此時cpu采用時間片輪轉的方式運行進程
3.為什么會產生線程?
3.1.雖然進程在宏觀上實現了并發,但是對于cpu來說,某一時刻,只有一個任務占用cpu資源;
3.2.如果某一個任務有多個子任務,那么只能等一個子任務執行完之后,才能執行下一個子任務,顯然效率也不高;
所以就提出了線程的概念
4.多進程可以實現并發,為什么還要使用線程?
4.1.進程間的通信比較復雜,而線程間的通信比較簡單;通常情況下,需要使用共享資源,在進程內部比較容易實現
4.2,進程開銷大,線程開銷小
5.進程和線程的區別
5.1.進程擁有獨立的運行環境,線程是進程中的一個執行任務
5.2.進程數據共享復雜,同步簡單;線程相反
(進程同步指多個進程相互協調,共同完成某個程序;例如:父進程fork()出一個子進程,然后父進程等待子進程執行完畢
5.3.進程中,如果某個進程出了問題,不影響其他進程;一個線程的崩潰可能影響整個程序的運行;
5.4.進程的開銷較大,線程開銷小
6.理解上下文切換
上下文切換:cpu從某一個進程/(線程)切換到另一個進程(線程)
上下文:某一時刻,寄存器和程序計數器的內容
切換過程
線程A-B
1.掛起線程A,將其在cpu的狀態保存到內存
2.在內存中檢索下一個B線程的上下文將其在寄存器中恢復,執行B線程
3.B執行完,程序計數器指向A
cpu通過為每個線程分配時間片來實現多線程機制,如何減少上下文切換次數,是提高多線程性能的重點
總結
以上是生活随笔為你收集整理的进程和线程的基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Docker操作容器2
- 下一篇: 面试官:序列化和反序列化为什么要实现Se