꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

운영체제 (OS)

파일 시스템의 이해

gold_dragon 2021. 4. 24. 23:00

파일시스템

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

파일 시스템이 만들어진 이유

처음에는 0과 1의 데이터를 저장하는 저장매체였습니다. 처음에 비트로 관리를 했었는데 오버헤드가 컸습니다. 이에 블록 단위로 관리하기 시작하였고 블록마다 고유 번호를 부여해서 관리를 하고 있습니다. 하지만 이 과정에서도 일반 사용자에게 블록 고유 번호를 관리하기에는 어려움이 있었습니다. 추상적 객체가 필요했는데 이를 파일이라고 합니다. 사용자는 파일 단위로 관리를 하게 되고 각 파일에는 블록 단위로 관리됩니다.

가능한 연속적인 공간에 파일을 저장하는 것이 좋습니다. 여기에 문제가 있었는데 파일의 크기가 변한다는 것이었습니다. 외부 단편화 문제가 발생하면서 불연속 공간에 파일 저장 기능 지원이 필요했습니다. 이러한 문제를 해결하기 위해서 블록 체인과 인텍스 블록 기법을 사용합니다. 블록 체인은 블록을 링크드 리스트로 연결합니다. 단점으로는 끝에 있는 블록을 찾으려면, 처음 블록부터 주소를 따라가야 합니다. 인덱스 블록 기법은 각 블록에 대한 위치 정보를 기록해서, 한 번에 끝 블록을 찾아갈 수 있도록 하는 기법입니다. 요즘 운영체제는 인덱스 블록 기법으로 구성돼 있습니다.

파일 시스템과 시스템 콜

read/write 시스템 콜 호출 시, 각 기기 및 파일 시스템에 따라 실질적인 처리를 담당하는 함수가 구현됩니다.

파일을 실제 어떻게 저장할지는 운영체제마다 다를 수 있습니다.

inode 방식 파일 시스템

파일 시스템 구조는 수퍼 블록(파일 시스템 정보), 아이노드 블록(파일 상세 정보), 데이터 블록(실제 데이터)로 구성돼 있습니다.

 

수퍼 블록: 파일 시스템 정보 및 파티션 정보를 포함합니다.

 

파일은 inode 고유값과 자료구조에 의해 주요 정보를 관리합니다. '파일이름:inode'로 파일이름은 inode 번호와 매칭됩니다. 파일 시스템에서는 inode를 기반으로 파일에 접근합니다. inode 기반 메타 데이터를 저장합니다.

 

inode 기반 메타 데이터란 파일 권한, 소유자 정보, 파일 사이즈, 생성시간 등 시간 관련 정보, 데이터 저장 위치 등을 말합니다.

 

파일을 탐색하기 용이하기 위해서 디렉토리 엔트리를 사용합니다.

가상 파일 시스템(Virtual File System)

Network 등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리가 가능합니다. 모든 디바이스를 파일처럼 다룹니다. 즉, 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용합니다.

 

디바이스의 경우 블록 디바이스(Block Device)와 캐릭터 디바이스(Character Device)로 구분됩니다. 블록 디바이스의 경우 HDD, CD/DVD와 같이 블록 또는 섹터 등 정해진 단위로 데이터를 전송하며, IO 송수신 속도가 높습니다. 캐릭터 디바이스의 경우 키보드, 마우스 등 byte 단위 데이터를 전송하며, IO 송수신 속도가 낮습니다.

'운영체제 (OS)' 카테고리의 다른 글

가상 머신(Virtual Machine)  (0) 2021.04.25
부팅의 이해  (0) 2021.04.24
가상 메모리 - 세그멘테이션  (0) 2021.04.23
페이지 교체 정책  (0) 2021.04.23
가상 메모리 - 페이징 시스템  (0) 2021.04.22