Linux——基础IO

1. 预备知识

共识原理:

  1. 文件 = 内容 + 属性

  2. 文件分为 打开的文件 和 没打开的文件

文件要想被打开,必须先被加载到内存中。文件内容、文件属性都要加载进去,

因为CPU只和内存打交道

文件的内容加不加载,取决于是否对文件做读取修改,理想情况二者都要加载
进程 : 打开的文件 = 1 : n

  1. 对于打开的文件:它由谁打开?是进程 !所以本质上,是在研究进程和文件的关系。

  2. 没打开的文件在哪里存放?在磁盘上。

我们最关注什么问题?没有被打开的文件非常多,文件如何被分门别类地放置好,如何存储? 我们要能快速地进行增删查改,快速地找到文件

所以,在操作系统内部,一定存在大量的被打开的文件。

OS要不要管理这些被打开的文件呢?怎么管理? 先描述,再组织。

在内核中,一个被打开的文件,都必须有自己的文件打开对象,其中包含文件的很多属性。

如:struct XXX { 文件属性;struct XXX* next } ;
对文件的管理,就转换成了对链表的增删改查。

一个进程启动后,会默认打开三个输入、输出流,三个输入输出流,最终是以文件的形式打开的。
对应到C语言中,一个程序会打开stdin、stdout、stderr 三个流成员,类型是FlLE*。
Linux下一切皆文件,所以一个进程默认就打开了三个文件。

相关推荐
qq_163135758 小时前
Linux 【07-rm命令超详细教程】
linux
zh路西法8 小时前
【SSH 免密登录全流程】Windows Linux 通用方案
linux·windows·ssh
ScilogyHunter9 小时前
GCC完全指南
linux·gcc
CodeStats9 小时前
从 CPU 指令到 JVM 进程:彻底讲透 Java 执行 main 方法时,类加载、主线程、栈帧入栈的完整底层逻辑
java·linux·开发语言
努力努力再努力wz11 小时前
【内存管理与高并发内存池系列】从 mmap 到 malloc:文件映射、匿名映射与 glibc 内存分配机制详解
linux·c语言·数据结构·数据库·c++·qt·链表
Jurio.12 小时前
开源 Codex Sticky:在终端 Codex CLI 长对话中始终固定底部输入框
linux·rust·github·开源软件·codex·codex cli
无足鸟ICT12 小时前
【RHCA+】撤销和恢复撤销快捷键
linux
质造者12 小时前
LangChain + Ollama + Tavily 实现旅游问答系统
linux·人工智能·python·langchain·rag
starvapour13 小时前
Ubuntu部署gitlab频繁出现502的问题
linux·ubuntu·gitlab
zhangfeng113313 小时前
ps aux讲解,结合国家超算中心 hpc apptainer
linux·服务器·网络