[운영체제] 파일 시스템

최지수·2022년 3월 4일
0

운영체제

목록 보기
12/13
post-thumbnail
post-custom-banner

파일 시스템에 대해 알아봐요

운영체제가 저장매체에 파일을 쓰기 위한 자료구조 또는 알고리즘을 일컬어요.

파일 시스템 배경

해당 시스템이 만들어진 이유에 대해 말씀드리자면, 컴퓨터는 0과 1로 된 신호를 통해 로직을 이해해요. 그러면 초기 컴퓨터에선 이 0과 1로 이뤄진 데이터를 어떻게 저장매체에 저장할까라는 문제부터 접근해야해요.

특정 비트 단위로 관리해서 쓰고 읽기엔 오버헤드가 너무 커요. 그래서 4KB의 블록block 단위로 관리해서 보다 오버헤드를 줄이는 방식을 생각하게 되었어요. 그리고 블록마다 고유 번호, 즉 인덱스를 부여해서 관리해 접근을 용이하게 하기로 했어요.

물론 이 방식도 좋은게 아니었어요. 데이터 수가 많아질 수록 사용자가 각 블록 고유 번호를 관리하기가 어려워졌죠. 그래서 우리가 알고 있는 파일이라는 추상적(논리적) 객체를 구상하였고, 사용자는 파일 단위로 관리하기로 한거죠. 물론 파일 내부는 블록 단위로 관리하고요.

저장 방법

그 다음에 저장 매체에 효율적으로 파일을 저장하는 방법을 구상해야 했어요.

가능한 연속적인 공간에 파일을 저장하는 것이 좋겠죠. 파일 사이즈 변경 문제로 인해 불연속적인 공간에 파일을 저장하는 기능 지원이 필요했어요(가상 메모리 개념을 공부하셨다면 외부 단편화 문제라는 걸 아실거에요!).

그래서 나온 방법이 2가지에요.

  1. 블록 체인 : 요즘 유행하는 그거 아니에요 블록을 링크드 리스트Linked List로 연결하는 방식이에요. 끝에 있는 블록을 찾기 위해선 처음 블록부터 주소를 따라가야 해요.
  2. 인덱스 블록 기법 : 각 블록에 대한 위치 정보를 기록해서, 한번에 끝 블록을 찾아갈 수 있게 해요.

그러면 파일 시스템 종류는 어떻게 되요?

Windows 상에선 FAT, FAT32, NTFS가 있고, 이 중 NTFS가 많이 쓰여요. 크게 설명하자면, 블록 위치를 FAT이라는 자료 구조에 기록하는 방식이에요.

LINUX(UNIX) 상에선 ext2, ext3, ext4이 있어요. 일종의 인덱스 블록 기법인 inode 방식을 사용해요.

파일 시스템과 시스템 콜

시스템 콜은 응용 개발자가 해당 운영체제의 커널 모드에 접속해서 시스템을 제어할 수 있게 하는 API에요. 그런데, 만약 이 API가 운영체제 구조가 다르기 때문에 그때마다 공부하고 처리를 해준다면 머리가 아프겠죠? 그래서 시스템 콜은 각 기기 및 파일 시스템에 따라 실질적인 처리를 담당하는 함수들이 구현되어 있어요.

물론 파일을 내부적으로 어떻게 저장할지는 컴퓨터와 운영체제의 사양에 따라 달라요. 그저 개발자가 사용하기 편하게 통일할 뿐인거에요.

💡 리눅스의 경우 ext4 말고도 NTFS, FAT32 파일 시스템을 지원해요.

profile
#행복 #도전 #지속성
post-custom-banner

0개의 댓글