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