歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> Unix資訊

Unix操作系統中數據結構分析

我們在文章中首先讓大家了解下Unix操作系統中數據結構分析的知識,以後在進一步的講解Unix操作系統的知識。希望對大家對Unix操作系統的學習有所幫助。

1緩沖部首:

Unix操作系統為每個緩沖提供了一個緩沖控制塊,稱緩沖部首。其中保留對應緩沖的地址,對應的設備名,使用情況等定義為charbuffers[NBUF][514];(NBF=15)

緩沖部首說明如下:
 

  1. struct  buf  
  2. {  int   b_flags  ;           //標志字位串  
  3.    struct  buf*b_forw;        //設備(b)鏈向前指針  
  4.    struct  buf*b_back;        //設備(b)鏈向後指針  
  5. struct  buf*av_forw;       //空閒(av)鏈向前指針  
  6. struct  buf*av_back;       //空閒(av)鏈向後指針  
  7. int     b_dev;             //設備名  
  8. int     b-wcount;          //傳送字數(二進制補碼)  
  9. char  * b_addr;            //內存地址低16位  
  10. char  * b_xmem;            //內存地址高16位  
  11. char  * b_blkno;           //設備上的物理塊號  
  12. char  * b_error;           //返回I/0出錯信息  
  13. char  * b_resid;           //因出錯而未傳送的剩余字數  
  14. }  buf[NBUF]; 

為了有效地管理這些緩沖,對應的緩沖部首連人到兩個雙向鏈中,一個是設備鏈,或簡稱b鏈,它把一類設備所用的所有緩沖連接起來。另一個是空閒鏈,或簡稱av鏈,它把Unix操作系統中所有未用的緩沖連接起來,包括已屬於某設備的b鏈中的緩沖。

2設備名:

  1. struct{ char  d_minor (次設備號)  
  2. char  d_major (主設備號)  
  3. }; 

設備名的高字節存設備類型號d_major,也叫設備號,表示某一類設備,同類設備使用相同的驅動程序,低字節存設備號d_minor,也叫次設備號,表示某類設備的第幾台設備。

3塊設備表:含有該類設備的狀態信息、IO隊列頭尾指針和上面提到的該類設備的b鏈頭尾指針。

設備表說明如下:
 

  1. struct  devtab  
  2. { char  d_active;               //忙閒標志  
  3. char  d_errent;               //出錯重試次數  
  4. struct *buf b_forw;           //b鏈鏈頭指針向前指針  
  5. struct *buf b_back;           //b鏈鏈頭指針向後指針  
  6. struct *buf d_actf;           //IO隊列頭指針  
  7. struct *buf d_act1;           //IO隊列尾指針  
  8. }; 

4塊設備開關:每類設備自己的管理程序
 

  1. struct  bdevsw  
  2. { int (*d_open) ( );            //打開子程序入口地址  
  3. int (*d_close) ( );           //關閉子程序入口地址  
  4. int (*d_strategy) ( );        //啟動子程序入口地址  
  5. int *d_tab                    //對應設備表地址(devtab)  
  6. } bdevsw; 

5bfreelist:是av鏈的鏈頭,

用了buf中的四個指針。但b_forw和b_back指向的b鏈不與任何設備相連系。
swbuf:專門用於程序對換。
rrkbuf:專門用於原始磁盤操作。

這樣,我們對Unix操作系統的數據結構分析的知識就到這裡了。謝謝大家的閱讀。

Copyright © Linux教程網 All Rights Reserved