Unix系统的文件打开机构

当打开一个文件时,建立用户与该文件的联系。其实质是将该文件在辅存中的有关目录信息、辅存i节点及相应的文件地址索引表拷贝到主存中。文件系统中管理这一方面的机构成为打开文件管理机构,简称打开文件机构。

打开文件机构由三部分组成。它们是活动的i节点表(主存索引节点)、打开文件表和用户文件描述表。

补充:

活动i节点表:

当执行打开文件操作时,将文件辅存i节点的有关信息拷贝到主存某一固定区域中,此时文件称为活动文件,读进主存的这个索引节点称为主存索引节点或活动i节点。主存这一区域称为活动i节点表,它是由若干个活动节点组成。

系统打开文件表:

为了记录打开文件所需要的一些附加信息而建立的一个全程核心结构表称为系统打开文件表。该表通常为100项。

用户文件描述符表:

每个用户可以打开一定数目的文件,这一情况记录在用户进程扩充控制块user的一个数组u_ofile[NOFILE]中。该数组称为用户文件描述符表,其中的每一项是一个指针,并指向系统打开文件表的一个表项。一个打开文件在用户描述表中所占的位置就是他的文件描述符。

时间: 2024-10-09 20:36:39

Unix系统的文件打开机构的相关文章

Unix系统数据文件

UNIX系统的正常运行需要使用大量与系统有关的数据文件,例如口令文件/etc/passwd.组文件/etc/group.网路服务/etc/services.协议信息/etc/protocols.网络信息/etc/networks.主机数据/etc/hosts等.下面主要说明一下口令文件. 口令文件-- UNIX系统的口令文件在Linux上可能有下面一行: root:x:0:0:root:/root:/bin/bash 上面各字段以冒号分割,与"pwd.h"中定义的passwd结构对应:

Linux系统编程-文件打开关闭

一.文件描述符 对于Linux而言,所有对设备或文件的操作都是通过文件描述符进行的.当打开或者创建一个文件的时候,内核向进程返回一个文件描述符(非负整数).后续对文件的操作只需通过该文件描述符,内核记录有关这个打开文件的信息(file结构体). 一个进程启动时,默认打开了3个文件,标准输入.标准输出.标准错误,对应文件描述符是0(STDIN_FILENO).1(STDOUT_FILENO).2(STDERR_FILENO),这些常量定义在unistd.h头文件中. 另外介绍下面两个函数: fil

UNIX系统的文件类型

普通文件(regular file).这是最常用的文件类型,这种文件包含了某种形式的数据.至于这种数据是文本还是二进制数据,对于UNIX内核而言并无区别.对普通文件内容的解释由处理该文件的应用程序进行. 目录文件(directory file).这种文件包含了其他文件的名字以及指向与这些文件有关信息的指针.对一个目录文件具有读权限的任一进程都可以读该目录的内容,但只有内核可以直接写目录文件.进程必须使用相应的函数才能更改目录. 块特殊文件(block special file).这种类型的文件提

《UNIX环境高级编程》读书笔记之系统数据文件和信息(1)

1.UNIX系统口令文件包括了下图所看到的的各字段,这些字段包括在<pwd.h>中定义的passwd结构体中 POSIX定义了两个获取口令文件项的函数. 在给出用户登录名或用户ID后.这两个函数就能查看相关项. #include <pwd.h> struct passwd *getpwuid(uid_t uid); struct passwd *getpwnam(const char *name); 假设想要查看整个口令文件,则要用到以下三个函数: #include <pwd

APUE学习笔记(第六章 系统数据文件和信息)

UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文件. 口令文件 UNIX系统口令文件包含如下字段,这些字段包含在<pwd.h>中定义的passwd结构中 口令文件是/etc/passwd,每一行包含上面各字段,字段之间用冒号分隔.可以使用finger命令打印指定用户的有关信息:finger -p 用户名 POSIX.1定义了两个获取口令文件项的函数,在给定用户登录名或数值用户ID后,这两个

Unix环境之文件和目录

文件结构stat-- 下面三个函数可以获取文件的状态信息: #include <sys/stat.h> int stat(const char *path, struct stat *buf); int fstat(int fd, struct stat *buf); int lstat(const char *path, struct stat *buf); stat函数指定文件路径,fstat指定文件描述符,lstat类似于stat,但对于符号链接文件来说,lstat获取的是符号链接文件本

Linux最大文件打开数使用经验详解

首先普及几个知识: Linux下一切都是文件,包括输入输出设备.网络连接.socket.管道等 与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为file descriptor),文件打开数的实质就是文件描述符的数量 文件打开数的多少取决于系统种类.内存大小,int(语言关键字,如C99的int)长度(非负整数),以及系统管理员的设定 最大文件打开数是针对一个进程而言,即一个进程能打开的文件句柄数目是有限的,不能超过最大文件打开数 ulimit命令只对当前shell有效,因此在编

Unix系统编程()文件描述符和打开文件之间的关系

目前学习到的是一个文件描述符对应着一个打开的文件,似乎是一一对应的关系.但是实际上并不是这样的.多个文件描述符指向同一个打开的文件,是可能的也是必要的.这些文件描述符可以在相同或者不同的进程中打开. 要理解具体情况,需要查看内核维护的3个数据结构. 进程级的文件描述符表 系统级的打开文件表 文件系统的i-node表 针对每个进程,内核为其维护打开文件的描述符(open file descriptor)表.该表的每一条目都记录了单个文件描述符的相关信息.包括有一下信息: 控制文件描述符操作的一组标

在Unix系统上,从源文件、目标文件、可执行文件的编译过程

是由“编译器驱动”(compiler driver)完成的: unix> gcc -o hello hello.c 在这里,gcc的编译器驱动程序读取源文件hello.c, [cpp] view plaincopy #include <stdio.h> int main() { printf("hello, world/n"); return 0; } 并把它翻译成一个可执行目标文件hello,这个过程是分为四个阶段完成的.如下图所示,执行这四个阶段的程序(预处理器.