news 2026/10/9 2:53:52

【基础IO】-1-预备知识与准备工作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【基础IO】-1-预备知识与准备工作

预备

  • 1 ···> 对文件操作,本质是IO
  • 2 ···> 文件的组成
  • 3 ···> 打开文件
    • 3.1、“打开”的本质
    • 3.2、为什么要打开文件
    • 3.3、“谁”来打开文件
  • 4 ···> 文件与系统调用
  • 总结

现在我们进入了Linux中的“文件”部分。

我们先从“基础IO”说起。要学习“基础IO”,我们就要先学习一些预备知识(也许是知识回顾),以做好准备。

1 ···> 对文件操作,本质是IO

当前我们认为,文件保存在磁盘当中。

磁盘可以对文件进行永久存储。磁盘属于冯诺依曼体系中的外部设备,即外设。




所以,我们对文件进行的一系列操作,本质上都是对外设(磁盘)的输入、输出——这就是IO(input和output)。




小贴士1


对文件的一系列操作就是IO,我们要站在内存的角度去理解:
文件未来是要被加载到内存当中的。对于内存中的文件,

  • 向文件写入内容的时候,键盘等输入设备就需要输入内容到内存中(因为文件此时也在内存中),这就是 Input ;
  • 读取文件的内容,比如输出到显示屏上的时候,内存就需要输出文件内容到输出设备上,这就是 Output 。

2 ···> 文件的组成




我们知道,文件由两部分组成:

文件 = 属性(元数据) + 内容



3 ···> 打开文件

对文件的操作,可以分为:

  • 对内容做操作
  • 对属性做操作

操作文件之前,我们首先需要打开文件。对于“打开文件”,我们有三个问题:

  • 打开文件的“打开”,本质是什么?
  • 为什么要打开文件?
  • 谁来打开文件?

3.1、“打开”的本质

“打开”的本质,是把文件从磁盘加载(拷贝)到内存当中。

小贴士2


加载文件,也分为:

  • 加载文件的属性
  • 加载文件的内容

但是操作系统,并不一定会将文件的内容,全部加载到内存中。(等真正要用的时候再全部加载进来)

3.2、为什么要打开文件

这是由计算机体系结构规定的,即冯诺依曼体系结构。

因为用户只能通过CPU,访问加载到内存中的文件,

  • 用户没办法自己直接访问磁盘上的文件(如果有办法,那还要计算机干嘛😅)
  • CPU也不能直接在磁盘上访问文件,CPU只能与内存进行交互

3.3、“谁”来打开文件

是用户吗?好像不是。

用户写好代码并保存,代码中包含fopen函数,那么此时文件就被打开了吗?并没有。用户写好了代码,而文件依旧“躺在”磁盘中没被动用。



只有代码被编译、链接成可执行文件,CPU执行可执行文件里的代码,fopen函数才能被执行,文件才能被打开。

而CPU要想执行可执行文件,必须对进程进行调度。所以,文件的打开,由进程来完成。



比如,我们在shell命令行上执行cat main.c,

  • 父进程bash就会创建一个子进程;
  • 子进程通过程序替换的方式,将cat的代码加载到内存中,并与子进程建立联系;
  • 运行cat命令读取main.c内容并写入到屏幕上,那么进程就必须能够打开文件。



所以,学习对文件的操作,本质上是学习进程和文件之间的关系。




小贴士3


磁盘文件分为两类:

  • 被进程打开的文件
  • 未被进程打开的文件

被进程打开的文件,就是加载到内存中被打开的文件。对于这一类文件的操作,侧重于进程与文件的关系。
未被进程打开的文件,就是磁盘中保存的文件。对于这一类文件的操作,侧重于文件系统的管理。


目前我们讨论的“基础IO”,就是在讨论:如何操作被进程打开的文件。

4 ···> 文件与系统调用

磁盘是硬件,访问文件需要访问磁盘。

用户想访问文件,必须通过操作系统完成。用户无法直接使用操作系统,必须借助系统调用:

所以,操作系统必须提供系统调用,以使得用户能够访问文件。

总结

学习基础IO的准备知识,总结为:

  1. 对文件进行的一系列操作,本质上都是对外设(磁盘)的输入、输出——IO
  2. 文件 = 属性(元数据) + 内容
  3. 学习对文件的操作,本质上是学习进程和文件之间的关系
  4. 操作系统必须提供系统调用,以使得用户能够访问文件
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 2:52:52

02_股票量化数据获取与质量保障体系:从 Tushare 到本地高可用存储

02_股票量化数据获取与质量保障体系:从 Tushare 到本地高可用存储数据是量化交易的基础。本文深入剖析 GPFX 系统如何构建一套完整的股票数据获取、校验、存储、清理体系,涵盖 Tushare API 封装、数据质量校验、复权计算、滚动窗口清理等核心技术&#x…

作者头像 李华
网站建设 2026/10/9 2:52:45

分布式事务问题的种常见解决方案《第六章》

在微服务架构与分布式系统盛行的今天,数据一致性问题成为开发者必须直面的核心挑战。传统的本地事务(ACID)在跨服务、跨数据库的场景下显得力不从心,分布式事务应运而生。本文将从实战角度出发,深入剖析6种主流的分布式…

作者头像 李华
网站建设 2026/10/9 2:52:41

登山杖分析

计划徒步,把登山杖拿出来检查下,取出来掉了一段,以为内部线断了坏了。想着顺手拆了看看,在观察它结构过程中,反而给它修好了。杖尖杖尖是六角星纹理,增加摩擦力抓地,通常是硬度较高的材料。杖尖…

作者头像 李华
网站建设 2026/10/9 2:52:06

新手快速上手 Okbiye|毕设一站式辅助平台入门指南✨

第一次使用 Okbiye 不知道从哪里开始?本篇为新手准备完整入门流程,从注册新建项目,到依次完成开题、文献研读、写作润色、绘图、排版、答辩 PPT,一步一步带你上手整套平台功能。 一、前期准备工作 打开 Okbiye 官网,登…

作者头像 李华
网站建设 2026/10/9 2:51:49

SSH 常见用法(三):SSH 隧道与端口转发

SSH 常见用法(三):本地端口转发与远程端口转发 系列导读 本系列共包含一篇总览和四篇专题文章: 系列位置文章主题主要内容总览浅谈 SSH:原理、认证与四种常见用法认识 SSH 及其四种常见用法第一篇SSH 常见用法&…

作者头像 李华
网站建设 2026/10/9 2:51:22

2026年AI岗位全景图:零基础也能入行的7大方向,程序员/文科生都适合

本文详细介绍了2026年AI行业的7大岗位类别,包括底层核心研发岗、工程落地运维岗、AI产品与解决方案岗、AIGC内容创意岗、零基础入门岗、行业垂直AI复合型岗以及商务合规配套岗。文章强调了AI行业并非只有算法工程师,程序员可转向MLOps/AI后端&#xff0c…

作者头像 李华