美文网首页
Nachos小问题汇集

Nachos小问题汇集

作者: 草稿纸反面 | 来源:发表于2016-11-17 15:24 被阅读81次
  • 我写好了实验要求的方法不知道怎么测试怎么办?

  • 用了new ThreadQueue(),没法初始化怎么办?

Q1.我写好了实验要求的方法不知道怎么测试怎么办?

  • 简单的说就是....

    在KThread中找到selfTest,然后在里面写自己的方法就可以了,如下就是写对实验一join()方法的测试

      public static void selfTest() {
      Lib.debug(dbgThread, "Enter KThread.selfTest");
      KThread th = new KThread(new PingTest(1)).setName("forked thread");
      th.fork();
      th.join();
      new PingTest(0).run();
      }
    
  • 如果你一定想要知道为什么呢....(这不是为难我吗ヽ(ー_ー )ノ)总的来说呢,就是....

    我们来看Nacho整个系统,它的执行是从Machine.java 的 main 方法开始主要进行的是处理启动参数、载 入配置文件、设置工作目录、安装安全管理器、创建设备、并启动第一块 TCB 等操作

      new TCB().start(new Runnable() {
      public void run() { 
      autoGrader.start(privilege); 
      }
      });
    

    在 TCB 启动时会调用 AutoGrader 的 start 方法,其中启动了内核。
    在 AutoGrader 的 start 方法执行时,AutoGrader 首先会解析启动命令传入的参数,接着 执行初始化操作,然后从配置文件中读取 Kernel.kernel 的值,构造内核,并且执行内核 的初始化方法。紧接着,执行 run 方法,内含 kernel
    的自检、run 方法以及最后的终止。

    重点来了,看下面,有一个selfTest,尝试把它注释掉以后KThread中的selfTest里面的东西也就不执行了,所以这两个应该是对应的关系。(其实里面的Kernel比较复杂,大家可以再研究一下)

      void run() {
      kernel.selfTest();
      kernel.run();
      kernel.terminate();
      }
    

Q2.用了new ThreadQueue(),没法初始化怎么办?

  • 遇到问题
    不知道别人是什么情况,按照我简单的直觉,哟,这不是一个简单的java 类吗,new一个就好啦。兴冲冲地new了一个..恩..它就给我看这个!

         waitQueue=new ThreadQueue() {
          @Override
          public void waitForAccess(KThread thread) {
              // TODO Auto-generated method stub
          }
          @Override
          public void print() {
              // TODO Auto-generated method stub
          }
          @Override
          public KThread nextThread() {
              // TODO Auto-generated method stub
              return null;
          }
          @Override
          public void acquire(KThread thread) {
              // TODO Auto-generated method stub
              
          }
      };
    

    然后我运行了一下程序,它执行不下去了,于是我意识到应该不是这样的


  • 解决问题

        waitQueue=ThreadedKernel.scheduler.newThreadQueue(false);
    

像上面那样解决就初始化了。

  • 怎么想到的
    KThread里面本身就有一个readyQueue,也就是预备队列,它就是一个ThreadQueue的实例,模仿它就好了( • ̀ω•́ )
  • 更深的东西...
    没有了哈哈哈哈哈哈哈,找了一张大神的图自己感受

最后

附上我的博客( • ̀ω•́ )

相关文章

  • Nachos小问题汇集

    我写好了实验要求的方法不知道怎么测试怎么办? 用了new ThreadQueue(),没法初始化怎么办? Q1.我...

  • 几个不错的 appetizer (开胃菜)

    nachos - 烤干酪辣味玉米片 Nachos is a dish from northern Mexico t...

  • 山东大学操作系统课程设计实验四——文件系统扩充

    实验四 扩展文件系统(lab4) 实验目的: 扩展Nachos的文件系统。Nachos的文件系统是一个简单并且能力...

  • nachos 。。。不认真版本

    ## 一些小话 前段时间因为一些杂七杂八的事情 被逼无奈 赶各种作业 再加上某个姓张的贱人 欺骗我说计网...

  • NACHOS初探 环境安装实录

    第一步 环境配置 环境:Ubuntu 16.04 32位下载nachos到文件夹下,解压下载传送门 试图安装编译环...

  • 汇集

    溪水虽少 汇集起来 就能成为奔腾的大河

  • 汇集

    你可以一辈子不登山,但你心中一定要有座山。它使你总往高处爬,它使你总有个奋斗的方向,它使你任何一刻抬起头,都能看到...

  • 汇集

    香奈儿女士曾经说过“擦错香水的女人是没有未来的”为什么这样讲呢?时尚的艺术就在制造幻觉,在你不知道的下一秒可能就能...

  • 汇集

    “嘿,快看!那边躺着一个人。”一个瘦小的男子叫喊道! “快去看看,问一下是什么职业。”一名高个的男子应声而来。 于...

  • 数据汇集-数据汇集范围

    整体思路 数据仓库建设的第一步即数据汇集。在数据汇集时总要先明确数据要同步的范围。一般情况下,只有有意义的数据才会...

网友评论

      本文标题:Nachos小问题汇集

      本文链接:https://www.haomeiwen.com/subject/eridpttx.html