gpt4 book ai didi

operating-system - 打开文件的不同实现

转载 作者:行者123 更新时间:2023-12-03 17:48:08 27 4
gpt4 key购买 nike

我正在阅读《高尔文的操作系统概念》一书,遇到以下说法:

File open can be implemented in any of two ways:

  1. Some system open files when it is referenced first time. And closes them, once the job is done.
  2. Some other systems allow application programmers to specify a order such as open-read/write-close in application itself."

我看到 Linux/Windows 的 C 程序遵循第二种方法。
  • 有第一种方法的例子吗?
  • 为什么那些系统使用第一种方法?
  • 最佳答案

    在理解这两种实现及其优缺点时,我认为在这里概括是有用的:

  • 从文件概念泛化到真正考虑任何获取的资源;和
  • 从操作系统提供的内容概括到所使用的编程语言、库或框架也提供的内容。

  • 至于为什么系统可以使用第一种方法......

    答案同样适用于为什么您可能想要使用像 RAII 这样的编程习惯。 . IE。您是想自己对资源进行生命周期管理,还是希望它为您完成。

    有时,当为我们(我们作为程序员)完成生命周期管理时,我们可能会失去做我们想做的事情的能力(如果我们自己实现生命周期管理,这些事情可能会发生)。有时更重要的是不能泄露资源,而不是能够访问它的每一个花里胡哨。

    以 C++ 中的内存管理为例。我们可以使用 new 从系统分配内存或者我们可以调用 std::make_shared .然而,前者要求我们也调用 delete (在使用结束时)如果我们想确保内存不泄漏。同时,Java 并没有让程序员直接访问分配内存,而是使用垃圾收集,以便 "programmers can be spared the burden of having to perform manual memory management" .

    至于第一种方法的例子......

    许多类 Unix 操作系统为 syslog 提供编程接口(interface)。设施。虽然它在 openlog 中具有类似打开和关闭的类比和 closelog ,调用这些是可选的。可以直接调用 syslog启动系统记录文本。

    标准输入和输出也同样为我们管理。当一个程序启动时,它通常已经打开并提供了这些概念。当它退出时,这些流将为我们关闭(根据需要)。程序无需调用 fclose(stdout) (也不是 fopen("/dev/console") 之类的东西)。程序只需调用 fputsfgets使用 stdoutstdin .

    关于operating-system - 打开文件的不同实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29194643/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com