歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix資訊 >> Unix操作系統中數據結構分析

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

日期:2017/3/6 11:41:20   编辑: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