進程描述與控制隨筆

進程控制塊:標識符,狀態,優先級,程序計數器,內存指針,上下文數據,I/O狀態信息,記帳信息多線程

進程控制塊是操做系統可以支持多進程和提供多處理的關鍵工具。能夠說,進程是由程序代碼和相關數據還有進程控制塊組成。工具

模式切換與進程切換不一樣,發生模式切換能夠不改變正處於運行態的進程狀態,在這種狀況下,保存上下文環境和之後恢復上下文環境只須要不多的開銷。性能

爲執行進程管理功能,操做系統維護者對每一個進程的描述,或者稱爲進程映像,它包括執行進程的地址空間和一個進程控制塊。操作系統

一個正在運行的進程可能被一個在進程外發生且被處理器識別的中斷事件打斷,或者被執行操做系統的系統調用打斷。不論哪一種狀況,處理器都執行一次模式切換,把控制轉交給操做系統例程。線程

 

用戶級線程相對於內核級線程有兩個明顯的缺點:指針

1>在典型的操做系統中,許多系統調用都會引發阻塞。所以,當用戶級線程執行一個系統調用時,不只這個線程會被阻塞,進程中的全部線程都會被阻塞。進程

2>在純粹的用戶級線程策略中,一個多線程應用不能利用多處理技術。事件

能夠經過把應用程序寫成一個多進程程序而不是多線程程序來解決這兩個問題。另外一種克服線程阻塞問題的方法是使用一種稱做jacketing的技術。jacketing的目標是把一個產生阻塞的系統調用轉化爲一個非阻塞的系統調用。內存

 

用戶級線程和內核級線程之間,內核級線程和進程之間都有一個數量級以上的性能差距。多進程

若是應用程序中的大多數線程切換都須要內核態的訪問,那麼基於用戶級線程的方案不會比基於內核級線程的方案好多少。

相關文章
相關標籤/搜索