学习笔记 4 - 总结
知识点总结
1. 文件操作级别
-
硬件级别:
mkfs
:格式化磁盘分区,为系统做好准备。fsck
:检查和维修系统。- 碎片整理:压缩文件系统中的文件。
-
操作系统内核中的文件系统函数:
- 提供基本文件操作支持,例如:
kmkdir()
,krmdir()
kchair()
,kgetCwd()
klink()
,kunlink()
kchmod()
,kchown()
,kutime()
kcreat()
,kopen()
kread()
,kwrite()
klseek()
,kclose()
keymlink()
,kreadlink()
kstat()
,kfstat()
,klatat()
kopendir()
,kreaddir()
- 提供基本文件操作支持,例如:
-
系统调用:
- 允许用户模式程序访问内核函数,如:
open()
,read()
,lseek()
,close()
- 允许用户模式程序访问内核函数,如:
-
I/O库函数:
- 提供标准的I/O函数,例如:
fopen()
,fread()
,fwrite()
,fseek()
,fclose()
,fflush()
getc()
,getchar()
,putc()
,putchar()
gets()
,fgets()
,puts()
,fputs()
scanf()
,fscanf()
,printf()
,fprintf()
,sprintf()
- 提供标准的I/O函数,例如:
-
用户命令:
- 使用Unix/Linux命令执行文件操作,例如:
mkdir
,rmdir
,cd
,pwd
,ls
,link
,unlink
,rm
,cat
,cp
,mv
,chmod
, 等。
- 使用Unix/Linux命令执行文件操作,例如:
-
sh脚本:
- 用sh语言编写的程序,通过命令解释程序sh来执行。
2. 文件I/O操作
- 分为内核级别和用户级别的操作。
3. 低级别文件操作
-
分区:
- 将一个块存储设备分为多个逻辑单元,称为分区。
- 分区表位于MBR的第一个扇区,表中包含四个分区描述符。
-
EXT2文件系统:
- Linux默认的文件系统,包含引导块、超级块、块组描述符块、块位图、索引节点位图等。
4. 使用系统调用进行文件操作
-
系统调用和I/O库函数:
- 进程以内核模式和用户模式运行,系统调用允许进程进入内核模式执行高权限操作。
-
基础系统调用函数:
mkdir()
,rmdir()
,chdir()
,getcwd()
,access()
,chmod()
,chown()
,link()
,unlink()
,symlink()
,rename()
,utime()
等。
-
需要超级用户权限的调用:
mount
,umount
,mknod
-
常用系统调用:
stat()
,open()
,close()
,read()
,write()
等。
5. 链接文件
-
链接允许不同的路径对应同一个文件,分为硬链接和软链接(符号链接)。
-
硬链接:共享相同的Inode和Block,适用于非目录文件。
-
软链接(符号链接):指向源文件的Inode,可以链接目录,可以跨分区。
最有收获的内容
我最有收获的内容是对硬链接和软链接的理解:
硬链接特征:
- 源文件和硬链接文件使用相同的 Inode 和 Block。
- 修改任意一个文件,另一个都改变。
- 删除任意一个文件,另一个都能使用。
- 硬链接标记不清,很难确认硬链接文件位置,不建议使用。
- 硬链接不能链接目录。
- 硬链接不能跨分区。
软链接特征:
- 软链接和源文件使用不同的 Inode 和 Block。
- 两个文件修改任意一个,另一个都改变。
- 删除软链接,源文件不受影响;删除源文件,软链接不能使用。
- 软链接没有实际数据,只保存源文件的 Inode,不论源文件多大,软链接大小不变。
- 软链接的权限是最大权限
lrwxrwxrwx
,但是由于没有实际数据,最终访问时需要参考源文件权限。 - 软链接可以链接目录。
- 软链接可以跨分区。
- 软链接特征明显,建议使用软连接。