哈工大操作系统实验5-信号量的实现和应用(李治军)遇到的神奇问题

编写完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 方式调用这些函数,它们工作起来就趋于正常了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值