操作系统中的对象
操作系统中的对象
操作系统中的对象
操作系统里都有什么文件?
Filesystem Hierarchy Standard
FHS
enables
software and user
to predict the location of installed files and directories: 例如 macOS 就不遵循 FHS
操作系统中的对象
冷知识
只要拷对了文件,操作系统就能正常执行啦!
创建 UEFI 分区,并复制正确的 Loader
创建文件系统
mkfs (格式化)
cp -ar 把文件正确复制 (保留权限)
注意 fstab 里的 UUID
你就得到了一个可以正常启动的系统盘!
运行时挂载必要的其他文件系统
磁盘上的 /dev, /proc, ... 都是空的
mount -t proc proc /mount/point 可以 “创建” procfs
操作系统中的对象
任何 “可读写” 的东西都可以是文件
真实的设备
/dev/sda
/dev/tty
虚拟的设备 (文件)
/dev/urandom (随机数), /dev/null (黑洞), ...
它们并没有实际的 “文件”
操作系统为它们实现了特别的 read 和 write 操作
/drivers/char/mem.c
甚至可以通过 /sys/class/backlight 控制屏幕亮度
procfs 也是用类似的方式实现的
操作系统中的对象
任何 “可读写” 的东西都可以是文件 (cont'd)
管道:一个特殊的 “文件” (流)
由读者/写者共享
读口:支持 read
写口:支持 write
匿名管道
int
pipe
(
int
pipefd[
2
])
;
返回两个文件描述符
进程同时拥有读口和写口
看起来没用?不,fork 就有用了 (testkit)
操作系统中的对象
于是你已经有 “实现一切” 的基础知识了!
进程管理
fork, execve, waitpid, exit
内存管理
mmap, munmap, mprotect, msync
文件管理
open, close, read, write, lseek, dup