Operating-System-BUAA-2021
Operating-System-BUAA-2021 copied to clipboard
- Operating-System-BUAA-2021
- 写在前面🖊
- 任务列表✔
- 往届代码💩
- 代码解析和思考题🧠
- 汁源入口😍
- 参考资料📕
- 致谢❤️
Operating-System-BUAA-2021
keywords: BUAA OS 2021 北京航空航天大学 6系 计算机 操作系统 2021
2021春北航操作系统
写在前面🖊
本repo不提供代码,因为网络上的轮子实在是太多了,只记录学习笔记以及上机内容。
欢迎fork&pull request。
任务列表✔
如果感到有必要对整个lab进行全面的检查,这些任务列表可以方便你逐个比较。当然,可以用base64把自己的repo弄到本地,再使用专业的比较软件(指Beyond Compare)进行对比。
lab1
- 请修改
include.mk - 完成
readelf/readelf.c - 填写
tools/scse0_3.lds中空缺的部分,将内核调整到正确的位置上 - 完成
boot/start.S - 补全
lib/print.c: lp_Print()
lab2
- 完成
include/queue.h: LIST_INSERT_AFTER(), LIST_INSERT_TAIL() - 完成
mm/pamp.c: mips_detect_memory() - 完成
mm/pamp.c: page_init() - 完成
mm/pamp.c: page_alloc, page_free() - 完成
mm/pamp.c: boot_pgdir_walk, pgdir_walk() - 实现
mm/pamp.c: boot_map_ segment() - 完成
mm/pamp.c: page_insert() - 完成
mm/tlb_asm.S: tlb_out()
lab3
mm/pmap.c: mips_vm_init()lib/env.c: env_init()lib/env.c: envid2env()lib/env.c: env_setup_vm()lib/env.c: env_alloc()lib/env.c: load_icode_mapper()lib/kernel_elfloader.c: load_elf()和lib/env.c: load_icode()lib/env.c: env_create(), env_create_priority()- 完成
init/init.c lib/env.c: env_run()- 完成
boot/start.S tools/scse0_3.ldslib/kclock.c: kclock_init()lib/sched.c: sched_yield()
lab4
- 完成
user/syscall_wrap.S: msyscall() - 完成
lib/syscall.S: handle_sys() - 实现
lib/syscall_all.c: sys__mem_alloc() - 实现
lib/syscall_all.c: sys_mem_map() - 实现
lib/syscall_all.c: sys_mem_unmap() - 实现
lib/syscall_all.c: sys_yield() - 实现
lib/syscall_all.c: sys_ipc_recv(), sys_ipc_can_send() - 填写
lib/syscall_all.c: sys_env_alloc() - 填写
user/fork.c: fork()中关于sys_env_alloc的部分和“子进程”执行的部分 - 填写
user/fork.c: duppage() - 完成
lib/traps.c: page_fault_handler() - 完成
lib/syscall_all.c: sys_set_pgfault_handler() - 填写
user/fork.c: pgfault() - 填写
lib/syscall_all.c: sys_set_env_status() - 填写
user/fork.c: fork()中关于“父进程”执行的部分
lab5
- 完成
sys_write_dev(), sys_read_dev();在user/lib.h, user/syscall_lib.c中完成相应系统调用的接口。 - 完成
fs/ide.c: ide_write(), ide_read() - 完成
fs/fs.c: free_block() - 完成
fs/fsformat.c: create_file() - 完成
fs/fs.c: diskaddr() - 实现
map_block(), unmap_block() - 补全
fs.c: dir_lookup() - 完成
user/file.c: open() - 完成
user/fd.c: read() - 完成
user/fsipc.c: fsipc_remove(),user/file.c: remove(),fs/serv.c: serve_remove()
lab6
- 修改
user/fork.c: duppage() - 填写
user/pipe.c: piperead(), pipewrite(), _pipeisclosed() - 修改
user/pipe.c: pipeclose()和user/fd.c: dup() - 再次修改
user/pipe.c: _pipeisclosed() - 完成
user/spawn.c: spawn(), usr_load_elf() - 完成
user/sh.c: runcmd()
挑战性任务💪
lab4_challenge-信号量实现-lpxofbuaa
lab5_challenge-内存保护-VOIDMalkuth
往届代码💩
因为每年课程要求可能会有变化,所以尽量看时间较近的代码。
login256学长的代码也不一定能完全适用于2020春的课程要求,在lab3的进程调度中就初见端倪。
代码解析和思考题🧠
lab1
lab2
lab3
lab4
lab5
lab6
鸽了
汁源入口😍
参考资料📕
Linux中GCC编译器运行第一个程序"Helloworld!"
致谢❤️
感谢所有为这门课提供资料、奉献精力的老师、助教、学长和大佬们!