-
Notifications
You must be signed in to change notification settings - Fork 8
Description
안녕하세요 운영체제 조교입니다.
FTL 구현시 고려해야할 사항에 대한 추가 안내입니다.
-
Greedy 정책은 invalid 페이지 수가 가장 많은 블록을 victim으로 선택합니다. 만약 invalid 페이지 수가 동일한 블록이 여러 개일 경우, 블록 번호가 가장 작은 블록을 선택합니다.
-
GC 수행 시, 새로운 free block을 active block으로 할당한 뒤, victim block에 존재하는 valid 페이지들을 해당 active block으로 먼저 복사합니다. 이후 사용자 요청에 따른 데이터를 그 위치에 이어서 기록합니다.
-
새로 할당된 active block은, write가 실제로 발생하기 전까지는
is_free = true상태로 유지되며, write가 이루어지는 시점에is_free = false로 전환됩니다. -
active block이 가득 찬 경우에는 0번 블록부터 순차적으로 탐색하여 가장 먼저 발견되는 free block을 새로운 active block으로 할당합니다.
-
모든 페이지가 valid하여 GC를 수행하더라도 유효하지 않은 페이지가 없어 공간을 회수할 수 없는 경우에는, 오류 메시지를 출력하도록 처리하시기 바랍니다. 단, 과제에 제공된 워크로드에서는 해당 상황이 발생하지 않을 수 있습니다.
-
GC 중 새로 할당된 active block에 남은 공간이 존재할 경우, 해당 블록은 이후 write 시에 계속해서 사용할 수 있습니다. 별도의 처리는 필요하지 않습니다.
-
GC 수행 시에는 현재 active block도 victim block 탐색 대상에 포함됩니다. 단, GC 도중 active block이 변경되기 전까지는 기존 active block 상태를 유지해야 합니다.
구현하시는데 참고가 되기를 바라며, 추가적인 문의가 있을 경우 언제든지 연락주시기 바랍니다.
감사합니다.