Unix操作系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)分析
我們?cè)谖恼轮惺紫茸尨蠹伊私庀耈nix操作系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)分析的知識(shí),以后在進(jìn)一步的講解Unix操作系統(tǒng)的知識(shí)。希望對(duì)大家對(duì)Unix操作系統(tǒng)的學(xué)習(xí)有所幫助。
1緩沖部首:
Unix操作系統(tǒng)為每個(gè)緩沖提供了一個(gè)緩沖控制塊,稱(chēng)緩沖部首。其中保留對(duì)應(yīng)緩沖的地址,對(duì)應(yīng)的設(shè)備名,使用情況等定義為charbuffers[NBUF][514];(NBF=15)
緩沖部首說(shuō)明如下:
- struct buf
- { int b_flags ; //標(biāo)志字位串
- struct buf*b_forw; //設(shè)備(b)鏈向前指針
- struct buf*b_back; //設(shè)備(b)鏈向后指針
- struct buf*av_forw; //空閑(av)鏈向前指針
- struct buf*av_back; //空閑(av)鏈向后指針
- int b_dev; //設(shè)備名
- int b-wcount; //傳送字?jǐn)?shù)(二進(jìn)制補(bǔ)碼)
- char * b_addr; //內(nèi)存地址低16位
- char * b_xmem; //內(nèi)存地址高16位
- char * b_blkno; //設(shè)備上的物理塊號(hào)
- char * b_error; //返回I/0出錯(cuò)信息
- char * b_resid; //因出錯(cuò)而未傳送的剩余字?jǐn)?shù)
- } buf[NBUF];
為了有效地管理這些緩沖,對(duì)應(yīng)的緩沖部首連人到兩個(gè)雙向鏈中,一個(gè)是設(shè)備鏈,或簡(jiǎn)稱(chēng)b鏈,它把一類(lèi)設(shè)備所用的所有緩沖連接起來(lái)。另一個(gè)是空閑鏈,或簡(jiǎn)稱(chēng)av鏈,它把Unix操作系統(tǒng)中所有未用的緩沖連接起來(lái),包括已屬于某設(shè)備的b鏈中的緩沖。
2設(shè)備名:
- struct{ char d_minor (次設(shè)備號(hào))
- char d_major (主設(shè)備號(hào))
- };
設(shè)備名的高字節(jié)存設(shè)備類(lèi)型號(hào)d_major,也叫設(shè)備號(hào),表示某一類(lèi)設(shè)備,同類(lèi)設(shè)備使用相同的驅(qū)動(dòng)程序,低字節(jié)存設(shè)備號(hào)d_minor,也叫次設(shè)備號(hào),表示某類(lèi)設(shè)備的第幾臺(tái)設(shè)備。
3塊設(shè)備表:含有該類(lèi)設(shè)備的狀態(tài)信息、IO隊(duì)列頭尾指針和上面提到的該類(lèi)設(shè)備的b鏈頭尾指針。
設(shè)備表說(shuō)明如下:
- struct devtab
- { char d_active; //忙閑標(biāo)志
- char d_errent; //出錯(cuò)重試次數(shù)
- struct *buf b_forw; //b鏈鏈頭指針向前指針
- struct *buf b_back; //b鏈鏈頭指針向后指針
- struct *buf d_actf; //IO隊(duì)列頭指針
- struct *buf d_act1; //IO隊(duì)列尾指針
- };
4塊設(shè)備開(kāi)關(guān):每類(lèi)設(shè)備自己的管理程序
- struct bdevsw
- { int (*d_open) ( ); //打開(kāi)子程序入口地址
- int (*d_close) ( ); //關(guān)閉子程序入口地址
- int (*d_strategy) ( ); //啟動(dòng)子程序入口地址
- int *d_tab //對(duì)應(yīng)設(shè)備表地址(devtab)
- } bdevsw;
5bfreelist:是av鏈的鏈頭,
用了buf中的四個(gè)指針。但b_forw和b_back指向的b鏈不與任何設(shè)備相連系。
swbuf:專(zhuān)門(mén)用于程序?qū)Q。
rrkbuf:專(zhuān)門(mén)用于原始磁盤(pán)操作。
這樣,我們對(duì)Unix操作系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)分析的知識(shí)就到這里了。謝謝大家的閱讀。
【編輯推薦】