## ucore_os_lab port status #### lab1: - [x] Basic init:LocalAPIC,IOAPIC,GDT,PIC - [x] Device:Keyboard,Serial,PIT,IDE - [x] Interrupt & Trapframe - [x] ※ Muilt-core startup #### lab2: Physical memory management - [x] Frame allocator:Naive - [ ] Frame allocator:First Fit,Best Fit,Worst Fit,Buddy,Slab - [x] Higher half kernel space - [x] Kernel remap #### lab3: Virtual memory management - [x] Page table - [x] Heap allocator:LinkedList (Rust crate) - [x] ※ Stack allocator:Naive - [x] MM & VMA - [x] Copy on write - [ ] Swap #### lab4: Kernel thread - [x] idleproc - [x] initproc - [x] fork - [ ] Scheduler thread #### lab5: User thread - [x] Run xv6 64bit user programs:See the list below - [x] Run ucore 32bit user programs:See the list below #### lab6: Schedule - [x] Schedule framework - [x] RRScheduler - [x] StrideScheduler #### lab7: Synchronization - [x] Mutex:Rust core lib built-in - [ ] Semaphore - [ ] Monitor - [ ] Dinning Philosophers Problem #### lab8: File system - [x] Simple file system - [x] Load user programs from .img - [ ] FS framework for process - [ ] Device IO ## uCore 32bit user programs pass status - [ ] badarg - [ ] badsegment - [x] divzero - [x] exit - [x] faultread - [x] faultreadkernel - [x] forktest - [x] forktree - [x] hello - [ ] ls - [x] matrix - [ ] pgdir - [x] priority - [ ] sh - [x] sleep - [x] sleepkill - [x] softint - [x] spin - [x] testbss - [x] waitkill - [x] yield ## xv6 64bit user programs pass status - [ ] cat - [ ] chmod - [ ] echo - [ ] forktest - [ ] grep - [ ] init - [ ] kill - [ ] ln - [ ] ls - [ ] mkdir - [ ] rm - [ ] sh - [ ] stressfs - [ ] usertests - [ ] wc - [ ] zombie