我们在文章中首先让大家了解下Unix操作系统中数据结构分析的知识unix结构分析,以后在进一步的讲解Unix操作系统的知识。希望对大家对Unix操作系统的学习有所帮助。
1缓冲部首:
Unix操作系统为每个缓冲提供了一个缓冲控制块,称缓冲部首。其中保留对应缓冲的地址,对应的设备名,使用情况等定义为charbuffers[NBUF][514];(NBF=15)
缓冲部首说明如下:
- struct??buf ?
- {??int???b_flags??;???????????//标志字位串 ?
- ???struct??buf*b_forw;????????//设备(b)链向前指针 ?
- ???struct??buf*b_back;????????//设备(b)链向后指针 ?
- struct??buf*av_forw;???????//空闲(av)链向前指针 ?
- struct??buf*av_back;???????//空闲(av)链向后指针 ?
- int?????b_dev;?????????????//设备名 ?
- int?????b-wcount;??????????//传送字数(二进制补码) ?
- char??*?b_addr;????????????//内存地址低16位 ?
- char??*?b_xmem;????????????//内存地址高16位 ?
- char??*?b_blkno;???????????//设备上的物理块号 ?
- char??*?b_error;???????????//返回I/0出错信息 ?
- char??*?b_resid;???????????//因出错而未传送的剩余字数 ?
- }??buf[NBUF];?
为了有效地管理这些缓冲,对应的缓冲部首连人到两个双向链中,一个是设备链,或简称b链,它把一类设备所用的所有缓冲连接起来。另一个是空闲链,或简称av链,它把Unix操作系统中所有未用的缓冲连接起来,包括已属于某设备的b链中的缓冲。
2设备名:
- struct{?char??d_minor?(次设备号) ?
- char??d_major?(主设备号) ?
- };?
设备名的高字节存设备类型号d_major,也叫设备号,表示某一类设备,同类设备使用相同的驱动程序,低字节存设备号d_minor,也叫次设备号,表示某类设备的第几台设备。
3块设备表:含有该类设备的状态信息、IO队列头尾指针和上面提到的该类设备的b链头尾指针。
设备表说明如下:
- struct??devtab ?
- {?char??d_active;???????????????//忙闲标志 ?
- char??d_errent;???????????????//出错重试次数 ?
- struct?*buf?b_forw;???????????//b链链头指针向前指针 ?
- struct?*buf?b_back;???????????//b链链头指针向后指针 ?
- struct?*buf?d_actf;???????????//IO队列头指针 ?
- struct?*buf?d_act1;???????????//IO队列尾指针 ?
- };?
4块设备开关:每类设备自己的管理程序
- struct??bdevsw ?
- {?int?(*d_open)?(?);????????????//打开子程序入口地址 ?
- int?(*d_close)?(?);???????????//关闭子程序入口地址 ?
- int?(*d_strategy)?(?);????????//启动子程序入口地址 ?
- int?*d_tab????????????????????//对应设备表地址(devtab) ?
- }?bdevsw;?
5bfreelist:是av链的链头,
用了buf中的四个指针。但b_forw和b_back指向的b链不与任何设备相连系。
swbuf:专门用于程序对换。
rrkbuf:专门用于原始磁盘操作。
这样,我们对Unix操作系统的数据结构分析的知识就到这里了。谢谢大家的阅读。
【编辑推荐】
基础讲解Unix操作系统进程讲解Unix操作系统cat知识Unix操作系统基础讲解Unix操作系统知识概要Unix操作系统fork 知识
(编辑:晋中站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|