知識點:
1、一句話說明線程和程序
2、作業系統為什麼需要程序
3、為什麼要引入線程
4、一圖說明線程和程序的關系
一、一句話說明線程和程序
程序:是指⼀個記憶體中運⾏的應⽤程式,比如QQ、微信、浏覽器等;⼀個應⽤程式可以同時運⾏多個程序,比如同時打開兩個QQ、浏覽器。
線程:1個程序(應用程式)可能需要同時執行幾個任務,比如QQ可以同時視訊、傳輸檔案、文字聊天,可以使用一個線程負責處理視訊,一個線程負責傳輸檔案,一個線程負責文字聊天,讓這些任務并發執行。
程序我們可以從任務管理器中檢視到,也可以使用快捷鍵ctrl+alt+del鍵快速調出任務管理器。在程序上點選"結束任務"即可看到該應用程式被關閉掉了。
示範一:程序檢視
示範二:一個應用程式同時運作多個程序(同時打開兩個QQ)
二、作業系統為什麼需要程序
我們平時使用電腦上網、打遊戲、聽歌、購物,實際上都是運作一個個的程式。
程式,實際上就是一些指令集合,作業系統讓這些指令運作起來,讓你能夠享受這些程式提供的服務。
執行指令的核心部件就是CPU,一個電腦/手機的CPU數量是有限的,生活中通常說是幾核的,核越多,并行處理的程式越多,能大大的提高電腦運作的效率。
如何讓有限的CPU同時執行各種程式呢?
作業系統通過時分共享來實作,時分共享是作業系統共享系統資源最基本的技術之一。
假如作業系統上運作着3個程式,那麼CPU每次運作一個程式,然後在下一個時間點,運作第二個程式,然後很快切到第三個程式。
由于CPU切換得非常快,對于使用者來說,就像3個程式同時運作起來一樣。
但是程式切換有一些問題需要解決:
1、程式是否正在運作
2、上一次CPU運作到哪一個指令,切換後需要從上一次中斷處重新運作
3、每個程式都會占用一定的系統資源,例如記憶體,如何保證每個程序的資源安全與獨立性,比如:我正在發送一個檔案,同時我打開檔案進行了内容修改,怎麼辦?
為了讓作業系統輕松明白程式的上述資訊,我們使用程序對程式進行抽象,打開一個應用就在系統中開了一個程序,每個程序都有1個獨立的記憶體空間。
三、為什麼要引入線程
引入線程之後,不僅是程序之間可以并發,程序内的各線程之間也可以并發,進而進一步提升了系統的并發度,使得一個程序内也可以并發處理各種任務(如QQ這個程序可以同時視訊、文字聊天、傳檔案)。
四、一圖說明線程和程序的關系
簡而言之:1個程式運作後至少有1個程序,1個程序中可以包含多個線程。
另外,還要注意兩個概念并發和并行。
并發:程序和線程都是為了提高CPU的并發能力,
并行:而多個CPU系統中,則這些可以并發執行的程式便可以配置設定到多個處理器上( CPU ),實作多任務并行處理。