编写完sem.c和pc.c,一切都弄好了,上linux0.11运行。
PID:number这样的信息全部打印出来了,没啥问题,但是打印完操作系统就会寄,大多数极端情况就直接重启了,小部分还会温和地提醒以下报错信息然后死循环
kernel panic: trying to free up swapper memory space
in swapper task - not syncing
其实是因为string.h,去掉sem.c里的string.h头文件就好。
这点其实实验指导书说过了
下面描述的问题未必具有普遍意义,仅做为提醒,请实验者注意。
include/string.h 实现了全套的 C 语言字符串操作,而且都是采用汇编 + inline 方式优化。
但在使用中,某些情况下可能会遇到一些奇怪的问题。比如某人就遇到
strcmp()
会破坏参数内容的问题。如果调试中遇到有些 “诡异” 的情况,可以试试不包含头文件,一般都能解决。不包含string.h
,就不会用 inline 方式调用这些函数,它们工作起来就趋于正常了