6

在我所知道的任何操作系统中,程序都无法有效地数据添加到文件中。然而,这似乎并不困难——如果需要,文件系统可以向文件描述符添加另一个范围。

所以问题是,为什么操作系统不实现这个(相当微不足道的)操作?

4

2 回答 2

7

我认为这不像你建议的那么容易。确实,文件系统可以分配一个新块,在其中存储前置数据,更改文件指针以指向该块,然后从该块链接文件的其余部分。就像在链表的前面添加一个节点一样,对吧?

但是当(可能是这种情况)前置数据没有填充分配的块时会发生什么。我不认为许多文件系统会有链接部分块的机制,但即使他们这样做也会导致巨大的效率低下。您最终会得到一个由大部分空块组成的文件,并且您必须读取和写入整个文件才能对其进行碎片整理。当您首先进行前置时,不妨先进行读写操作。

于 2011-04-06T00:39:29.237 回答
0

在向文件添加或添加数据时,总是存在分配空间的问题。由于文件描述符指向文件流的开头,因此向文件添加额外空间比预先添加空间要容易得多。如果要追加到文件,则无需更改文件描述符,只需更改文件的大小和分配的内存即可。如果要添加到文件中,则必须立即实例化新的文件描述符,以便首先将添加的数据写入或在更新原始文件时存储正在添加的数据的位置。

制作新的文件描述符可能很棘手,因为您还必须更新指向它的任何引用。这就是为什么操作系统很容易实现附加数据而实现预置稍微困难的原因。

于 2011-04-06T00:38:57.533 回答