C언어로 구현한 파일시스템 시뮬레이터
- 최초 등록일
- 2010.12.17
- 최종 저작일
- 2010.11
- 42페이지/ 압축파일
- 가격 2,000원
소개글
명세, 레포트, 소스코드, Readme파일, Makefile 을 모두 하나로 압축하였습니다
파일 시스템(filesystem_sim)
1) 아래와 같은 조건을 만족한다.
- 파일시스템은 디스크에 128KB(파일시스템) +32KB(log용) 크기로 존재한다.
- 오직 하나의 루트 디렉토리만 있다고 가정한다. 하위 디렉토리는 존재하지 않는다.
- 파일시스템은 최대 16개의 파일을 지원한다.
- 파일 최대의 크기는 8개의 블록이다; 각 블록은 1KB 크기이다.
- 각 파일은 고유한 이름을 가지고 있다. 파일이름은 8문자까지만 허용된다.
- 32KB는 log를 위한 크기이다.
・ 첫 128바이트는 프리 블록 리스트를 저장한다. 이 리스트의 각 항목(entry)는 이에 해당하는 블록이 free인지 아니면 사용 중(in use)인지 표시한다. (만약 i 번째 바이트가 0이면 이는 해당 블록이 free이고 그렇지 않다면 사용 중임을 나타낸다. 맨 처음에는 수퍼블록을 제외한 모든 블록은 free이다.
・ 프리 블록 리스트 뒤에 바로 오는 부분은 16개의 inode이다. 파일시스템에서 파일은 하나씩 inode를 가지고 있다. 그러므로 이 파일시스템은 총 16개의 파일이 존재한다. 맨 처음에는 inode도 free이다. 각 inode는 다음 정보를 가지고 있다.
char name[8]; // 파일명
int size; // 파일 크기(블록 크기로)
int blockPointers[8]; // 다이렉트 블록 포인터
(파일이 1KB 짜리 블록 8개까지 가질 수 있다고 정의)
char time[4]; // 파일이 최종 수정시간
(ex : 1833으로 저장하고 18:33로 표현)
int used; // 0 -> inode가 free, 1 -> 사용중
3) log를 위한 32KB 디스크의 레이아웃은 다음과 같다.
char name[8]; // 파일명
int logPointers; // 실제로 저장될 블록 포인터 위치
char data[1024]; // 실제로 저장될 데이터
char complete; // complete 여부
chat commit; // commit 여부
1.2.2. 파일 시스템 연산
1.2.3. 파편 제거(compaction)
컴파일 실행환경
리눅스 Gcc
압축파일 내 파일목록
compaction.c
filesystem_sim.c
hw_04.hwp
Makefile
README.txt
파일시스템_시뮬레이터.hwp
참고 자료
Abraham Silberschatz, 『Operating System Concepts』, 홍릉과학출판사, 2008
JOINC WIKI - www.joinc.co.kr (각종 API 관련)
Win32 API 연구 사이트 - http://winapi.co.kr (각종 API 관련)
개인 블로그 - http://itguru.tistory.com (각종 API 관련)