内存打开文件结构 - ikarishinjieva/unixV6-code-analyze-chs GitHub Wiki

Table of Contents

概述

  • 这是用来管理最近正在使用的文件的一套机制
  • 文件打开后交由这套机制管理
  • 文件关闭时再从这种管理机制中退出

打开文件结构组成

  • 内存打开文件结构由三部分组成,它们是内存文件控制块inode,打开文件控制块file和进程打开文件表

内存文件控制块

  • 内存INODE块,我们称它为内存INODE表,一般包含NINODE个内存inode
    • NINODE 定义在param.h行,值为 100
  • 与外存INODE结构基本相同,略有增,减,详见struct inode

打开文件控制块

  • file结构用来记录打开文件所需的一些附加信息,以反映在打开文件结构中应该加以反映的一些动态要求
    • 例如一个文件可以被多个进程,以不同的权限打开
    • 又例如一个文件在读取过程中读,写的位置指针是不断变化的,这就需要file结构来控制
  • 内存中一般有NFILE个file结构可供使用
    • NFILE 定义在param.h的132行,值为100

进程打开文件表

  • 每个进程的USER结构中都有一张打开文件表u-ofile[NOFILE]
    • NOFILE的定义见param.h的139行,值为15
  • 该表的每一项都是一个指针,指向一个打开文件控制块file结构结构

打开文件过程

  • 进程打开一个文件时,首先找到或者分配一个内存INODE
  • 接着分配一个file结构,建立两者的关系,即将f_inode指向inode
  • 最后还需要在进程的u-ofile表中分配一项,指向相应的file结构

打开文件结构图示

⚠️ **GitHub.com Fallback** ⚠️