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















 
 
 
 
 
 
 