操作系统如何识别文本文件的结尾?

How does the operating system recognize end of a text file?

例如,有一个名为"Hello.txt"

的文本文件

Hello World!

那么操作系统(我使用的是 MS-DOS)如何识别这个文本文件的结尾?是某种字符或符号隐藏在'!'之后哪个表示文件结束?

如果您使用 MS-Dos,则很有可能字符串末尾确实有一个特殊字符。 MS-Dos 源自蒂姆·帕特森 (Tim Paterson) 的 QDos,他将其编写为尽可能与当时占主导地位的 CP/M 兼容。一个用于 8 位机器的 OS,它通过仅计算文件使用的磁盘扇区数来跟踪文件大小。这使得文件大小始终是 128 字节的倍数。

这需要 hack 来指示文本文件的真正结尾,因为它可能位于扇区的中间,所以它使用了 Ctrl+Z 控制字符(字符代码 0x1A)。这需要语言运行时实现再次删除它并在遇到该字符时声明文件结束。 Ctrl+Z 并没有完全被遗忘,当您在 Windows 控制台中键入它以终止输入时它仍然有效。与 Unix 终端中的 Ctrl+D 比较。

实际上是否存在于文件中取决于创建该文件的程序。这也必须是一个 MS-Dos 程序才能附加 Ctrl+Z。这当然不是必需的。 Paterson 对 CP/M 进行了改进以移除其一些限制,这极大地帮助了更多地址 space 可用(1 MB 对 64 KB),MS-Dos 跟踪 [=18] 的实际数量=]bytes 在一个文件中。所以它总是可以可靠地指示文件的真正结尾。这可能是您问题的最准确答案。

古老的历史顺便说一句,明智地投资你的时间。