This project is the programming assignment of the class ICS (Introduction to Computer System) in Department of Computer Science and Technology, Nanjing University.
For the guide of this programming assignment, refer to https://nju-projectn.github.io/ics-pa-gitbook/ics2022/
This repo use riscv64 arch.
Progress (2023):
- pa1: sdb [8.7]
- pa2: simple machine [8.26]
- pa2-1: decoder [8.11]
- pa2-2: infrastructure(2), all tess pass [8.25]
- advanced itrace: show register value
- mtrace
- ftrace
- diff test
- pa2-3: IOE [8.26]
- serial
- timer
- dtrace
- keyboard
- VGA
- audio
- pa3: batch OS [8.30]
- pa3-1: hardware support [8.27]
- csr registers and operations
- trap and context switch
- etrace
- pa3-2: user programs and syscalls [8.28]
- load user programs
- syscall: exit, yield, write(0/1), brk
- pa3-3: FS, VFS, devices [8.30]
- FS operations
- IOE: serial, timer, keyboard, vedio
- TODO: other VFS directories
- pa3-1: hardware support [8.27]
- pa4: TDM OS (Time-Division Multiplexing) [9.12]
- pa4-1: multiplexing [9.8]
- context switch
- kernel threads and user processes
- all tests pass
- pa4-2: VME [9.11]
- VME Support
- THIS IS THE MOST DIFFICULT PART, for more info like suggestions and bug record, check ./doc
- S/U mode support, stack context switch
- VME Support
- pa4-3: TIE [9.12]
- time-division multiplexing
- preempt multiplexing
- pa4-1: multiplexing [9.8]
Beyond normal contents, TODOs:
- Optimization:
- rv64 program instruction analysis, adjust decoding order [+11 pts]
- refactor decode operation with hash decoder and force jump table [+10 pts]
- this is as far as we can do, cannot be equal to 1
Documentation is in ./doc