Review & Comments

Review & Comments

2025 南京大学《操作系统原理》
Review & Comments

昨天很热门的 (反转) 事件

center

高校教师的经典三输局面

  • 忽悠了国家的科研经费,压榨了学生,人还猝死了 😭
    • 在座各位才是破局之人
2025 南京大学《操作系统原理》
Review & Comments

TestKit Bug

SystemTest...

  • atexit() handler run_all_tests()
    • fork() 后 System Test 执行 exit()
    • 退出了 😂 后续的测试代码都不执行了

未测代码永远是错的

  • 感谢何棋同学指出
2025 南京大学《操作系统原理》
Review & Comments

怎么修复?

明确需求

  • 我们需要一个状态 (Everything is a state machine)
    • tests 里有全部测试用例程序还没结束
  • 需要遵守 libc 的约定
    • tk_add_test 和 tk_register_hook 执行顺序不确定
    • System test 里还可能调用 atexit()

解决问题

  • tk_register_hook 时立即创建一个进程
    • 等程序 atexit() 的时候把 tests 送过来
    • 程序之间交换数据:“serialization”
2025 南京大学《操作系统原理》
Review & Comments

更好的工程实现

我们的做法:利用编程语言机制 hack

  • 并不是好的 practice (但有时候需要)

方法一:请开发者主动调用 API

  • 在 main 里 run_all_tests()

方法二:提供一个特别的编译器

  • JavaScript: 这个我懂 😂

方法三:更好的编程语言

  • JVMTI: Tool Interface
2025 南京大学《操作系统原理》
Review & Comments

操作系统中的对象

进程

  • 进程 = 状态机
  • 进程管理 API: fork, execve, exit

连续的内存段

  • 我们可以把 “连续的内存段” 看作一个对象
    • 可以在进程间共享
    • 也可以映射文件
  • 内存管理 API: mmap, munmap, mprotect, msync

操作系统肯定还有其他对象的!

2025 南京大学《操作系统原理》