Program and Thread~

  • 323
  • 0
  • 2017-07-11

程式設計相關的名詞解釋

*部分資料或許老舊,已經跟不上時代,還請各位先進與前輩不吝指教。

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、超執行緒技術) 簡介 

                  執行緒和行程有何不同

                  WIKI-多執行緒