##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다.
FAT File System
* 유닉스 파일 시스템의 중요 개념
- Boot block : 부팅에 필요한 정보
- Super block : 파일 시스템에 관한 총체적인 정보를 담고 있다.
- Incode : 파일 이름을 제외한 파일의 모든 메타 데이터를 저장
- Data block : 파일의 실제 내용을 보관
FAT은 일종을 배열로 따로 분리하여 파일 정보들을 보관하며, FAT은 크기가 매우 작기때문에 테이블을 디스크에 한번 올려놓고 테이블을 따라서 접근할 수 있다. 즉, 직접 접근이 가능하다는 장점이 있다.
또한 디스크에 저장할 떄 유실이 일어나더라도 신뢰성이 보장되도록 여러 복사본을 한꺼번에 저장한다는 장점이 있다.
Free-Space Management
데이터 블록의 수만큼 n개의 비트로 배열을 만들어 할당하여 보관하는 방법이다. Bit map을 통해 디스크 블럭이 사용중이면 1, 비어있으면 0으로 표시한다.
부가적인 공간을 필요로하기는 하지만, 큰 공간이 아니라 단점까지는 아니다. 대신 연속적인 n개의 free block을 찾는데 효과적이라는 단점이 있다. 여기저기 떨어져있는 곳에 할당을 해놓으면 디스크 헤드가 계속해서 비효율적으로 움직이며 내용을 찾아야하기때문이다.
- Linked List 방법
모든 free block들을 링크로 연결한다.
연속적인 가용공간을 찾는 것은 쉽지 않지만, 링크로 연결하게 되면 공간의 낭비가 줄어든다.
- Grouping
linked list 방법의 변형으로, 첫번째 free block이 n개의 pointer를 가진다.
- Counting
프로그램들이 종종 여러개의 연속적인 block을 할당하고 반납한다는 성질에 착안하여 고안된 방법이다.
(first free block, # of configuous free blocks)를 유지할 수 있다.
Directory Implementation
- Linear list
<file name, file의 metadata>의 list
구현이 간단하며, 디렉토리 내에 파일이 있는지 찾기 위해서는 linear search가 필요하다.
그래서 위 방법을 향상시킨 방법이 아래, hash table이다.
- Hash Table
linear list + hashing
Hash table은 file name을 이 파일의 linear list의 위치로 바꾸어준다.
seach time을 없앨 수 있다는 장점이 있지만, collision이 발생가능하다.
- File의 meatadata의 보관 위치
디렉토리 내에 직접 보관한다.
디렉토리에는 포인터를 두고 다른 곳에 보관한다(inode, FAT 등)
- Long file name의 지원
<file name, file의 metadata>의 list에서 각 entry는 일반적으로 고정크기이다.
file name이 고정 크기의 entry 길이보다 길어지는 경우 entry의 마지막 부분에 이름의 뒷부분이 위치한 곳의 포인터를 두는 방법이다.
이름의 나머지 부분은 동일한 direcotry file의 일부에 존재하게 한다.
VFS and NFS
1. Virtual File System (VFS)
서로 다른 다양한 file system에 대해 동일한 시스템 콜 인터페이스를 통해 접근할 수 있게 해주는 OS의 layer
2. Network File System (NFS)
분산 시스템에서는 네트워크를 통해 파일이 공유될 수 있음
NFS : 분산 환경에서의 대표적인 파일 공유 방법
Page Cache and Buffer Cache
1. Page Cache
Virtual memory의 paging system에서 사용하는 page frame을 caching의 관점에서 설명하는 용어
Memory-Mapped I/O를 쓰는 경우 file의 I/O에서도 page cache 사용
2. Memory-Mapped I/O
File의 일부를 virtual memory에 mapping 시킴
매핑 시간 영역에 대한 메모리 접근 연산은 파일의 입출력을 수행하게 함
3. Buffer Cache
파일 시스템을 통한 I/O 연산은 메모리의 특정 영역인 buffer cache 사용
File 사용의 locality 활용 : 한번 읽어온 block에 대한 후속 요청시 buffer cache에서 즉시 전달
모든 프로세스가 공용으로 사용
Replacement algorithm 필요 (LRU, LFU 등)
4. Unified Buffer Cache
최근의 OS에서는 기존의 buffer cache가 page cache에 통합됨
프로그램의 실행