【问题标题】:What is "internal table" for a file?什么是文件的“内部表”?
【发布时间】:2015-03-23 14:24:05
【问题描述】:

来自 Tanenbaum 关于文件操作的现代操作系统:

  1. 打开。在使用文件之前,进程必须打开它。开放调用的目的是让系统获取属性和列表 将磁盘地址存储到主内存中,以便在以后的调用中快速访问。
  2. 关闭。当所有访问完成后,不再需要属性和磁盘地址,因此应该关闭文件以释放 up 内部表空间

什么是“内部表”?

在阅读书中的引文之前,我没有找到“内部表”的定义。它是否也有其他名称?

它是否在主内存中,并且是专门为文件创建的?

谢谢。

【问题讨论】:

    标签: file operating-system


    【解决方案1】:

    对于每个打开的文件,操作系统都会维护一个服务结构,用于跟踪该文件、文件位置、打开模式等。一旦关闭文件,该结构就不再需要并被丢弃。这就是措辞所指的 - 在某些操作系统上,将使用称为 内部表空间 的东西来完成,但这是一个实现细节。

    Here's 一个相关问题的好答案。

    【讨论】:

    • 文件的内表是否与文件的文件描述符相同?
    • @Tim 通常不会。描述符通常是一个神奇的值,用于识别程序中打开的文件。就像你问操作系统“请你帮我打开那个文件”,操作系统调用会返回一些 FILE*void* 或者除了调用读写和“关闭文件”功能之外你不能用于其他任何事情的任何东西.
    【解决方案2】:

    通常,支持多级数据结构来访问文件。在 unix 中通常有两个级别:操作系统和库。在 VMS 中,共有三个级别。系统服务、RMS 和库。

    在系统级别,文件成为逻辑设备。 (Unix 不寻常地在这个级别跟踪读取位置)。

    在某些系统(IBM、VMS)中可以找到记录级别访问。这用于文件系统支持多种文件结构(例如,流、固定、变量、索引)的情况。 Unix 只做流式传输。它也可以处理缓冲。

    图书馆访问提供特定于语言的功能。 C-RTL 函数 fopen() 返回您通常访问的 FILE* 结构。 open() 函数是 Unix 系统级函数(在某些系统上作为库函数实现)。

    这些层中的每一层都会创建需要释放的额外数据结构。

    【讨论】:

    • 什么是 RMS 和 VMS?您是否有一些书籍在某种一般意义上或特定于某些操作系统(例如 Linux 或 Unix)中提到了这些级别?
    • VMS 是一个操作系统。 RMS=记录管理服务。在 VMS 中,RMS 在 EXECUTIVE 模式下运行,该模式低于 Kernel,高于 Supervisor 和 User(系统有 4 种模式,而 Unix 中通常有两种模式)。
    猜你喜欢
    • 2022-12-18
    • 2011-03-20
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多