keywords: BUAA OS 2021 北京航空航天大学 6系 计算机 操作系统 2021
2021春北航操作系统
本repo不提供代码,因为网络上的轮子实在是太多了,只记录学习笔记以及上机内容。
欢迎fork&pull request。
如果感到有必要对整个lab进行全面的检查,这些任务列表可以方便你逐个比较。当然,可以用base64把自己的repo弄到本地,再使用专业的比较软件(指Beyond Compare)进行对比。
- 请修改
include.mk
- 完成
readelf/readelf.c
- 填写
tools/scse0_3.lds
中空缺的部分,将内核调整到正确的位置上 - 完成
boot/start.S
- 补全
lib/print.c: lp_Print()
- 完成
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()
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.lds
lib/kclock.c: kclock_init()
lib/sched.c: sched_yield()
- 完成
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()
中关于“父进程”执行的部分
- 完成
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()
- 修改
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的进程调度中就初见端倪。
鸽了
Linux中GCC编译器运行第一个程序"Helloworld!"
感谢所有为这门课提供资料、奉献精力的老师、助教、学长和大佬们!