Skip to content

rfhits/Operating-System-BUAA-2021

Repository files navigation

Operating-System-BUAA-2021

keywords: BUAA OS 2021 北京航空航天大学 6系 计算机 操作系统 2021

2021春北航操作系统

写在前面🖊

本repo不提供代码,因为网络上的轮子实在是太多了,只记录学习笔记以及上机内容。

欢迎fork&pull request。

任务列表✔

如果感到有必要对整个lab进行全面的检查,这些任务列表可以方便你逐个比较。当然,可以用base64把自己的repo弄到本地,再使用专业的比较软件(指Beyond Compare)进行对比。

lab1

  1. 请修改include.mk
  2. 完成 readelf/readelf.c
  3. 填写tools/scse0_3.lds中空缺的部分,将内核调整到正确的位置上
  4. 完成boot/start.S
  5. 补全lib/print.c: lp_Print()

lab2

  1. 完成include/queue.h: LIST_INSERT_AFTER(), LIST_INSERT_TAIL()
  2. 完成mm/pamp.c: mips_detect_memory()
  3. 完成mm/pamp.c: page_init()
  4. 完成mm/pamp.c: page_alloc, page_free()
  5. 完成mm/pamp.c: boot_pgdir_walk, pgdir_walk()
  6. 实现mm/pamp.c: boot_map_ segment()
  7. 完成mm/pamp.c: page_insert()
  8. 完成mm/tlb_asm.S: tlb_out()

lab3

  1. mm/pmap.c: mips_vm_init()
  2. lib/env.c: env_init()
  3. lib/env.c: envid2env()
  4. lib/env.c: env_setup_vm()
  5. lib/env.c: env_alloc()
  6. lib/env.c: load_icode_mapper()
  7. lib/kernel_elfloader.c: load_elf()lib/env.c: load_icode()
  8. lib/env.c: env_create(), env_create_priority()
  9. 完成init/init.c
  10. lib/env.c: env_run()
  11. 完成boot/start.S
  12. tools/scse0_3.lds
  13. lib/kclock.c: kclock_init()
  14. lib/sched.c: sched_yield()

lab4

  1. 完成user/syscall_wrap.S: msyscall()
  2. 完成lib/syscall.S: handle_sys()
  3. 实现lib/syscall_all.c: sys__mem_alloc()
  4. 实现lib/syscall_all.c: sys_mem_map()
  5. 实现lib/syscall_all.c: sys_mem_unmap()
  6. 实现lib/syscall_all.c: sys_yield()
  7. 实现lib/syscall_all.c: sys_ipc_recv(), sys_ipc_can_send()
  8. 填写lib/syscall_all.c: sys_env_alloc()
  9. 填写user/fork.c: fork()中关于sys_env_alloc的部分和“子进程”执行的部分
  10. 填写user/fork.c: duppage()
  11. 完成lib/traps.c: page_fault_handler()
  12. 完成lib/syscall_all.c: sys_set_pgfault_handler()
  13. 填写user/fork.c: pgfault()
  14. 填写lib/syscall_all.c: sys_set_env_status()
  15. 填写user/fork.c: fork()中关于“父进程”执行的部分

lab5

  1. 完成sys_write_dev(), sys_read_dev();在user/lib.h, user/syscall_lib.c 中完成相应系统调用的接口。
  2. 完成fs/ide.c: ide_write(), ide_read()
  3. 完成fs/fs.c: free_block()
  4. 完成fs/fsformat.c: create_file()
  5. 完成fs/fs.c: diskaddr()
  6. 实现map_block(), unmap_block()
  7. 补全fs.c: dir_lookup()
  8. 完成user/file.c: open()
  9. 完成user/fd.c: read()
  10. 完成user/fsipc.c: fsipc_remove()user/file.c: remove()fs/serv.c: serve_remove()

lab6

  1. 修改user/fork.c: duppage()
  2. 填写user/pipe.c: piperead(), pipewrite(), _pipeisclosed()
  3. 修改user/pipe.c: pipeclose()user/fd.c: dup()
  4. 再次修改user/pipe.c: _pipeisclosed()
  5. 完成user/spawn.c: spawn(), usr_load_elf()
  6. 完成user/sh.c: runcmd()

挑战性任务💪

lab4_challenge-信号量实现-lpxofbuaa

lab5_challenge-内存保护-VOIDMalkuth

往届代码💩

因为每年课程要求可能会有变化,所以尽量看时间较近的代码。

login256学长的代码也不一定能完全适用于2020春的课程要求,在lab3的进程调度中就初见端倪。

2020春-refkxh的代码

2020春-C7ABT的代码

2019春-login256的代码

2019春-Eadral的代码

代码解析和思考题🧠

lab1~6实验报告-shh

lab1~6实验报告-VOIDMalkuth

lab1~6实验报告-hky1999

lab1

lab1思考题解答-moc-85422729

lab1思考题解答-Suxy-99

lab2

lab2-code_view-riyuejiuzhao

Lab2-code_view-littlenyima

lab2思考题解答-moc-85422729

lab2思考题解答-Suxy-99

lab3

lab3-code_view-riyuejiuzhao

lab3-code_view-FFChyan

lab3-code_view-SivilTaram

lab3-code_view-CindyZhou

lab3-code_view-puublog

lab3思考题解答-blshuidi

lab3思考题解答-moc-85422729

lab3思考题解答-Suxy-99

lab4

lab4-code_view-FFChyan

lab4-code_view-Nortonary

lab4-code_view-CindyZhou

lab4-code_view-sharinka0715

lab4-code_view-SivilTaram

lab4-code_view-p_wk

lab4-Thinkings-Suxy-99

lab4-Thinkings-blshuidi

lab5

lab5-code_view-Nortonary

lab5-Thinkings-blshuidi

lab6

鸽了

汁源入口😍

2021春-习题汇总-rfhits

2017春-期中试卷部分解答-super_dmz

2019春-课程笔记-Jay1Zhang

参考资料📕

编译链接原理

linux下输入输出重定向

Linux中GCC编译器运行第一个程序"Helloworld!"

Makefile的写法-bilibili-正月点灯笼

致谢❤️

感谢所有为这门课提供资料、奉献精力的老师、助教、学长和大佬们!

Releases

No releases published

Packages

No packages published