Function 如何计算需要读取的块数

Function 如何计算需要读取的块数,function,pointers,operating-system,Function,Pointers,Operating System,我有一份关于操作系统概念的试卷,里面有一道相当难的题,我必须在考试前复习。我不太了解这个问题,也不知道如何计算这个问题所涉及的文件的块数。请帮帮我 操作系统使用32位指针以链表方式分配文件。假设一个数据块大小为4KB,该块的前32位包含指针,其余包含数据。我们还假设以下函数已在应用程序中成功调用: fd = open('myfile.bin',O_RDONLY); myfile.bin是一个大小为20480字节的文件 a) 在执行以下系统功能时,计算需要读取的块数(包括包含指向列表中第一个块的

我有一份关于操作系统概念的试卷,里面有一道相当难的题,我必须在考试前复习。我不太了解这个问题,也不知道如何计算这个问题所涉及的文件的块数。请帮帮我

操作系统使用32位指针以链表方式分配文件。假设一个数据块大小为4KB,该块的前32位包含指针,其余包含数据。我们还假设以下函数已在应用程序中成功调用:

fd = open('myfile.bin',O_RDONLY);
myfile.bin是一个大小为20480字节的文件

a) 在执行以下系统功能时,计算需要读取的块数(包括包含指向列表中第一个块的指针的块)

lseek(fd,16385,SEEK_SET); read(fd,&c,1);
b) 在a部分中的系统功能执行之后,当我们必须继续执行以下系统功能时,计算需要读取的块数

lseek(fd,2048,SEEK_CUR); read(fd,&c,1);

你被困在哪里?这部分要求你把上面的句子变成数学公式吗?我被困在这部分:(包括包含指向列表第一块指针的块)。我不明白这一点,因为块的大小是4KB,指针的大小是32位?啊!我想可能就是这样。。如果可以的话。。在我看来,问题的关键在于让人们感到困惑,并确保他们已经解释了一切。我认为,关键在于,虽然每个块的大小是4k,但实际上它比4k少4个字节,因为前32位用于内部管理。。所以第一部分最简单的形式是“我必须读取多少块才能访问文件中的字节4095?”答案当然是2。因为它应该是块中的最后一个字节,所以它应该是1块访问。内务管理(32位)使我们需要下一个。有帮助吗?但我想问函数lseek(fd,16385,SEEK_SET);将指针推到位置16385或20480+16385?位置16385。。。不过,我认为你被欺骗了。文件的大小与您提出的两个问题无关。(如果文件存在,他们可能会问c部分中需要多少块)还记得我之前想象的问题吗,我在4096字节块中指定了最后一个字节?我认为他们只是在做同样的事情——他们想要访问第四个块中的最后一个字节。好吧,如果你不必使用每个数据块的4个字节来管理家务,那么这将是第四个数据块