12. 파일시스템 이해
파일시스템:
운영체제가 저장매체에 파일을 쓰기위한 알고리즘(자료구조)
참고
파일시스템이 만들어진 이유(블록)
0 과 1의 데이터를 어떻게 저장매체에 저장할까?
bit로 관리하기에는 오버헤드가 너무 큼
block단위로 관리하기로 함.(보통 4KB)
블록마다 고유번호를 부여해서 관리
파일 시스템이 만들어진 이유(파일)
사용자가 각 블록 고유번호를 관리하기 어려움
추상적(논리적) 객체 필요: 파일
사용자는 파일단위로 관리
각 파일에는 블록단위
파일 시스템이 만들어진 이유(저장방법)
저장매체에 효율적으로 파일을 저장하는 방법
가능한 연속적인 공간에 파일을 저장하는 것이 좋음
외부 단편화, 파일 사이즈 변경 문제로 불연속 공간에 파일 저장 기능지원 필요
블록체인: 블록을 링크드 리스트로 연결
끝에 있는 블록을 찾으려면, 맨 처음 블록부터 주소를 따라가야함.
연속적인 공간이 아니더라도, 연결된 블록을 찾아 사용.
인덱스 블록기법: 각 블록에 대한 위치 정보를 기록하여 한번에 끝 블록을 찾아갈 수 있도록 함.
참고2: 다양한 파일 시스템
Windows: FAT, FAT32, NTFS
블록위치를 FAT이라는 자료구조에 기록
Linux(Unix): ext2, ext3, ext4
일종의 인덱스 블록 기법인 inode 방식 사용.
파일시스템과 시스템콜
동일한 시스템콜 을 사용해서, 다양한 파일 시스템 지원 가능토록 구현
read/write 시스템 콜 호출시, 각 기기 및 파일 시스템에 따라
실질적인 처리를 담당하는 함수 구현(예: read_spec/write_spec )
파을 실제 어떻게 저장할지는 다를 수 있음
리눅스의 경우 ext4 외 NTFS, FAT32 파일 시스템 지원
inode 방식파일시스템
파일 시스템 기본구조
수퍼블록: 파일시스템정보 및 파티션 정보 포함(
df
로 해당 정보 확인가능)아이노드 블록: 파일 상세 정보(PCB)
데이터 블록: 실제 데이터(1~4KB)
inode와 파일
파일: inode 고유값과 자료구조에 의해 주요 정보관리
'파일이름: inode'로 파일이름은 inode 번호와 매칭
파일시스템은 inode를 기반으로 파일 엑세스
inode 기반 메타 데이터(상세 정보) 저장
inode 구조
inode 기반 메타 데이터(파일권한, 소요자정보, 파일사이즈, 생성시간, direct blcks, single indirect, double indirect, triple indirect)
디렉토리 엔트리
리눅스 파일탐색: 예: ~/home/ubuntu/link.txt
각 디렉토리 엔트리(dentry)를 탐색
각 엔트리는 해당 디렉토리 파일/ 디렉토리 정보를 가지고 있음
'/'dentry에서 home을 찾고, home에서 ubuntu를 찾고, ubuntu에서 link.txt파일 이름에 해당하는 inode를 얻음.
가상파일 시스템(Virtual File System)
Network등 다양한 기기도 동일한 파일 시스템 인터페이스를 통해 관리 가능.
예: read/write 시스템콜 사용하여 각 기기별 read_spec/write_spec 코드 구현
(운영체제 내부)
참고: 리눅스(유닉스) 운영체제와 가상 파일 시스템
모든 것은 파일이라는 철학을 따름
모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져있음
마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐
모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용
Last updated