操作系统中的对象

操作系统中的对象

2025 南京大学《操作系统原理》
操作系统中的对象

操作系统里都有什么文件?

Filesystem Hierarchy Standard FHS

  • enables software and user to predict the location of installed files and directories: 例如 macOS 就不遵循 FHS

center

2025 南京大学《操作系统原理》
操作系统中的对象

冷知识

只要拷对了文件,操作系统就能正常执行啦!

  1. 创建 UEFI 分区,并复制正确的 Loader
  2. 创建文件系统
    • mkfs (格式化)
  3. cp -ar 把文件正确复制 (保留权限)
    • 注意 fstab 里的 UUID
    • 你就得到了一个可以正常启动的系统盘!
  4. 运行时挂载必要的其他文件系统
    • 磁盘上的 /dev, /proc, ... 都是空的
    • mount -t proc proc /mount/point 可以 “创建” procfs
2025 南京大学《操作系统原理》
操作系统中的对象

任何 “可读写” 的东西都可以是文件

真实的设备

  • /dev/sda
  • /dev/tty

虚拟的设备 (文件)

  • /dev/urandom (随机数), /dev/null (黑洞), ...
    • 它们并没有实际的 “文件”
    • 操作系统为它们实现了特别的 read 和 write 操作
  • procfs 也是用类似的方式实现的
2025 南京大学《操作系统原理》
操作系统中的对象

任何 “可读写” 的东西都可以是文件 (cont'd)

管道:一个特殊的 “文件” (流)

  • 由读者/写者共享
    • 读口:支持 read
    • 写口:支持 write

匿名管道

int pipe(int pipefd[2]);
  • 返回两个文件描述符
  • 进程同时拥有读口和写口
    • 看起来没用?不,fork 就有用了 (testkit)
2025 南京大学《操作系统原理》
操作系统中的对象

于是你已经有 “实现一切” 的基础知识了!

进程管理

  • fork, execve, waitpid, exit

内存管理

  • mmap, munmap, mprotect, msync

文件管理

  • open, close, read, write, lseek, dup
2025 南京大学《操作系统原理》