美文网首页
第一章 文件I/O

第一章 文件I/O

作者: 人生背包客 | 来源:发表于2018-04-01 01:36 被阅读18次

Linux中的文件


文件、文件描述符和文件表


Linux内核将一切视为文件,狭义上是指文件系统系统中的物理文件,广义上则可以是Linux管理的所有对象。广义上的文件利用VFS机制以文件系统的形式挂载Linux内核中,对外提供一致的文件操作接口。

文件描述符本质上就是一个句柄,对于用户来说就是透明的,无需知道内部数据结构。文件描述符即句柄,好处如下:一是增强了安全性;二是增强了可扩展性。

Linux的每个进程都会维护一个文件表,方便维护该进程打开文件的信息。

内核文件表的实现

源码部分

为什么会存在两个 fdtable 主要是内核的一种优化策略。fdt为指针,而 ftdtab 为普通变量。正常情况下 fdt 是指向 fdtab的,当需要它的时候才会真正的动态申请内存。因为默认大小的文件数足以满足大多数场景,这样可以避免频繁的内存申请。

。。。。持续跟新中

文件表、文件描述符表及文件结构关系图

源码今天还未下载好,后期会补上源码


打开文件

open介绍

init open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

在C语言中是不允许函数重载的,那么内核不可能为这个功能创建两个系统调用。在Linux内核中,实际上只提供一个系统调用,是对应上面的第二个函数。那么实际上调用的是glibc封装的函数,然后由glibc通过自陷指令进行真正的系统调用,最终所有的系统调用都是先经过glibc才回进入操作系统。

相关文章

  • UNIX 文件I/O

    UNIX 文件I/O 引言 介绍UNIX系统可用的文件I/O函数---打开文件、读文件、写文件等 UNIX文件I/...

  • C语言

    第一章 预处理阶段->得到.i文件->编译阶段->得到.s文件->汇编阶段->得到.o文件(二进制文件)->链接阶...

  • linux系统API,c,c++的标准I/O和文件I/O

    标准I/O:数据从内存与标准i/o设备(stdio,stdout,stderr)之间的数据流动 文件I/O:文件的...

  • C语言学习12.文件和IO

    I/O:input/output,输入输出。分三类:标准I/O,串I/O,文件I/O 标准I/O: 标准输入:从标...

  • Python文件操作

    文件I/O I 输入(input) O输出(Output) 文件操作步骤:1.打开文件 2.读写文件 3...

  • 文件I/O

    文件描述符 http://blog.csdn.net/cywosp/article/details/3896523...

  • 文件I/O

    所有执行I/O操作的系统调用都以文件描述符(一个非负整数)来指代打开的文件。包括pipe,FIFO,socket,...

  • IO 泄露

    概述 I/O监控,可以监控APP运行时,出现的I/O问题,包括文件主线程I/O,读写buffer太小,重复读,文件...

  • 协议栈学习笔记

    缓存 I/O 缓存 I/O 又被称作标准 I/O,大多数文件系统的默认 I/O 操作都是缓存 I/O。在 Linu...

  • I/O操作的实现

    目录 I/O子系统概述 用户空间I/O软件 用户程序中的I/O函数 文件的基本概念 系统级I/O函数 C标准I/O...

网友评论

      本文标题:第一章 文件I/O

      本文链接:https://www.haomeiwen.com/subject/xcmncftx.html