파일 시스템 1
파일시스템의 기초, 디렉토리 구조, 파일의 접근권한 보호
File, metadata, File system
- OS는 다양한 저장장치를 file이라는 동일한 논리적 단위로 봄
- Directory : 파일의 메타데이터 중 일부를 보관하고 있는 일종의 특별한 파일
- Partition = Logical Disk
File system 관련 management table
- File Descriptor Table : PCB (Process Control Block) 내에 존재
- Open File Table : 전역으로 관리
Memory vs File Protection
- (Virtual) Memory는 프로세스별로 각기 갖고 있어서 연산(R/W) 권한 체크만 해주었음
- 그와 달리 File Protection은 "누구에게", "어떤 연산(R/W)" 두가지 체크가 필요
- Access Control 방법: Access Control Matrix/List/Capability, Gropuing, Password
[쉬어가기]
Q.Grouping: User를 Owner, Group, Public 세그룹으로 나눈다고 했을때, 누가 Owner인지 앎?
A. 우선, 파일 메타 정보는 파일 시스템의 inode 구조에 저장되며, 파일 소유자 (UID), 그룹(GID) 그리고 파일 권한이 표시된다. 이때 그룹이란 파일의 소유자와 연결된 그룹을 의미
Access Method
- sequential : 카세트 테이프처럼, offset 자동 증가
- direct / random access : RAM 이름 어원이 여기로군
파일 시스템 2
파일시스템의 파일 할당 방법, 파일시스템의 기초
Allocation of File Data in Disk
방법 | 장점 | 단점 |
Contiguous | - Fast I/O 한번의 seek/rotation - swapping 용도 - Random Access 가능 |
- 외부 단편화 - File Growh 어려움 |
Linked | - 외부 단편화 없음 | - Random Access 안됨 - Reliabilty (한 sector가 고장나면 나머지 유실) - 포인터를 위한 공간이 block 일부가 되어야함 ➡️FAT (File Allocation Table) 포인터를 별도의 위치에 보관해 reliability 공간 효율성 문제 해결 |
Indexed | - 외부 단편화 없음 - Random Access 가능 |
큰 파일의 경우 하나의 block으로 index를 저장하기에 부족 추가 해결방안 : linked scheme, multi-level index ex) inode |
UNIX File System 구조
- Boot Block : (시스템 무관?) 부팅에 필요한 정보는 무조건 0번 블록
- Inode (index node) : 파일 이름을 제외한 메타 데이터 저장 (파일 이름은 Directory file에 존재)
- 큰 파일의 경우 single/ double/ ... index direct blocks을 따라감
FAT File System
- Q. 핀토스 현재 inode 에서 FAT 시스템으로 바꾸는건가? YES
- 다음 블록 위치를 별도로 File Allocation Table에서 관리함
- FAT 배열 길이 : #Data_Blocks - 1
Random Access가 가능한 이유, FAT은 이미 메모리에 올라가있음- FAT은 중요한 정보라 여러 copy를 떠서 Reliabilty 상승
[쉬어가기]
Q. 그 외 어떤 File System이 있을까?
A. FAT(File Allocation Table), NTFS (New Technology File System), ext(Extended File System) 등
Free-Space Management
- Bit map (or vector) / Linked List / Grouping / Counting
Directory Implementation
- Linear List / Hash Table
- File의 metadata 보관 위치
- 디렉토리 내 직접 보관 or 디렉토리에는 포인터를 두고 다른 곳에 보관 (inode / FAT)
- 파일 이름이 길면? <file name, next_pointer>
VFS and NFS
- VPS: 서로 다른 다양한 File System에 대해 동일한 시스템 콜 API를 통해 접근할 수 있게 해주는 Layer
- NFS : 분산 시스템에서 네트워크를 통해 파일 공유
Page Cache and Buffer Cache
- Buffer Cache : 한번 읽어온 Block에 대한 후속 요청 시 여기서 즉시 전달 (OS가 바로 유저 프로그램으로 전달하지 않고 중간 복사하는 이유)
- 파일을 읽을 때 Page Cache 확인 후 없으면 > Buffer Cache> 디스크 읽어오기
- 부록; Memory Mapped I/O
- 원래 File을 접근하려면 open 하고 read/write 시스템콜로 접근함. 그런 방법이 아니라 Memory-Mapped I/O 라는 것은 파일의 일정부분을 메모리에다가 맵핑시켜놓고 쓰는 것. 메모리에다가 R/W 실제로 File R/W 하는 것 같은 효과
파일 시스템 3
Unix와 FAT 파일시스템의 구조와 파일을 관리하는 방법
- 프로그램 실행 Virtual Memory
- Code : File-Backed (swap-out 시 read-only 그냥 제거하면됨) - Loader가 Memory Mapped I/O 를 사용함
- Stack, Data 영역은 Swap out 시 Swap Area로 저장
강의 후기
아니 핀토스 과제하고 나서 지식이 많이 쌓였나보다. 강의가 잘들리고, 특히나 고민했던 "mmap, read" 관련 강의 내용이 나왔을때 내가 고민했던 부분을 딱 짚어주시고 설명해주시는데 너무나 속이 시원했다. 이게 의미있는 고민이었다는게 ㅎ
더 자세한 후기는 회고글에서 보는걸로!
'2️⃣ 개발 지식 B+ > OS' 카테고리의 다른 글
[PintOS 3-5] Swap In/Out (0) | 2024.10.21 |
---|---|
[PintOS 3-2] Anonymous Page (2) | 2024.10.14 |
[PintOS 3-1] Memory Management (0) | 2024.10.14 |
[OS] PML4 이해하기 (w. PintOS) (1) | 2024.10.14 |
[OS] Virtual Memory 역할, 주소 변환 (0) | 2024.10.14 |