2021 - pintos project
2021.09. ~ 2021.12.
- Argument Parsing
- User Memory Access
- System Call
- File Descriptor
- System Call
- Synchronization in File System
- Alarm Clock
- Prioirty Scheduling
- Advanced Scheduler
- Page Table & Page Fault Handler
- Disk Swap
- Stack Growth
- Extensible File & File Growth
- Subdirectory
- Buffer Cache
- 초기 Pintos는 간단한 OS Framework로 booting, application 실행, power off 만 가능
- Pintos 환경에서 입력 받은 Argument를 Parse해 User Stack에 쌓고 메모리에 access할 때 parse한 명령어 중 전달 받은 주소 값이 적절한 공간을 사용하는지 확인하는 작업을 수행
- System Call인 halt, exit, exec, write, read 명령어를 각각 구현
- Blocked 상태의 thread를 깨우기 위해 timer interrupt에서 깨울 thread가 있다면 unblock함수를 통해 unblock 후 list에 thread를 remove하는 방식을 추가
- 기존의 scheduling 방식일 때 한 thread가 cpu를 독식하는 문제를 해결하기 위해 Priority Scheduling으로 변경했고 추가로 효율적인 MLFQS를 구현
- Physical 메모리에서 벗어난 공간을 사용했을 때 가상 메모리 공간인 virtual memory를 구현해 page table을 만들어서 page fault를 처리
- 메모리 공간이 부족하다면 LRU 알고리즘 기반으로 Disk를 구현
- Disk에서 비효율적으로 block을 read, write한 것을 buffer cache를 구현해 효율성 보장
C, Data Structure(List, Hash Table, Bitmap)