管理操作系统中的对象

管理操作系统中的对象

2024 南京大学《操作系统:设计与实现》
管理操作系统中的对象

你们看到的教室是真实的吗?

同学 = 进程 (临时重组);共享空间 = 操作系统对象

  • 你的视觉和触觉都必须通过 syscall
  • 我们真的也可能生活在 “虚拟化” 中

center

2024 南京大学《操作系统:设计与实现》
管理操作系统中的对象

操作系统对象:进程和地址空间

进程管理

  • fork, execve, exit
    • 例子:pstree

内存管理

  • mmap, munmap, mprotect
  • 进程的内存由内存 “页面” 组成
    • 例子:游戏修改器
2024 南京大学《操作系统:设计与实现》
管理操作系统中的对象

操作系统对象:文件和设备

访问操作系统中的对象

  • 文件:有 “名字” 的对象
  • 字节流 (终端) 或字节序列 (普通文件;包括 /proc/*)

文件描述符

  • 指向操作系统对象的 “指针”
    • Everything is a file
    • 通过指针可以访问 “一切”
  • 对象的访问都需要指针
    • open, close, read/write (解引用), lseek (指针内赋值/运算), dup (指针间赋值)
2024 南京大学《操作系统:设计与实现》
管理操作系统中的对象

Windows 中的文件描述符

Handle (把手;握把;把柄)

  • 比 file descriptor 更像 “指针”
  • 你有一个 “handle” 在我手上,我就可以更好地控制你

center

2024 南京大学《操作系统:设计与实现》
管理操作系统中的对象

句柄 (柄 = 握把)

center

2024 南京大学《操作系统:设计与实现》
管理操作系统中的对象

操作系统对象:IPC Endpoints

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

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

匿名管道

int pipe(int pipefd[2]);
  • 返回两个文件描述符
  • 进程同时拥有读口和写口
    • 看起来没用?不,fork 就有用了
2024 南京大学《操作系统:设计与实现》