Operating system 打开文件的不同实现

Operating system 打开文件的不同实现,operating-system,system-calls,Operating System,System Calls,我正在阅读《Galvin的操作系统概念》一书,遇到以下陈述: 文件打开可以通过以下两种方式之一实现: 某些系统在第一次引用时会打开文件。完成任务后,关闭它们 其他一些系统允许应用程序程序员在应用程序本身中指定一个顺序,如打开读/写关闭。” 我看到Linux/Windows上的C程序遵循第二种方法 有第一种方法的例子吗 为什么这些系统使用第一种方法 在理解这两种实现及其优缺点时,我认为在这里概括一下很有用: 从文件概念中归纳出来,真正考虑任何后天资源; 从操作系统提供的内容概括到所使用的编程语言

我正在阅读《Galvin的操作系统概念》一书,遇到以下陈述:

文件打开可以通过以下两种方式之一实现:

  • 某些系统在第一次引用时会打开文件。完成任务后,关闭它们
  • 其他一些系统允许应用程序程序员在应用程序本身中指定一个顺序,如打开读/写关闭。”
  • 我看到Linux/Windows上的C程序遵循第二种方法

    • 有第一种方法的例子吗
    • 为什么这些系统使用第一种方法

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

    从文件概念中归纳出来,真正考虑任何后天资源;
  • 从操作系统提供的内容概括到所使用的编程语言、库或框架提供的内容
  • 至于为什么系统可以使用第一种方法

    答案同样适用于为什么您可能希望使用这样的编程习惯用法,例如,您希望自己对资源进行生命周期管理,还是希望为您进行生命周期管理

    有时,当生命周期管理为我们完成时(我们作为程序员),我们可能会失去做我们想要做的事情的能力(如果我们自己实施生命周期管理,这些事情可能是可能的).有时,不能泄漏资源比能够访问每一个铃声和哨声更重要

    例如,在C++中使用内存管理,我们可以使用<代码>新< /COD>从系统中分配内存,或者我们可以调用<代码> STD::MaMaMyAsdio/<代码>,前者要求我们也调用<代码> Dele> <代码>(在使用结束时)同时,Java不给程序员分配内存的直接访问权,而是采用垃圾收集的方式来实现

    关于第一种方法的例子

    许多类Unix操作系统为
    syslog
    功能提供编程接口。虽然在
    openlog
    closelog
    中有类似于open和closelog的类似功能,但调用它们是可选的。只需调用
    syslog
    即可启动系统日志文本


    标准输入和输出同样也为我们管理。当程序启动时,通常已经打开并可用这些概念。当它退出时,这些流将为我们关闭(根据需要)。程序不需要调用
    fclose(stdout)
    (也不需要类似于
    fopen(“/dev/console”)
    ).程序可以使用
    stdout
    stdin
    调用
    fputs
    fgets
    调用
    fgets
    IBM大型机系统是否使用JCL指定哪些文件连接到哪个通道号作为第一种技术的说明?我认为这就是#1.中提到的内容,早在olde FORTRAN和COBOL没有开放式语句。