操作系统进程、线程
批處理操作系統
早期的批處理操作系統是將一系列需要執行的操作指令寫下來,成為一個清單,一次交給計算機進行處理,計算機不斷地讀取指令進行操作.假如有兩個任務A和B,任務需要進行大量的I/O操作,這時cpu是處于空閑狀態的,但是任務B也只能等待任務A執行完以后才能繼續執行,導致有一段時間內,操作系統資源并沒有得到很好的利用
進程
在上述早期的批處理操作系統中,我們期望在任務A執行I/O操作的時候,CPU去執行任務B,這就是進程出現的初衷。一個進程對應一個程序,每一個程序都有自己的獨立的內存空間且互不干擾,進程保存了每個程序的運行狀態,為進程切換提供了可能。操作系統進行線程切換時,保存當前的線程狀態,下一次切換回來是,根據進程的狀態繼續執行。
線程
進程解決了操作系統的并發問題,但是一個進程在一個時間段內只能做一件事情,假如程序在訪問db獲取數據的時候(處理時間很長),用戶再次發起某一個響應時間極短的請求,那么只能等待上一個數據獲取完成以后才能去響應用戶的下一個請求,這就是線程出現的原因,我們期待進程可以分成多個子任務,每個子任務對應一個線程,各個線程之間可以切換,在用戶觸發下一次請求后,獲取數據的線程可以暫時讓出cpu資源,讓cpu先去響應用戶的下一次請求,滿足用戶實時性的要求,用戶感覺所有的操作都是實時的。
參考文章:Java 多線程基礎:進程和線程之由來
總結
- 上一篇: 关于带月字的微信网名130个
- 下一篇: 钢铁是怎样炼成的1到3章读后感