xv6操作系统运行出现cpu卡死的解决方法

xv6操作系统bug:cpu运行卡死解决方案
在xv6中出现了下图的bug,然后就cpu运行卡死了。对此,我总结了三条解决方案,希望以下建议可以帮到大家。如果有别的bug解决方法,可以上传上来,我及时更新,争取统一帮到更多的人。在这里插入图片描述

解决办法:

我总结了三条,大家可以尝试。

  1. 系统调用syscall.c中带有参数了,没有按照要求写void,对于带有参数的系统调用创建,可以按照我的另一篇博客。在操作系统分栏里面就可以找到。
  2. 第二个解决办法,也是我真实遇到的。看上述图片的左半图片,wakeup1中添加的changestate函数,先不在意他的功能啥的,主要是我添加的时候和原来的if下面的语句并列了,但是却忘记了添加{}讲他俩括起来,所以导致系统运行的时候内部调用出现bug,导致cpu卡死。加一个大括号,将这两个语句括到一起就可以了。
  3. makefile中有一条ifndef cpus下面那行设置成=1 默认的是=2

建议

对于操作系统的bug,真的是头痛。我总结的一个小办法就是把自己添加的函数一个一个的注释掉,然后再一个一个的加上去运行,这样就可以发现到底是哪个函数出现了bug,或者哪个过程出现了bug。

猜你喜欢

转载自blog.csdn.net/weixin_43661569/article/details/106209740