운영체제(OS) - 13. 파일시스템

Walker·2021년 10월 30일
0

운영체제(OS)

목록 보기
13/14

파일시스템
운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘

4kb 크기의 블록 단위로 데이터를 관리 -> 관리해야 할 데이터가 점점 커짐
-> 복수의 블록들을 포함하는 파일이라는 개념이 탄생

외부단편화
연속된 공간에 파일들을 저장하면 중간에 저장된 파일의 사이즈가 커질 경우
양끝이 다른 파일과 충돌하여 사이즈를 변경하지 못하는 문제

윈도우에서 요즘 많이 쓰이는 것은 NTFS 방식
인덱스 블록 기법배열과 유사한 방식의 저장 알고리즘

다양한 파일시스템 방식(FAT, FAT32, NFTS, ext2/3/4...)들이 있지만
이러한 다양한 방식은 OS에서 대응하는 것이기에 응용 프로그래머는
시스템 콜로 open과 같은 함수를 불러주기만 하면 OS에서 방식에 맞게 처리

파일시스템는 크게 3가지로 구성되어 있다.

수퍼 블록의 정보들(1KB 블록의 수 / 사용되는 용량 / 남은 용량 / 위치)

슈퍼 블록 ⊃ 아이노드 블록(데이터 블록의 메타 데이터) ⊃ 데이터 블록

아이노드 블록의 메타데이터(권한, 소유자, 사이즈, 생성시간 등)

리눅스의 cat 명령어를 사용하여 파일을 읽으며 행해지는 과정은 다음과 같다

  1. 해당 파일의 아이노드 블록에 접근
  2. 아이노드 블록에서 다이렉트 블록에 접근하여 데이터 주소를 읽음
  3. 해당하는 주소의 데이터를 읽음

만약 다이렉트 블록 만으로 모든 데이터의 주소를 관리하게 한다면
다이렉트 블록의 크기는 데이터가 커질수록 계속해서 커짐(데이터 주소 X 데이터 갯수 = 크기)
아이노드 블록이 이렇게 선형적으로 증가하는 것은 불필요한 낭비이므로
데이터 주소들을 묶어서 가르키는 또 하나의 주소공간을 만들어 관리(Single/Double/Triple)

link.txt 파일을 찾아가는 과정
/ -> home -> ubuntu -> link.txt의 아이노드 블록 -> 아이노드 블록에서 데이터 접근

가상파일 시스템
같은 디바이스 내의 데이터 뿐 아니라 다른 디파이스의 데이터네트워크를 통해
시스템 콜을 전달하여 데이터를 가져오겠다는 발상!

내부에서는 복잡한 처리가 이루어지더라도
쓰는 입장에서는 간단한 명령으로만으로도 사용할 수 있도록 추상화
(ex : 요리를 한다(재료준비/손질/조리/담기...등))

profile
I walk slowly, but I never walk backward. -Abraham Lincoln-

0개의 댓글