Windows為什麼要支援線程

來源:互聯網
上載者:User

  Windows為什麼要支援線程,進程與線程的聯絡與區別是什嗎?

  在電腦的早期歲月,作業系統沒有提供線程概念。事實上整個系統只運行著一個執行線程,其中同時包含作業系統代碼和應用程式。只用一個執行線程的問題在於,長時間啟動並執行任務會阻止其他任務執行。例如,在16位Windows的那些日子,列印一個文檔的應用程式很容易“凍結”整個機器,造成OS和其他應用程式停止回應。有的應用程式含有bug,會造成無限迴圈,這同樣會造成整個機器停止工作。

  遇到這個問題,使用者只好按Reset鍵或電源開關重啟電腦。使用者們對此感到深惡痛絕(事實上,現在一樣會),因為所有正在啟動並執行應用程式都會終止。更重要的是,這些應用程式正在處理的資料都會無端地丟失。Microsoft明白16位Windows不是一個理想的作業系統。隨著電腦工業的持續進步,它不足以保持Microsoft的領先地位。所以,他們計劃構建一個新的OS來滿足企業和個人的需要。這個新的OS必須健壯、可靠、易於伸縮一級安全,而且它必須改進16位Windows的許多不足。這個OS核心最初是在Microsoft Windows NT中發布的。經過多年的發展,這個核心已進行惡龍大量改進,添加了大量功能。Microsoft每次發布用戶端和伺服器Windows 作業系統的最新版本時,都在其中採用了這個核心的最新版本。

  Microsoft設計這個OS核心時,他們決定在一個進程(process)中運行應用程式的每個執行個體。進程不過是應用程式的一個執行個體要使用的資源的合集。每個進程都被賦予一個虛擬位址空間,確保一個進程使用的代碼和資料無法由另一個進程訪問。這就確保了應用程式執行個體的健壯性,因為一個成成無法破壞另一個進程所使用的代碼或資料。除此之外,OS的核心代碼和資料時進程訪問不到的;所以,應用程式代碼破壞不了作業系統代碼或資料。由於應用程式代碼破壞不了其他應用程式或者OS自身,所以使用者的計算體驗變得更好了。除此之外,系統變得比以往更安全,因為應用程式代碼無法訪問另一個應用程式或者OS自身使用的使用者名稱、密碼、信用卡資料或者其他敏感資訊。

  聽起來似乎不錯,但CPU本身呢?如果一個應用程式進入無限迴圈,會發生什嗎?如果機器中只有一個CPU,它會執行無限迴圈,不能執行其他然和東西。所以,雖然資料無法被破壞,而且更安全,但系統仍然可能停止回應。Microsoft需要修正這個問題,他們拿出的方案就是線程。作為一個Windows概念,線程(thread)的職責是對CPU進行虛擬化。Windows為每個進程都提供了該進程專用的線程(功能相當於一個CPU,可將線程理解成一個邏輯CPU)。如果應用程式的代碼進入無限迴圈,與那個代碼關聯的進程會“凍結”,但其他進程(他們有自己的線程)不會凍結:他們會繼續執行。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.