進(jìn)程上下文和中斷上下文是操作系統(tǒng)中很重要的兩個(gè)概念,這兩個(gè)概念在操作系統(tǒng)課程中不斷被提及,是最經(jīng)常接觸、看上去很懂但又說(shuō)不清楚到底怎么回事。造成這種局面的原因,可能是原來(lái)接觸到的操作系統(tǒng)課程的教學(xué)總停留在一種淺層次的理論層面上,沒(méi)有深入去研究。
處理器總處于以下狀態(tài)中的一種:
1、內(nèi)核態(tài),運(yùn)行于進(jìn)程上下文,內(nèi)核代表進(jìn)程運(yùn)行于內(nèi)核空間;
2、內(nèi)核態(tài),運(yùn)行于中斷上下文,內(nèi)核代表硬件運(yùn)行于內(nèi)核空間;
3、用戶態(tài),運(yùn)行于用戶空間。
用戶空間的應(yīng)用程序,通過(guò)系統(tǒng)調(diào)用,進(jìn)入內(nèi)核空間。這個(gè)時(shí)候用戶空間的進(jìn)程要傳遞很多變量、參數(shù)的值給內(nèi)核,內(nèi)核態(tài)運(yùn)行的時(shí)候也要保存用戶進(jìn)程的一些寄存器值、變量等。所謂的“進(jìn)程上下文”,可以看作是用戶進(jìn)程傳遞給內(nèi)核的這些參數(shù)以及內(nèi)核要保存的那一整套的變量和寄存器值和當(dāng)時(shí)的環(huán)境等。
硬件通過(guò)觸發(fā)信號(hào),導(dǎo)致內(nèi)核調(diào)用中斷處理程序,進(jìn)入內(nèi)核空間。這個(gè)過(guò)程中,硬件的一些變量和參數(shù)也要傳遞給內(nèi)核,內(nèi)核通過(guò)這些參數(shù)進(jìn)行中斷處理。所謂的“中斷上下文”,其實(shí)也可以看作就是硬件傳遞過(guò)來(lái)的這些參數(shù)和內(nèi)核需要保存的一些其他環(huán)境(主要是當(dāng)前被打斷執(zhí)行的進(jìn)程環(huán)境)。
關(guān)于進(jìn)程上下文LINUX完全注釋中的一段話:
當(dāng)一個(gè)進(jìn)程在執(zhí)行時(shí),CPU的所有寄存器中的值、進(jìn)程的狀態(tài)以及堆棧中的內(nèi)容被稱為該進(jìn)程的上下文。當(dāng)內(nèi)核需要切換到另一個(gè)進(jìn)程時(shí),它需要保存當(dāng)前進(jìn)程的所有狀態(tài),即保存當(dāng)前進(jìn)程的上下文,以便在再次執(zhí)行該進(jìn)程時(shí),能夠必得到切換時(shí)的狀態(tài)執(zhí)行下去。在LINUX中,當(dāng)前進(jìn)程上下文均保存在進(jìn)程的任務(wù)數(shù)據(jù)結(jié)構(gòu)中。在發(fā)生中斷時(shí),內(nèi)核就在被中斷進(jìn)程的上下文中,在內(nèi)核態(tài)下執(zhí)行中斷服務(wù)例程。但同時(shí)會(huì)保留所有需要用到的資源,以便中繼服務(wù)結(jié)束時(shí)能恢復(fù)被中斷進(jìn)程的執(zhí)行。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/eroswang/archive/2007/11/28/1905830.aspx
posted on 2010-11-07 23:59
何克勤 閱讀(481)
評(píng)論(0) 編輯 收藏 所屬分類:
GNU Linux/Unix