2009. 5. 16. 15:36
     

이번 포스팅은 거의 2주 만에 하는 것 같군요. ;) 이번에는 파일 시스템을 구현하다 보니 양이 많아서 이제야 겨우 끝났습니다. 일단 인증샷부터 보시죠. ;)

<MINT 파일 시스템을 구동한 동영상>

MINT 파일 시스템은 FAT 파일 시스템처럼 클러스터를 링크로 연결하는 형태로 되어 있습니다. 사실 FAT 파일 시스템을 쓸까도 고민했었는데, FAT 파일 시스템을 정리하고 구현하려면 양이 많아질 것 같고, 그렇다고 정리를 안 할 수는 없으니 그냥 간단한 파일 시스템을 만드는 것으로 했습니다. 그래서 나온 것이 MINT 파일 시스템인데 아래와 같은 구조로 만들었습니다.

 

<MINT 파일 시스템의 전체적인 구조>

척 봐도 FAT 파일 시스템과 아주 유사하다는 것을 알 수 있습니다. 디렉터리 엔트리 구조도 아주 단순합니다. 디렉터리 엔트리는 32 byte이며 파일 이름 24 byte와 파일 크기 4 byte, 그리고 파일 시작 클러스터 4 byte가 전부입니다. 클러스터 크기가 4Kbyte이므로 한 클러스터에 최대 128개의 파일을 생성할 수 있습니다.

<디렉터리 엔트리(Directory Entry)의 형식과 루트 디렉터리(Root Directory)의 구조>

이쯤되면 FAT 파일 시스템을 구현하는 게 더 낫지 않냐고 생각할지도 모르겠지만... MINT 파일 시스템은 극단(?)의 제약 사항을 걸어서 구현할 코드의 량을 대폭 줄였습니다. 그 제약 사항이 뭐야 하면...

디렉터리는 클러스터 하나만 사용할 수 있다
디렉터리는 루트 디렉터리만 존재한다

그렇습니다~!!! 서브 디렉터리를 제공하지 않고, 루트 디렉터리의 크기를 고정함으로써 경로(Path)처리나 디렉터리 처리에 관련된 코드를 대폭 줄인 것입니다. 실제로 예전에 FAT 파일 시스템을 구현했을 때와 비교한다면, 1/3 수준입니다. 물론 아쉬운 부분이 있긴 하지만... MINT64 OS처럼 간단한 OS에서 쓰기에는 충분한 것 같습니다. 어렵게 구현하는 것 보다 일단 구현하기 편하고 잘 돌면 되지요. ;)

구현할 양이 작아진 덕분에 C 언어 표준 입출력 함수, 즉 fopen(), fread(), fwrite(), fclose(), fseek(), opendir(), readdir(), rewindir(), closedir() 함수도 구현할 수 있었습니다. 마치 윈도우나 리눅스에서 콘솔 프로그램을 작성하듯이 MINT64 OS에서도 가능하다는 이야기지요. ㅎㅎ 실제로 아래는 위의 동영상에서 파일을 쓰고 읽는데 사용된 코드입니다.



아아~ 이제 파일 시스템에 캐시(Cache)를 넣고 램 디스크를 추가해야겠군요. 원래 이번 주 월요일에 시작해야 했는데 파일 시스템을 만드는 것이 늦어져서 이제야 시작합니다. ㅠㅠ 아흑... 또 주말을 반납해야 한다는... ㅠㅠ 열심히 만들어서 곧 Milestone을 하나 올리겠습니다. ;)

그럼 다들 즐거운 주말 되세요. ;)


Android App

Posted by 호기심 많은 kkamagui(까마귀, 한승훈)

댓글을 달아 주세요

  1. grampus 2009.05.18 10:54  댓글주소  수정/삭제  댓글쓰기

    흠...신기합니다~...중간중간...설명해주는 센스~
    잘봤어요~~~ㅎㅎㅎ

  2. Favicon of http://charsyam.pe.kr BlogIcon CharSyam 2009.05.18 14:27  댓글주소  수정/삭제  댓글쓰기

    거의 FAT 군요 ^^

  3. kid1412 2009.05.22 08:44  댓글주소  수정/삭제  댓글쓰기

    멋지군요~~ 잘보았습니다.

  4. FreeStyle 2013.11.19 18:50  댓글주소  수정/삭제  댓글쓰기

    안녕하세요~ 혹시 궁금해서 물어보는건데 제가 리눅스상에서 램디스크를 이용해서 FAT파일시스템을 구현해볼려고 하는데

    이제 자료구조와 컴퓨터구조 운영체제를 공부하고 리눅스 시스템 프로그래밍을 공부하는 중인데 그 밖에 더 공부해야 하는 부분
    이 더 있다면 어떤것들이 있을까요?


    • Favicon of https://kkamagui.tistory.com BlogIcon 호기심 많은 kkamagui(까마귀, 한승훈) 2013.12.14 23:12 신고  댓글주소  수정/삭제

      안녕하세요, FreeStyle님 ^^

      지금 하신 공부만으로도 충분히 FAT 파일 시스템을 구현하실 수 있을 것 같습니다. ^^

      MS에서 나온 FAT File System White Paper가 있는데요, 요걸 보시면 구현하시는데 많은 도움이 될 것 같습니다. ^^

      그럼 즐거운 OS 프로그래밍하세요 ^^