Linux一切皆文件

1.一切皆文件

​ Linux 一切皆文件,不仅是狭义上的文件,像键盘、打印机、虚拟终端,进程间通信和网络通信等输入/输出资源都是定义在文件系统空间下的字节流

​ 好处:对于输入/输出资源,可以使用同一套api(read, write)和工具(cat , 重定向, 管道)来处理unix中大多数的资源 (注:api是应用程序编程接口)

​ 操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用

​ 在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式

​ 注意点:Linux 文件是没有所谓的扩展名的,一个 Linux文件能否被执行与它是否可执行的属性有关,只要权限中有x就可以执行(不一定执行成功)虽然如此,但期望通过扩展名来了解该文件是什么东西,所以一般还会以适当的扩展名来表示该文件是什么

2.物理存储机制:

​ 磁性存储介质磁化后会保留被磁化状态,且状态能被读取和修改,磁化有两个方向可表示0和1,所以用磁性存储介质来存储信息
​ 而硬盘就是把磁性存储介质做成多个盘片(包含数以亿计的磁性存储单位),并使用磁性读写头对盘片进行读写

​ 由于硬盘中磁性存储单元众多,所以需要一套规则来规划信息如何存取,于是就有了物理、逻辑概念:

  1. 一个硬盘有多张盘片叠成
  2. 每张盘片上的存储颗粒(一存储颗粒为1bit)成环形一圈圈地排布,每一圈称为磁道
  3. 每条磁道上都有一圈存储颗粒,每512*8(512byte,0.5KB)个存储颗粒作为一个扇区
  4. 扇区是硬盘最小的物理存储单位
  5. N个扇区可以组成簇,N取决于不同的文件系统或是文件系统的配置
  6. 簇是文件系统的最小存储单位
  7. 所有盘面上的同一磁道构成一个圆柱,称为柱面
  8. 柱面是系统分区的最小单位

​ 磁头读写文件时先分区读写,由inode编号(区内唯一的编号)找到对应磁道和扇区,然后一个柱面一个柱面地进行读写

在这里插入图片描述

3.Linux文件体系:

​ Linux以文件的形式对计算机中的数据和硬件资源进行管理,反映在Linux的文件类型上就是:普通文件、目录文件(也就是文件夹)、设备文件、链接文件、管道文件、套接字文件(数据通信的接口)等等。而这些种类繁多的文件被Linux使用目录树进行管理(就是以根目录(/)为根,向下呈现分支状的一种树形结构)

3.1. 普通文件

​ 类似mp4、pdf这样应用层面上的文件类型都属于普通文件,Linux用户可以根据访问权限对普通文件进行查看、更改和删除

3.2. 目录文件

​ 目录文件包含了目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件

3.3. 链接文件

​ 类似快捷方式,是指向另一个文件的间接指针

3.4. 块设备文件和字符设备文件

​ 这些文件一般隐藏在/dev目录下,在进行设备读取和外设交互时会被使用到。比如磁盘光驱就是块设备文件,串口设备则属于字符设备文件

3.5. 管道文件

​ 主要用于进程间通讯

.6. 套接字文件

​ 用于进程间的网络通信,也可以用于本机之间的非网络通信,这些文件一般隐藏在/var/run目录下,证明着相关进程的存在

猜你喜欢

转载自blog.csdn.net/Ivan_zcy/article/details/85079257
今日推荐