관리 메뉴

지식잡식

File System Implement 본문

IT 이론/자료구조&알고리즘

File System Implement

아이들링 2013.06.12 15:57

하드디스크는 page array이다. 메모리와 연관지어서 생각하면 된다. 프로세스를 메모리상에 allocation 하는것과 파일을 디스크에 allocation 하는것은 같은 원리이다.

 

Memory에서는 contiguous allocation 방식이 있었고 non-contiguous인 paging방식이 있다. 하드디스크도 똑같다.

하드디스크엔 추가적으로 한개 더 있다.

 

fopen함수를 쓰면 파일 포인터를 return한다. 이 포인터는 OS에서 정의하는 파일 table의 인덱스정보이다.

파일을 read할땐 실제로는 두개의 자료구조가 열린다. per-process open-file table, system-wide open file table. 일단 system-wide open file table이 한개 열리고 per-process open-file table은 프로세스마다 따로 할당되며 system-wide open file table을 참조한다.

 

디렉토리는 파일 이름을 가지고 있어야 한다.

 

seek time : arm을 해당하는 cylinder로 옮기는 시간

rotation delay : 실린더가 돌아가서 해당하는 sector로 이동하는데 걸리는 시간.

RPM = rotation per minute

transfer time : 블럭 내에서 전기적으로 읽는 시간. 거의 무시하는 수준이다.

 

하드디스크는 random access가 아니라 sequencial하게 read하기 때문에 contiguous allocation이 아주 이상적이다. 디스크 조각모음은 파일은 파일을 contiguous allocation을 만들어 주는 작업이다.

 

indexed allocation 만약 어떤 파일이 5개의 블럭을 사용한다면 5개는 무작위로 저장되어 있을 수 있다. 그리고 그 5개 블락의 정보를 가진 블락이 한개 존재한다. 블럭이 많다면 포인터를 저장한 블럭이 또 overflow된다. 그럼 page table때와 같이 two level, three level로 heirachial 하게 구성해야 한다.

 

linked allocation 은 파일을 sequencial 하게 읽는데는 문제가 없지만 random access가 아주 느려진다. 하나하나 다 따라가봐야 하기 때문이다.

그래서 계량된 모델이 File allocation table을 사용한 시스템이다. 파일 블록끼리 링크드 리스트로 연결 되어 있는게 아니라 file allocation table이란 메모리상의 별로에 테이블에 링크드 정보를 올려 두는 것이다. 그럼 seeking할때 파일을 따라 가 볼 필요가 없고 메모리에서 위치를 가져온 다음 direct하게 seeking한다.

메모리의 관점에서 보면 속도가 엄청 느린 operation이지만 디스크에 비해 메모리의 속도가 엄청나게 빠르기 때문에 파일 시스템에서는 이런 구성이 가능하다. 이런 시스템을 fat 파일 시스템이라고 부른다.

 

Extent based system = modified contiguous allocation

 

여러개의 연속된 block을 extent 단위로 확장하여 인식한다. contiguous allocation에 많이 도움된다.

 

File system에서 성능을 높이려면 블록끼리 최대한 인접한 곳에 allocation 해야 한다.

 

디스크를 여러 사람이 같이 쓴다면?? arm이 한개 밖에 없는데??

여러가지 작업이 동시에 엄청나게 요청된다. 그렇게 되면 arm을 움직이는 순서에 따라 성능 차이가 많이 날수 있다.

너무 순서대로 처리하지 말고 적당히 buffer에 넣어두고 최적 경로를 만들어서 움직인다. seek time을 줄이는 동작이다.

어떤 알고리즘이 있을까?

 

순서대로하기, shortest seek time

엘리베이터 알고리즘 등등.. 하나씩 배워보자

 

 

0 Comments
댓글쓰기 폼