http://www.kocw.net/home/m/search/kemView.do?kemId=1046323
운영체제 강의를 듣고 정리한 내용입니다.
FAT File System
- linked allocation(연결 할당)을 변형한 방식이다
- Boot block
- FAT
- Root directory
- Data block
->data block의 directory file에서 대부분을 해결한다 -> 오류가 발생한다
-> FAT에 블럭의 다음 블럭이 어디인지를 따로 저장하여(위치 저장) 오류를 줄인다
-> 직접 접근이 가능하다
Free-Space Management
Bit map or bit vector
- bit[i] = { 0 -> block[i] free || 1 -> block[i] occupied }
- Bit map은 부가적인 공간을 필요로 한다
- 연속적인 n개의 빈 블록을 찾는데 효과적이다
Linked list
- 모든 빈 블록들을 링크로 연결한다(free list)
- 연속적인 가용공간을(빈 공간) 찾는 것은 쉽지 않다
- -> 실제로 사용하기 쉽지 않다
- 공간의 낭비가 없다
Grouping
> linked list 방법의 변형이다
> 첫 번째 빈 블록이 n개의 포인터를 가진다
- n-1 포인터는 빈 데이터 블록을 가리킨다
- 마지막 포인터가 가리키는 블록은 도 다시 n 포인터를 가진다
Counting
- 프로그램들이 종종 여러 개의 연속적인 블록을 할당하고 반납한다는 성질에 착안됐다
- (first free block, # of contiguous free blocks)을 유지한다
Directory Implementation
Linear list
<file name, file metadata>의 리스트이다
- 구현이 간단하다
- 디렉토리 내에 파일이 있는지 찾기 위해서는 linear search가 필요하다 (time-consuming)
-> 시간이 많이 든다
Hash Table
- linear list + hashing
- 파일의 이름을 해시 함수를 적용하여 저장한다
- Hash table은 file name을 이 파일의 linear list의 위치로 바꾸어준다
- 해시함수의 결과값 엔트리만 찾으면 되기 때문에 탐색 시간을 없앨 수 있다
- 충돌(collision)이 발생할 수 있다
File의 메타 데이터의 보관 위치
- 디렉토리 내에 직접 보관한다
- 디렉토리에는 포인터를 두고 다른 곳에 보관한다 -> inode, FAT 등
Long file name의 지원
- <file name, file의 metadata>의 리스트에서 각 엔트리는 일반적으로 고정크기이다
- -> 대부분의 metadata들은 고정된 크기를 갖는다
- 파일 이름이 고정 크기의 엔트리 길이보다 길어지는 경우, 엔트리의 마지막 부분에 이름의 뒷 부분이 위치한 곳의 포인터를 두는 방법이다
- 이름의 나머지 부분은 동일한 directory file의 일부에 존재한다
VFS and NFS
클라이언트와 서버 컴퓨터가 네트워크로 연결되어 있다
클라이언트가 어떤 파일 시스템이건 상관없이 VFS로 접근 가능하다
원격의 다른 파일 시스템을 접근 할 수 있는 파일 시스템이 NFS이다
Virtual File System(VFS)
서로 다른 다양한 파일 시스템에 대해 동일한 시스템 콜 인터페이스(API)를 통해 접근할 수 있게 해주는 OS의 layer이다
Network File System(NFS)
분산 시스템에서는 네트워크를 통해 파일이 공유될 수 있다
NFS는 분산 환경에서의 대표적인 파일 공유 방법이다
Page Cache and Buffer Cache
Page Cache
가상 메모리의 페이징 시스템에서 사용하는 페이지 프레임을 캐싱의 관점에서 설명하는 용어이다
Memory-Mapped 입출력을 쓰는 경우 파일의 입출력에서도 페이지 캐시를 사용한다
Memory-Mapped I/O
파일의 일부를 가상 메모리에 매핑 시킨다
-> read/write 시스템 콜 사용 없이 이뤄진다
매핑시킨 영역에 대한 메모리 접근 연산은 파일의 입출력을 수행하게 한다
Buffer Cache
- 파일의 데이터를 디스크에서 요청했을 때 버퍼캐시에 저장했다가 필요할 때 제공한다
- 파일 시스템을 통한 I/O 연산은 메모리의 특정 영역인 buffer cache를 사용한다
- 모든 프로세스가 공용으로 사용한다
- Replcaement algorithm이 필요하다(LRU, LFU 등)
> File 사용의 locality 활용
한번 읽어온 block에 대한 후속 요청시 버퍼 캐시에서 즉시 전달한다
Unified buffer Cache
페이지 캐시 + 버퍼 캐시 공유되어 사용된다
최근의 OS에서는 기존의 버퍼 캐시가 페이지 캐시에 통합되었다
-> 버퍼 캐시도 페이지 단위로 관리한다
'CS지식 > 운영체제' 카테고리의 다른 글
TIL 정리_109(Disk Management and Scheduling ) (0) | 2022.06.16 |
---|---|
TIL 정리_107(File Systems Implementation 1) (0) | 2022.06.12 |
TIL 정리_106(File systems) (0) | 2022.06.10 |
TIL 정리_105(Virtual Memory 3) (0) | 2022.06.08 |
TIL 정리_104(Virtual Memory 2) (0) | 2022.06.06 |