程式設計相關的名詞解釋
*部分資料或許老舊,已經跟不上時代,還請各位先進與前輩不吝指教。
Program:放在二次儲存裝置中,尚沒有被載入到記憶體的由 Code 所形成的檔案,稱之為「程式」。
Thread :以往早期系統中一個Process一次只能做一件事情,因此要一面輸入文字,一面計算字數,這樣的事情是不可能的。
但是有了Thread之後,可以在同一個Process底下,讓輸入文字是一個Thread,計算文字又是另外一個Thread,稱之為多執行緒技術 ( Multithreading )。
透過現在高時脈CPU快速的在不同執行緒之間進行切換,因此像是多執行續同時進行的假象。
通常一個Process底下會有數個Thread,而Process中的全域變數 ( Global Variable ) 可以與底下的所有Thread共享,而每個Thread也能有自己的專屬變數 ( Variable )。
但是,Thread彼此之間可能會互搶資源,造成錯誤或是死結(Deadlock),這就是Synchronization問題,因此使用多執行緒編寫Program時須特別注意。
Process:已被載入到記憶體中,隨時可被 CPU 執行,且其宣告在記憶體裡的變數值隨需求不斷變動,稱之為「程序」。
如果 Process 之間在記憶體位置擺放不當,就會形成很多沒辦法用到的記憶體碎片,因此 Memory Management 是一個問題。
另外,每個 Process 所需要的記憶體總合,也可能大於實體記憶體,因此需要另外用二次儲存裝置充當虛擬記憶體 ( Virtual Memory )。
但是二次儲存裝置的存取速度較慢,因此如何做到對虛擬記憶體最小的依賴:
- 盡量避免Page Fault (電腦在主記憶體中找不到資料,而要去二次記憶體尋找)
- 防止Thrashing的發生 (因為Virtual Memory演算法不當,造成幾乎每次存取都要依賴二次記憶體)
,以達到效能最佳化,也是門學問。
參考資料:Abraham Silberschats 《Operating System Concept》俗稱 恐龍本。
進程(Process、行程)、線程(Thread、執行緒)、多線程(Multithreading、多執行緒)、Intel 超線程技術(Hyper-Threading、超執行緒技術) 簡介