파일 시스템 (1) - 파티셔닝, 포매팅, 파일 할당 방법
by eelseungmin파일 시스템은 파일과 디렉터리를 보조기억장치에 일목요연하게 저장하고 접근할 수 있도록 하는 OS의 내부 프로그램이다. 이번엔 파일 시스템이 파일과 디렉터리를 보조기억장치에 어떻게 할당하고 접근하는지 알아보겠다.
파티셔닝, 포매팅
공장에서 생산된 따끈따끈한 새 보조기억장치가 있다고 가정할 때, 여기에 곧바로 파일을 저장할 수 없다.
보조기억장치를 사용하기 전에 먼저 파티셔닝, 포매팅 작업을 거쳐야 하기 때문이다. 물론 공정 과정에서 파티셔닝, 포매팅까지 끝나는 경우도 있으니 절대는 아니다.
파티셔닝
저장 장치의 논리적 영역을 여러 구획으로 나누는 작업이다. 마치 서랍 안에 칸막이를 추가로 두어 효과적으로 물건을 정리하는 것과 비슷하다. 이렇게 나누어진 각각의 영역을 파티션이라고 한다.
포매팅
흔히들 알고 있듯 반드시 저장 장치의 내용을 완전히 삭제하는 것은 아니고,
파일 시스템을 설정해서 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고 새로운 데이터를 쓸 준비를 하는 작업을 의미한다. 어떤 종류의 파일 시스템을 사용할지도 이때 결정된다. 파티션마다 다른 파일 시스템을 사용할 수도 있다.
파일 할당 방법
파티셔닝, 포매팅이 끝났으니 파일을 저장해야 할 것이다.
OS는 파일과 디렉터리를 블록 단위로 읽고 쓴다. 하드디스크의 가장 작은 저장 단위는 섹터이지만 OS에서 하나 이상의 섹터를 블록이라는 단위로 묶은 뒤 블록 단위로 파일과 디렉터리를 관리한다. 이는 섹터가 너무 작은 단위이기에 관리의 편의성을 위해서 좀 더 큰 단위로 묶는 것이라 생각하면 된다.
크기가 큰 파일은 여러 블록에 걸쳐서 저장될 것이다.
파일을 보조기억장치에 할당하는 방법에는 크게 두 가지가 있다. 연속 할당과 불연속 할당이다.
연속 할당
연속 할당은 이름대로 단순한 방식으로 파일을 할당한다. 보조기억장치 내 연속적인 블록에 파일을 할당하는 것이다.
파일에 접근하기 위해서 첫 번째 블록 주소, 길이만 알면 파일에 접근할 수 있다.
예상했겠지만 이는 메모리에 프로세스를 연속으로 할당하는 방식과 비슷하게 외부단편화를 야기한다는 치명적인 단점을 가지고 있다.
연속으로 할당된 파일이 삭제되거나 할 경우 곳곳에 파일을 할당하기 애매한 길이의 빈 블록 공간이 생겨나기 때문이다.
따라서 현대 OS에서는 잘 사용되지 않는 방식이다.
불연속 할당
불연속 할당은 연결 할당과 색인 할당 두 가지 방식이 있다.
연결 할당
연속 할당의 문제를 해결할 수 있는 방식으로, 각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식이다. 즉, 파일의 각 블록을 연결 리스트로 관리한다.
파일에 접근하기 위해서 첫 번째 블록 주소, 길이만 알면 된다는 것은 동일하다.
외부단편화 문제는 해결했지만 연결 할당도 단점이 있다.
1. 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 하므로 파일 내 임의 위치에 접근하는 Random Access 속도가 매우 느리다.
2. 하드웨어 고장이나 오류 발생 시 해당 블록 이후 블록은 접근이 불가능하다.
이러한 문제점을 안고 있는 연결 할당이기에 많이 사용되는 FAT 파일 시스템은 이를 조금 변형하여 사용한다. 이에 대해선 다음 글에서 설명하겠다.
색인 할당
파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식이다. 당연히 연결 할당에서 문제가 되었던 Random Access 속도가 빠른 편이다.
색인 할당에서는 파일에 접근하기 위해 디렉터리 엔트리에 색인 블록 주소를 명시한다.
색인 할당의 대표적인 예시가 유닉스 파일 시스템이다.
다음 글에선 앞서 언급했던 FAT 파일 시스템, 유닉스 파일 시스템에 대해 알아보겠다.
'Note > OS' 카테고리의 다른 글
파일 시스템 (2) - FAT 파일 시스템, 유닉스 파일 시스템 (0) | 2024.11.17 |
---|
블로그의 정보
eel.log
eelseungmin