posts - 134,comments - 22,trackbacks - 0

          進程上下文和中斷上下文是操作系統中很重要的兩個概念,這兩個概念在操作系統課程中不斷被提及,是最經常接觸、看上去很懂但又說不清楚到底怎么回事。造成這種局面的原因,可能是原來接觸到的操作系統課程的教學總停留在一種淺層次的理論層面上,沒有深入去研究。

          處理器總處于以下狀態中的一種:
          1、內核態,運行于進程上下文,內核代表進程運行于內核空間;
          2、內核態,運行于中斷上下文,內核代表硬件運行于內核空間;
          3、用戶態,運行于用戶空間。

          用戶空間的應用程序,通過系統調用,進入內核空間。這個時候用戶空間的進程要傳遞很多變量、參數的值給內核,內核態運行的時候也要保存用戶進程的一些寄存器值、變量等。所謂的“進程上下文”,可以看作是用戶進程傳遞給內核的這些參數以及內核要保存的那一整套的變量和寄存器值和當時的環境等。

          硬件通過觸發信號,導致內核調用中斷處理程序,進入內核空間。這個過程中,硬件的一些變量和參數也要傳遞給內核,內核通過這些參數進行中斷處理。所謂的“中斷上下文”,其實也可以看作就是硬件傳遞過來的這些參數和內核需要保存的一些其他環境(主要是當前被打斷執行的進程環境)。


          關于進程上下文LINUX完全注釋中的一段話:

             當一個進程在執行時,CPU的所有寄存器中的值、進程的狀態以及堆棧中的內容被稱為該進程的上下文。當內核需要切換到另一個進程時,它需要保存當前進程的所有狀態,即保存當前進程的上下文,以便在再次執行該進程時,能夠必得到切換時的狀態執行下去。在LINUX中,當前進程上下文均保存在進程的任務數據結構中。在發生中斷時,內核就在被中斷進程的上下文中,在內核態下執行中斷服務例程。但同時會保留所有需要用到的資源,以便中繼服務結束時能恢復被中斷進程的執行。


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/eroswang/archive/2007/11/28/1905830.aspx

          posted on 2010-11-07 23:59 何克勤 閱讀(484) 評論(0)  編輯  收藏 所屬分類: GNU Linux/Unix
          主站蜘蛛池模板: 罗田县| 澄城县| 鄂托克前旗| 景宁| 丰镇市| 白朗县| 米易县| 宾川县| 崇文区| 鄂尔多斯市| 胶州市| 衡阳市| 禹州市| 慈利县| 高要市| 江津市| 吉水县| 柘荣县| 芜湖县| 新建县| 临沭县| 兴城市| 平顺县| 天全县| 定陶县| 安平县| 什邡市| 额济纳旗| 安西县| 安溪县| 达日县| 龙泉市| 峨山| 神农架林区| 建瓯市| 石首市| 嘉峪关市| 江都市| 雷州市| 儋州市| 嘉黎县|