文件系统内部结构(9)

13.4.10  随机查找--"Lseek"系统调用

读取和写入这两个系统调用允许从适当的FT条目中该文件的某个偏移位置读取或写入一定字节的数据。然而,UNIX要支持不同的在线数据库应用,这些应用程序需要从不同的偏移量或RBN读取记录。已经知道,与文件中该记录的RBN相比,RDBMS可以维护键的索引。给定一个键,RDBMS搜索这个索引表,提取RBN,然后向操作系统发送由偏移量m开始的位置读取n个字节的调用,这里n是记录长度,m是从索引表中提取出的RBN。

随机查找的系统调用语法格式如下所示:

position = Lseek (fd, offset, reference ),其中:

fd是文件描述符。offset是新的RBN。Reference指明是从文件开始处、当前位置还是结尾处的偏移量。据此,系统调用中的偏移量分别加上0,或是加上FT条目中的存在偏移量,或是从索引节点中保存的文件大小中减去这个值,然后将其写回到FT条目中。

该系统调用的执行不需要再做说明。它只改变FT条目中的偏移量。这之后,用户可以使用读取或写入系统调用,由这个偏移量开始读/写数据。在数据库应用程序中,如果该系统调用确定了具有提供了键值的特定记录RBN处的偏移量,那么从该位置处读取记录就会得到期望记录的具体内容。正是由于这个原因,该程序在数据库应用中很有用。

posted @ 2012-03-17 22:48  CobbLiu  阅读(184)  评论(0编辑  收藏  举报