Block단위로 디스크가 돌아가기 때문에 파일에 Block을 할당할 때 free block이 생긴다.
Block 안의 크기를 다 못 채우고 파일이 저장되는 것 (그러면 내부단편화 현상이 생김)
이 것을 할당하는 방법에는 연속 할당, 연결 할당, 색인 할당이 존재한다.
연속 할당 : 각 파일에 대해 디스크 상의 연속된 블록을 할당하는 방법
즉, HDD에 Block들이 나열되어 있는데 여기에 연속된 순서대로 파일을 저장한다.
이렇게 하면 Read할 때 이동경로를 최대한 줄일 수 있다. (빠른 I/O를 가짐)
장점 :동영상이나, 음악, VOD 같이 크기가 큰데 실시간 자료에 적합하다.
단점: 특정 파일을 삭제하면 중간에 Hole이 생성한다. 즉, 컴퓨터 시스템이 외부단편화가 생겼다고 생각이 될 수 도 있다. 연속된 형태이기 때문에 중간에 크기를 증가 시키기 어렵다. 디스크의 낭비가 심하다.
연결 할당 : 파일을 linked list의 형태로 저장
파일은 각자 directory를 가지고 있는데 여기에는 어떤 block에 할당되어 있는지를 기억한다.
Directory에 제일 처음 저장되는 block을 순서대로 이으면 된다.
이런 방법을 사용하면 외부 단편화의 문제가 해결된다.
단점: 순서대로 이어져 있기 때문에 중간에 있는 자료만 읽고 싶어도 포인터를 따라가야 하기 때문에 속도면에서 느리다.
또한, 1개의 포인터를 잃으면 줄줄이 잃어버린다. (포인터는 취약함)
인덱스 할당 : 파일 당 Index block을 사용하여 파일을 할당
Index block에 각 포인터에 대한 정보를 저장하게 되면 연속 할당(특정부분을 읽을 수 있게 된다.) + 연결 할당(외부 단편화 문제 해결)
But,
Index Block에 할당에 따른 저장 공간의 손실이 발생할 수 있다.
또한, Index Table을 잃으면 몽땅 자료를 잃는다.
'Developing Note > OS' 카테고리의 다른 글
[운영체제]메모리 단편화 (Fragmentation) (0) | 2018.06.08 |
---|---|
[Nachos]#5. Priority Scheduling (0) | 2018.05.24 |
[MIPS]초기 변수 받기 (argc, argv, envp) (0) | 2018.04.09 |
댓글