시스템 소프트웨어 특강에서 사용되는 프로그램에 대해서 분석한 내용을 다룬다.
기본 파일은 Mitsubishi 방식으로 구현되어 있다. 프로그램은 총 4 개의 소스파일로 구성되어 있고, 나중에 성능을 측정하기 위해 4 개의 trace 파일이 주어진다.
분석
하나의 섹터는 512 로 지정되어 있고, spare 영역은 16 으로 지정되어 있고, 16 은 각각 lbn, lsn, block_state, dummy 로 나뉘어져 있다. 이 두가지를 합쳐서 PAGE SIZE 는 528 이 된다. 하나의 block 는 32 개의 page 로 구성되어지고, 하나의 flash 파일(database) 은 총 4500 개의 block 으로 구성되어 있다.
flt_open() 이 호출되기 전까지는 database 파일을 생성하는 루틴이다.
여기서는 각각의 함수에 대한 정의와 하는 역할에 대해서 정의할 것이다.
populate_init_database()
앞에서 설명한 크기로 flash 파일을 생성하는 역할을 한다. 모두 수행되었을 때의, database 파일의 크기는 약 74M 정도 된다.
ftl_open()
malloc 함수를 이용해서 섹터 크기 만큼(512)의 메모리를 할당해서 pagebuf 라는 변수에 할당 받은 메모리의 시작주소를 저장한다.
또한 spare 크기 만큼(16)의 메모리를 할당해서 sdata 라는 변수에 할당 받은 메모리의 시작주소를 저장한다.
매핑정보를 저장하는 매핑 테이블(ramtable) 의 4500 개 배열로 이루어진 L2P 를 -1 로 초기화한다.