Linux——基础IO

1. 预备知识

共识原理:

  1. 文件 = 内容 + 属性

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

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

因为CPU只和内存打交道

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

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

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

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

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

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

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

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

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

相关推荐
2401_892070982 天前
【Linux C++ 日志系统实战】LogFile 日志文件管理核心:滚动策略、线程安全与方法全解析
linux·c++·日志系统·日志滚动
lwx9148522 天前
Linux-Shell算术运算
linux·运维·服务器
somi72 天前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
双份浓缩馥芮白2 天前
【Docker】Linux 迁移 docker 目录(软链接)
linux·docker
黄昏晓x2 天前
Linux ---- UDP和TCP
linux·tcp/ip·udp
路溪非溪2 天前
Linux驱动开发中的常用接口总结(一)
linux·运维·驱动开发
此刻觐神2 天前
IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
linux·服务器·学习
2401_892070982 天前
【Linux C++ 日志系统实战】高性能文件写入 AppendFile 核心方法解析
linux·c++·日志系统·文件写对象
航Hang*2 天前
第3章:Linux系统安全管理——第2节:部署代理服务
linux·运维·服务器·开发语言·笔记·系统安全
-ONLY-¥2 天前
PostgreSQL运维全攻略:从基础操作到远程配置
linux