Subdirectories and Soft Links
- 계층적인 이름 공간을 구현해야함. 기본 파일 시스템의 경우, 모든 파일이 단일 디렉토리 (루트) 에 저장되었음
- 이제 디렉토리 엔트리가 파일 또는 다른 디렉토리를 가리키도록 수정해야 함.
- 다른 파일들처럼, 디렉토리 또한 원래 크기를 초과하여 확장될 수 있도록 만들어야 함
- 기본 파일 시스템에서는 파일 이름에 14자 제한이 있고, 각각의 이름에 대해서 이 제한을 유지하거나 확장할 수 있음
- 전체 경로 이름은 14자를 넘을 수 있게 만들어야 함
- 각 프로세스에 대해 별도의 현재 디렉토리 유지해야함
- 시작 시, 루트 디렉토리를 시작 프로세스의 현재 디렉토리로 설정해야함
- 한 프로세스가 fork 시스템콜로 다른 프로세스를 시작할 때 하위 프로세스는 상위 프로세스의 현재 디렉토리를 상속받는다.
- 상속 받은 후에는 두 프로세스의 현재 디렉토리가 서로 독립적이기 때문에 각 디렉토리의 대한 변경은 서로에게 영향을 미치지 않음
- 호출자가 파일 이름을 제공하는 모든 위치에서 절대 또는 상대 경로 이름을 사용할 수 있도록 기존 시스템 호출을 업데이트 해야함
- 디렉토리 구분 기호는 슬래시( ‘/’ )
- 유닉스와 동일하게, 특수한 파일 이름 ‘.’와 ‘..’를 지원해야 함
- 디렉토리를 열 수 있도록
open 시스템 콜을 업데이트해야함
- 기존 시스템 콜들 중에서, close만 디렉토리에 대한 file descriptor를 받을 수 있도록 해야함
- 일반 파일 뿐 아니라, (루트 디렉토리를 제외한) 빈 디렉토리를 삭제할 수 있도록
remove 시스템 콜을 업데이트 해야함
- 당신은 ‘프로세스에 의해 열려있는 디렉토리’ 또는 ‘프로세스의 현재 작업 디렉토리’의 삭제를 허용할 것인지 결정할 수 있음
- 이것들을 허용하는 경우, 삭제된 디렉토리에서 파일(’.’ 및 ‘..’ 포함)을 열거나 새 파일을 만드는 시도는 허용되지 않아야 함
출처 : kaist pintos 공식 깃북(https://casys-kaist.github.io/pintos-kaist/)