Review & Comments
Review & Comments
Review & Comments
昨天很热门的 (反转) 事件
高校教师的经典三输局面
忽悠了国家的科研经费,压榨了学生,人还猝死了
在座各位才是破局之人
Review & Comments
TestKit Bug
SystemTest...
atexit() handler run_all_tests()
fork() 后 System Test 执行 exit()
退出了
后续的测试代码都不执行了
未测代码永远是错的
感谢何棋同学指出
Review & Comments
怎么修复?
明确需求
我们需要一个
状态
(Everything is a state machine)
tests 里有全部测试用例
且
程序还没结束
需要遵守 libc 的约定
tk_add_test 和 tk_register_hook 执行顺序
不确定
System test 里还可能调用 atexit()
解决问题
tk_register_hook 时立即创建一个进程
等程序 atexit() 的时候把 tests 送过来
程序之间交换数据:“serialization”
Review & Comments
更好的工程实现
我们的做法:利用编程语言机制 hack
并不是好的 practice (但有时候需要)
方法一:请开发者主动调用 API
在 main 里 run_all_tests()
方法二:提供一个特别的编译器
JavaScript: 这个我懂
方法三:更好的编程语言
JVMTI: Tool Interface
Review & Comments
操作系统中的对象
进程
进程 = 状态机
进程管理 API: fork, execve, exit
连续的内存段
我们可以把 “连续的内存段” 看作一个对象
可以在进程间共享
也可以映射文件
内存管理 API: mmap, munmap, mprotect, msync
操作系统肯定还有其他对象的!