IO、存储、硬盘、文件系统相关常识

目录

IO

文件系统

文件在硬盘上的存储


IO

IO,就是Input和Output,即输入和输出操作。我们的电脑可以通过网络下载文件,也可以通过网络上传文件。通过网络下载文件就是输入操作,上传文件就是输出。如何区分输入和输出呢?

我们可以参考下图:

我们可以这样理解:**靠近cpu的操作就是输入,远离cpu的就是输出。**通过网络下载文件是从网卡读取数据到硬盘,靠近cpu,是输入。通过网络上传文件是从硬盘读取数据到网卡,远离cpu,是输出。同样,把内存的数据保存到硬盘上,远离cpu,是输出。从硬盘读取数据到内存上,靠近cpu,是输入。

输入输出是绝对的,不存在谁相对于谁的概念。

文件系统

文件,本身也是广义的概念。其实在操作系统中把很多的资源(软件/硬件资源)都抽象成文件。此处提到的文件特指狭义的文件,也就是平时保存在硬盘上的文件。

在硬盘上,存在很多文件和目录,目录又存在一定的"嵌套关系",整体这一套结构,是一个树型结构,此处是N叉树。

比如:

注:文件夹也是文件,称为"目录文件",也是保存在硬盘上。

最终构成了一个比较庞大的树形结构。

文件非常多,目录也非常多,而目录之间还能嵌套。这就需要在上述体系中,能够有一种方式,来标识某个具体的文件(通过这个机制就能具体定位到,找到某个文件头上)。

这就引入了路径。

从根节点出发,一层一层往下走,最终达到目标文件之后,中间这些目录,集合在一起,就构成了路径。比如:

注:Linux,Mac,Android等大部分操作系统,都是只能使用 ' / ' 分隔符,Windows '/ ' 和 '\ '都能使用**。**

所以日常开发中,推荐大家使用 '/ ' 而不是'\'

像上述从盘符开始的称为绝对路径。 而不从盘符开始的称为相对路径。

比如我们要找qq.exe ,它的存储位置是 D:\program\qq\Bin\qq.exe

我们当前所处的位置(一般称工作目录或基准) 是D:\program\qq\Bin

1)此时直接通过 ./qq.exe(相对路径) 的方式,就能定位到这个文件了。在相对路径中 **" . "表示"当前所在的位置"," .."**表示上一层位置。

2)如果此时工作目录是D:\program\qq 此时要通过 ./Bin/qq.exe 找到。

以此类推。。。

Linux和Windows的相对路径/绝对路径规则完全相同,唯一区别是Linux绝对路径是/开头,Windows以盘符开头。

文件在硬盘上的存储

文件的分类方式有很多种,此处主要讨论一种和编写代码密切相关的。文件在硬盘上存储的时候,大体可以把文件分为文本文件和二进制文件,文本文件存储的是字符串(准确说是能构成合法字符串的"二进制数据"),每个部分都是合法的字符,可以用记事本等文本编辑器软件直接打开。而二进制文件可以存任何数据,用记事本打开是一堆乱码。

所以无论是文本还是二进制,本质上都是1010这样的二进制数据。

日常常见的docx,pptx,mp3,mp4,pdf都属于二进制文件。而md,html,Java,c都属于文本文件。

以上,关于文件,希望对你有所帮助。

相关推荐
0+1115 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋5 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家6 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890756 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻6 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
2601_949847758 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_639906948 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
今天重构了吗9 小时前
Linux 上 rm -rf 删错了能找回吗
运维·服务器
KaiwuDB9 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
LannyChung9 小时前
PowerShell 下 git log 中文乱码的完整排查与解决
windows·git