본문 바로가기

Job Notes/File System

(45)
YAFFS Write 위 그림은 파일의 데이터를 NAND Flash에 write할 때의 Flowchart를 나타낸 것입니다. ① Write 정보 계산 Write 할 chunk, offset, count를 계산합니다. ② Cache에 저장 여유 공간이 있으면, Cache에 해당 데이터를 저장합니다. ③ NAND Flash에 저장 Cache에 저장된 데이터를 NAND flash에 write 합니다.
YAFFS Create 위 그림은 YAFFS에서 Object를 만드는 과정을 Flowchart로 나타낸 것입니다. ① Create New Object 새로운 Object를 만들어 ObjectID를 부여하고, 멤버들을 초기화 합니다. ② Object Member setting 주어진 인자 값을 사용하여 Object의 멤버들을 설정하고, 부모 디렉토리에 추가 시킵니다. ③ Update Object Header 만들어진 Object의 Header를 생성하고 이를 flash에 저장합니다.
YAFFS Scan 위 그림은 YAFFS Mount 시 NAND Flash Memory를 Scan하여 Object Tree를 형성하는 것을 FlwChart로 나타낸 것이다. 위 그림은 YAFFS Scan 시 NAND Flash에 저장된 Object Header를 Scan하여 저장하는 것을 나타낸 것이다.
YAFFS Mount Processing 위 그림은 YAFFS Mount processing을 Flowchart로 나타낸 것입니다. ① Check & Initialization 주어진 YAFFS Device의 기본적인 멤버 값들을 검사하고, 추가적으로 멤버 값들을 초기화하고 계산합니다. ② CheckPoint Restore YAFFS2이면 CheckPoint의 유무를 확인하고 CheckPoint가 있으면 이를 사용하고, CheckPoint가 없거나 YAFFS1이면 NAND Flash 전체를 Scan합니다. CheckPoint란 mount 시간을 줄이기 위해 FileSystem 동작 시 사용되는 Device와 Object를 NAND flash에 저장한 것입니다. 이후 mount 시 NAND flash를 scan 대신 CheckPoint를 읽어옵니..
YAFFS Memory 구조 YAFFS에서 NAND Flash에 저장되는 데이터의 형태와 파일의 구조는 위와 같다. NAND Flash의 기본 단위는 page와 spare이며, 이들이 모여서 block을 만든다. YAFFS에서는 page에 해당하는 것을 chunk, spare에 해당하는 것을 tag라 부른다. chunk에는 object header와 파일 데이터를 저장하며, tag에는 chunk와 object의 정보들을 저장한다. 하나의 파일은 여러 개(최소 2개)의 chunk와 tag로 이루어지며, 똑 같은 object ID값을 가진다. 여기서 여러 개의 chunk는 chunk ID라는 숫자로 구분하며, chunk 0에는 기본적으로 해당 object의 Header값을 저장한다.