UNIX內(nèi)核分析2課件_第1頁
UNIX內(nèi)核分析2課件_第2頁
UNIX內(nèi)核分析2課件_第3頁
UNIX內(nèi)核分析2課件_第4頁
UNIX內(nèi)核分析2課件_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

UNIX內(nèi)核分析(2)參考教材:UNIX操作系統(tǒng)教程

軟中斷(1)軟中斷是Unix系統(tǒng)提供的進程間通訊的一個機構(gòu),進程間可以利用其發(fā)送少量信息,并作適當處理;同組之間可以通過37#系統(tǒng)調(diào)用kill相互發(fā)送軟中斷信號S5提供了19種軟中斷信號,13個具有標準名字的約定,終端類型號0解釋為“沒有中斷”相關(guān)結(jié)構(gòu):p-sig:進程接收的信號類型數(shù)u-signal[NSIG]:軟中斷處理程序入口表,20個元素軟中斷(2)發(fā)送軟中斷信號,按信號類型設置p-sig的某一位;如果接受進程睡眠在可被中斷的優(yōu)先級上,則喚醒當一個進程從核心態(tài)返回用戶態(tài),或者進入/離開低優(yōu)先級睡眠時,核心態(tài)檢查其是否收到軟中斷信號;而僅當進程從核心態(tài)返回用戶態(tài)時,核心才處理軟中斷進程在核心態(tài)運行時,軟中斷不會立即起作用軟中斷處理入口表u-signal[NSIG]根據(jù)表項中元素不同值,有三種信號處理方式值為0:處理方式為終止本進程;值為奇數(shù):對該信號不作處理;值為非零偶數(shù):表示信號處理程序入口地址。u-signal[NSIG]表中各元素的值可通過48#系統(tǒng)調(diào)用signal(sig,func)預制,其處理程序是ssig()NSIG=20:0-19sig:信號類型號,保存在u-arg[0]func:對該信號的處理方式,保存在u-arg[1]對于信號SIGKIL/終止進程,func不能設置信號處理方式預制程序ssig(){registera;a=u.u-arg[0];/*取參數(shù)sigif(a<=0||a>=NISG||a==SIGKIL){u.u-error=EINVAL;/*非法參數(shù)return}u.u-ar0[R0]=u.u-signal[a]/*保存原先處理方式u.u-signal[a]=u.u-arg[1];if(u.u-procp→p-sig==a)/*如果以前已經(jīng)收到該信號u.u-procp→p-sig=0;/*處理方式已改變,清除原收到信號}signal(sig,func)用戶通過該系統(tǒng)調(diào)用實現(xiàn)預制例如:signal(2,1);將u-signal[2]設置為1/奇數(shù)實現(xiàn)不理會2號類型軟中斷的設置

PDP-11內(nèi)存管理機構(gòu)UnixS5思想:分頁,支持內(nèi)存、外存之間的進程對換支持請求調(diào)頁的存儲管理PDP-11虛地址字字長16位,每個進程的最大程序地址空間216=64KBCPU總線尋址能力18位/256KB。其中:最高8KB固定為I/O頁,所以內(nèi)存最大容量為248KB程序16位地址稱為虛地址,64KB分成8頁,8KB/頁每頁劃分為128個字符塊,64B/塊由于程序可以小于64KB,有些頁可能局部/完全空白空白部分留作擴展使用系統(tǒng)按照實際使用頁長分配內(nèi)存虛地址字劃分結(jié)構(gòu)1514131211109876543210APFActivepagefield0-7頁BNBlocknumber0-127塊DIBDisplacementinblock0-63B內(nèi)存管理寄存器(2)頁說明寄存器PDR/上圖存取控制字段ACF(accesscontrolfield):說明對該頁的存取控制權(quán)限00:不駐在內(nèi)存01:readonly10:未用11:R/W擴展方向位:ED(extend)

如果某頁實際使用小于128塊(8KB),則ED說明空白部分在高/低地址一側(cè),即擴展時的擴展方向。ED=0:高地址一側(cè);ED=1:低地址一側(cè)

例如:Unix系統(tǒng)中,共享代碼段/數(shù)據(jù)段:ED=0;棧段:ED=1PLF/pagelengthfieldWEDACF0123681415內(nèi)存管理寄存器(3)存取信息位W-修改位W=1,表示修改過頁長字段PLF:說明虛頁的實際使用長度,1~128塊如果ED=0/向高地址方向擴展:則PLF=實際使用長度-1;例如:實際使用長度為128,則PLF=127如果ED=1:則PLF=128-實際使用長度;例如:實際使用長度為128,則PLF=0用補碼表示實際使用長度PLF值表示在相應擴展方向上該虛頁實際使用的最末塊塊號,便于越界檢查虛地址到物理地址轉(zhuǎn)換總線尋址能力為18位,形成256KB的物理地址1514131211109876543210APFBNDIBPAF物理塊號DIB05617011+找對應頁的PAR虛/實地址映照Unix分別用KISA(0-7)和KISD(0-7)存放核心態(tài)下進程內(nèi)存使用情況KISA類似PAR/頁地址寄存器KISD類似PDR/頁說明寄存器用戶態(tài)下現(xiàn)行進程內(nèi)存使用情況分別用UISA/UISD存放KISA/KISD(0-5)和KISA/KISD(7)在系統(tǒng)初啟后就固定,不再變化;KISA/KISD(6)總是指向當前運行進程的ppda區(qū)從KISA6指向的ppda區(qū)user結(jié)構(gòu)中可以得到u-procp,它指向當前運行進程的proc[]用戶態(tài)虛/實地址映照以前面幻燈片圖2數(shù)字為例tata+128ta+256dada+128da+256未用da+224128RO128RO64RO128RW128RW32RW0064RW/EDUISAUISDta

是進程共享正文段在內(nèi)存的起始地址da

是進程數(shù)據(jù)段在內(nèi)存的起始地址:da=p-addr+16內(nèi)存空間tappda/16塊棧段0.5頁daP-addrda+352虛/實地址映照UISA/UISD只有一組,保存當前運行進程頁表表目;其他進程頁表表目保存在user[](u-uisa/u-uisd[16])u-uisd內(nèi)容與UISD完全相同;而u-uisa內(nèi)容則略有區(qū)別,它是假設ta、p-addr皆為0而構(gòu)造的。見右u-uisa/u-uisd由estabur()創(chuàng)建u-uisa/u-uisd->UISA/UISD由sureg()完成01282561616+12816+256未用16+224u-uisa存儲資源管理存儲分配:firstfit/malloc(mp,size)mp:coremap/s存儲釋放:mfree(mp,size,釋放區(qū)起址)存儲保護虛/實映射機構(gòu)基本上使各進程相互隔離,達到保護各進程占用獨立的存儲區(qū),且不會重疊進程在核心

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論