The requirements of labs are in Requirements
Outline:
- pstree: A pstree to display processes.
- libco: Implement coroutine.
- sperf: Be able to display the running time of different system calls dynamically.
- frecov: A naive bmp file recovery program targeted to FAT.
- libkvdb: A naive Crash-Consistent key-value database.
- kalloc: Memmory allocation and release fucntions(like malloc and free). Doubly Linked List is used to manage a big chunk of memory.
- kthreads: Implement necessary components in kernel(not Linux kernel) for multithreading. Spinlock, semaphore and cpu scheduling are included.
- vfs: Provide an abstraction between applicaitons and disks. Implement a filesystem like ext2, which supports hard link.