우봉수
2023. 5. 31. 19:34
2023. 5. 31. 19:34
파일 시스템
- 컴퓨터의 디스크에서 데이터를 저장, 검색, 공유하는 방식을 정의하는 것
- 파일 구조: 관련된 정보의 묶음, 논리적 저장장치 단위
- SSD에 상주하며 논리 장치를 물리 장치로 변환하여 저장장치에 대한 사용자 인터페이스를 제공한다.
- 디스크에 대한 효율적이고 편리한 접근을 제공한다.
- 디스크는 즉성에서 다시 쓰는 것이 가능하고 임의 접근을 제공한다.
- File control block: 파일에 관한 정보로 구성된 저장장치 구조
- 계층(트리) 구조를 이룬다.
inodes
- index + node 합친 것
- 유닉스에서만 쓰는 용어
- 파일 컨트롤 블록
- 권한, 만든 사람, 만든 시간
- 가지고 있는 데이터 블록들의 번호 13개를 가지고 있음
- inode가 가지고 있는 번호 10개는 실제 데이터가 있는 번호 3개는 실제 데이터가 있는 곳에 대한 인덱스 정보
- 1024*10 보다 큰 파일 이라면 간접 인덱싱 기법을 사용하여 표시
- 하드디스크에 있는 데이터 블록 번호를 가르킴
파일 시스템 계층
- 장치 드라이버(I/O control) 입출력 제어 층에서 입출력 장치를 관리
- 기본 파일 시스템(basic file system)은 물리적 블록 번호를 장치 드라이버에게 전달 한다.
- 버퍼는 전송 중인 데이터를 유지한다.
- 캐시는 자주 사용되는 데이터를 유지한다.
- 파일 구성 모듈(file-organization module)은 파일, 논리 주소, 및 물리 주소를 변환한다.
- logical file system은 파일 제어 블록(unix의 inodes)를 유지하여 파일 이름을 파일 번호, 파일 핸들, 위치로 변환한다.
파일 시스템 주요 구성 요소
- API 수준에서 시스템 콜이 있만 해당 기능을 어떻게 구현하는가?
- 부팅 제어 블록(Boot control block): 해당 볼륨에서 OS를 부팅하는데 필요한 정보가 포환된 블록
- 구조: 부트 블럭(0), 슈퍼 블럭(1), inode 블럭(2 ~ n개)
- 문제: 16개의 inode 블록이 있을 때 125번 데이터 블록은 몇번 inode에 존재하는가?
- 풀이: 125/16 = 7..13 → inode 시작 번호는 2 따라서 9번 inode에 데이터 블록이 존재한다.
- 볼륨 제어 블록(Volume control block): superblock, 마스터 파일이라 불리우며 볼륨 세부 정보가 포함된 블록
- 파일 제어 블록: 파일 생성 날짜, 파일 주인 그룹 권한, 파일 사이즈, 파일 데이터 블록 위치 등이 기록된 해당 파일을 제어하는데 필요한 정보가 기록된 블록
- 마운트 테이블: 파일 시스템 마운트, 마운트 포인트, 파일 시스템 유형을 저장하는 공간
메모리 내 파일 시스템 구조
가상 파일 시스템
- 가상 파일 시스템 (VFS): Unix에서 파일 시스템을 구현하는 객체 지향 방식
- 구현 객체 방식
- inode: 파일 시스템 내의 각 파일이나 디렉토리를 고유하게 식별하는 정보를 가진 구조체
- file: 프로세스가 파일을 열 때마다 생성되는 파일 구조체
- superblock: 파일 시스템의 전반적인 정보를 저장하는 구조체
- dentry: 파일 시스템 내의 파일이나 디렉토리 이름을 inode와 연결하는 역할을 가진 구조
- 지원하는 객체 연산 집합
- int open(): 파일을 열고 해당 파일에 대한 파일 디스크립터를 반환합니다.
- int close(): 열려 있는 파일을 닫습니다.
- ssize t read(): 열려 있는 파일에서 데이터를 읽습니다.
- sszie t write(): 열려 있는 파일에 데이터를 씁니다.
- int mmap(): 파일이나 장치를 메모리에 매핑합니다. 이를 통해 파일이나 장치의 일부 또는 전체를 직접 메모리에 액세스할 수 있게 해줍니다.