Linux——基础IO

1. 预备知识

共识原理:

  1. 文件 = 内容 + 属性

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

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

因为CPU只和内存打交道

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

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

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

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

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

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

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

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

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

相关推荐
西西弗Sisyphus17 分钟前
理解 Linux 动态库加载:LD_LIBRARY_PATH
linux
AR-26710-18 分钟前
Linux Day31——实操启停服务改端口重启
linux·运维
叼烟扛炮1 小时前
Linux 学习笔记(五十八):IO 多路复用封神——epoll 底层原理揭秘
linux·运维·服务器·网络·笔记·学习·php
叼烟扛炮1 小时前
Linux 学习笔记(五十一):数据链路层与 ARP 协议——局域网寻址与黑客骗局
linux·网络·网络协议·php·tcpdump
星恒随风2 小时前
Linux网络编程:彻底理解IO多路复用select!从fd_set位图、读写就绪到手写TCP多客户端字典服务器
linux·服务器·网络
陈布衣2 小时前
MySQL(1)_MySQL 5.7.21 Linux 安装笔记
linux·笔记·mysql
Oiiouui4 小时前
linux服务器部署Logto后端与对应前端的实现
linux·服务器·前端·后端
ITKEY_5 小时前
用 Emacs Dired 实现 em:退出文件管理器后,让终端自动切换目录
linux·服务器·emacs
wt95275 小时前
VMware 虚拟机磁盘扩容实战文档(Ubuntu 22.04 + LVM)
linux·后端
就像楞次定律5 小时前
【Linux 学习记之二】C++ 构建体系与底层链接机制的深度透视(2)
linux·后端