ucore 操作系统实验 lab6

Reading time ~1 minute

好不容易挤出时间,总算是把lab6完成了,这个lab倒也不算难,不过坑倒是有不少。

首先是有个小坑,在初始化proc的时候,要将proc->run_link初始化为一个空链表,而不是NULL,虽然初始化为NULL可以过stride算法,但不知道为什么RR算法的时候,他非要assert是空链表才干……

不过前面那个坑都算是小的了,一查就知道了,后面的都是注释在坑。

首先是stride_dequeue里面,不知道是注释故意的,还是忘记了,没有写出要把rq的proc_num减下来,虽说这样对lab6的运行没有什么影响,但总归错了还是不好的。

然后不得不提的就是trap.c中时间中断的处理,注释里写着just add ONE or TWO lines of code,于是毫不犹豫的按其要求调用run_timer_list,结果在最后测试priority就惨死了。因为lab5遗留下来的部分,每个100 ticks都会将当前进程的need_resched设成1,放弃CPU,直接就影响了最后运行时间的测量,都不想说什么了。

最后可能需要注意的就是,可能在lab6要求修改的代码全部改好之后,还是会过不了,看下priority.c的代码便会发现,很可能是精度导致的,我们只需要将priority.c中的MAX_TIME改大,使其运行足够长的时间即可。

然后还是老规矩,附上lab6的实验报告和修改的代码。

lab6.zip

挂载网络文件夹后网络故障时文件操作命令卡死

挂载 NFS 或者 Samba 的时候,经常会由于网络故障导致挂载好的链接断掉。此时如果尝试进行 ls、cd、df 等各种命令,只要与此目录沾上边,就会卡住。如果使用了类似 oh-my-zsh 这种配置的,只要在网络目录中,弹出命令提示符前就会直接卡住。这个时候第一反应就是...… Continue reading

路由折腾记 第四弹

Published on September 02, 2017