今天继续深入这个系统。
首先,在main.cc中,主要就是这个处理参数,其中,q是设置testnum,t是设置threadnum(线程数),n就是设置n(节点个数),e是设置err_type(错误类型),有一个default,还是设置testnum。然后就进入了threadtest函数。
在threadtest.cc中,就是主要功能了,它说设置测试号为2,意思是
里面加了不少自己编写的函数,例如Dllistthread, threadtest2, 值得注意的是,threadtest也就在这里,其实,testnum表示的是测试编号,例如它是2,就执行了threadtest2这段代码,然后我们就执行threadtest2这段代码。
在threadtest2这段代码中,功能很简单,首先设置一个出错提示链表,然后根据threadnum数量,调用new thread来创建这些线程,创建出来后就fork到dllistthread一个函数,是什么意思呢?这个函数有一个int参数,它里面就是insert和remove,而里面使用的dllist是一个全局变量,应该就是不断的存取这个导致的出错。
在insert和remove函数中,它会有随机插入一个数,remove呢,也会随机移走一个数,同时都会打印出来。
它这里出错是什么原因呢,就是你在插入或者删除的时候,突然被切换了,插入的时候突然切换成别的插入和删除,很有可能导致节点丢失或者其他的问题,这个就是实验的目的所在。
nachos操作系统(二)
最新推荐文章于 2024-04-23 10:03:14 发布