cs144笔记
cs144 Lab 0到Lab 7所有笔记。
这一次的Lab主要实现文件系统,然后在此文件系统上加载可执行文件并执行,并基于此实现了一个简易的shell。
Lab4主要分为三个部分。第一部分扩展JOS支持多CPU,实现轮转调度,添加了几个基本的进程管理的系统调用。第二部分实现了一个Unix-like的fork()。第三部分是抢占式多任务处理和进程间通信。
之前在做6.828Lab的时候,就看过elf文件。维基百科上面写了除了有elf的File header,还有Program header和Section header。对于后面这两者我当时分不清,在kern/env.c/load_icode()
里面,加载一个可执行文件到进程中的那部分也不太清楚,抄的。最近在看《程序员的自我修养——链接、装载与库》这本书,解决了一些疑惑,所以记录一下。
Lab3主要分为两个部分,第一部分是创建environment
,也即是process
进程。创建后会加载一个程序到第一个进程中,然后运行。第二部分是处理系统调用/中断/异常。
Lab2分为三个部分,第一个部分是Physical Page Management,第二个部分是Virtual Memory,第三部分是Kernel Address Space。
由于毕业设计里面要用到LSTM,但是之前没搞懂怎么用,输入输出的格式,所以在这记一下。