一、磁盘的结构
磁盘按照物理结构和逻辑结构区分比较好。
1.1 HDD物理结构(Hard Disk Drive)
- Platters:盘片
- Head:读写头
- Spindle:主轴
- Actuator Arm:机械臂
- Cylinder:柱面
- Sector:扇区
- Track:磁道:
1.2 SSD的物理结构(Solid State Drive)
1.2.1 基本存储单元
通过向被绝缘层包围的浮栅层充放电来写入擦除数据。(非易失存储器)
1.3 逻辑结构
文件系统block -> 磁盘block -> n * 扇区
二、文件系统挂载
文件系统生成后,还不能直接使用,需要借助”mount”操作,将这个文件系统加入到Linux的管理,这样用户才能看到并访问
三、虚拟文件系统
虚拟文件系统为各种文件系统提供一个通用的接口,其支持的文件系统可以划分为三种主要类型:
- 磁盘文件系统(EXT3、NTFS)
- 网络文件系统
- 特殊文件系统(/proc)
虚拟文件系统通过引入一套通用的文件模型来支持所有的文件系统,通用模型由四大对象组成:
- 超级块对象
- 索引节点对象
- 目录项对象
- 文件对象
3.1 超级快对象:代表一个具体的已安装文件系统
1 | struct super_block { |
3.2 索引节点对象:代表一个具体的文件
1 | struct inode { |
3.3 目录项对象:代表一个目录项,是路径的一个组成部分
1 | struct dentry { |
3.4 文件对象:代表由进程打开的文件
1 | struct file { |
四、相关系统调用
系统调用 | 说明 |
---|---|
mount() unmount() unmount2() | 安装卸载文件系统 |
mkdir() rmdir() | 创建删除目录 |
unlink() rename() | 对目录项进行操作 |
mmap() mmap2() munmap() | 处理文件内存映射 |
read() write() | 进行文件IO操作 |
select() poll() | 等待一组文件描述符上发生事件 |
open() close() create() | 打开关闭创建 |
chmod() fchmod() utime() | 更改文件属性 |
五、参考文献
https://z.itpub.net/article/detail/8ABB71A5EFED33EA9D09353759A91F1C