Lesson |

NachosProject2笔记

UserKernel 继承自 ThreadedKernel。整个需要装入的进程是一个 machine.CoffSection 类型的对象对 java 文件操作进行包装,向上提供为 StubFileSystem 的接口。 用户进程是通过UserProcess.load 方法将程序载入内存的。而每个可执行文件用一个 Coff 对象包装。对传入的每个文件名, load 方法先根据文件名读取该文件,然后将文件作为构造方法参数构造一个 Coff 对象,在 Coff 对象中,会对文件进行 ...

Surika
Surika
2 min read
Lesson |

Nachos第六周课堂笔记User-level processes

系统调用运行时刻的应用程序如何陷入内核 coff:Unix世界中的格式noff:Nachos专用格式,一个简化版的二进制文件格式 Noff header文件头:从一开始开始,包含了各个段的指针,描述其他部分。unix用magicnumber标识文件类型。nachos现版本每次只支持一个进程运行,因为逻辑地址和物理地址是一对一的。若要支持多道程序运行,进程的切换需要写页面blabla,用nachos另外两个内核函数Nachos的程序跑在虚拟的MIPS架构的Machine上 ...

Surika
Surika
1 min read
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线程调度的部分底层细节。privi ...

Surika
Surika
1 min read
Lesson |

NachosProject1笔记

assert:程序一般分为Debug 版本和Release 版本,Debug 版本用于内部调试,Release 版本发行给用户使用。断言assert 是仅在Debug 版本起作用的宏,它用于检查“不应该”发生的情况。在运行过程中,如果assert 的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert)。 内核线程与用户线程:转自:http://col1.blog.163.com/blog/static/1909775192012719114 ...

Surika
Surika
5 min read
Lesson |

Nachos课设要求翻译 Ⅰ

虽然不是看不懂,但密密麻麻的英语小字实在是辣眼睛,还是翻译一下,顺便逼自己加快进度别懒了。。。_(:з」∠)_ Phase 1 为内核进程建立线程系统Tasks:1.(5%,5行,5/100)实现KThread.join() 注意join方法只能被调用一次,即使是不同的线程也禁止二次调用。2.(5%,20行,10/100)直接实现条件变量,通过开关中断来提供原子性。 已经用信号量实现了一个例子,你的任务是不用信号量来完成等价的实现。 可以用锁,即使锁也是间接 ...

Surika
Surika
5 min read