/ Lesson  

Nachos源码解读笔记

摘录自网上广泛流传的《山东大学nachos源码解读》

1.Nachos内核启动

1.1不同project使用的内核不同
1.2内核可以通过Kernel.kernel调用

2.Nachos参数解析、设备创建、Debug方法

2.1Nachos设备创建:Machine中的createDevices方法,依次创建中断、定时器等。

3.Nachos中断

4.Nachos内核线程及调度算法

4.1 TCB:每个nachos线程对应一个TCB,负责处理Nachos线程调度的部分底层细节。
privilege对象赋给TCB类执行特权操作的权利。
4.2每个调度器对应一个ThreadQueue子类。无论是线程的全局就绪队列,还是实现join方法时的等待队列,其队列都应该从调度器中获取。
入队:waitForAccess,需要人工执行sleep
出队:nextThread,出队后可执行run方法运行
4.3对于PriorityScheduler提供了改变优先级的方法。优先级通过ThreadState包装KThread实现,增加优先级这一属性。在题目中实现自己的优先队列PriorityQueue,并选取合适的数据结构,可以让出队时间变为O(logn)