• 할당 방법 3가지
- Contiguous allocation
각 파일은 디스크에서 일련의 연속 블록을 차지합니다.
단순하게 : 시작 위치와 길이만 필요합니다.
효율적인 임의 접근
공간의 낭비(동적 스토리지 할당 문제)
CD-ROM에 널리 사용됨. (파일이 변하지 않으며, 모든 파일 사이즈를 알고 있습니다.)
문제점
1) 파일이 커질 수 없습니다.
2) 필요한 공간보다 더 크게 추정합니다.
- Linked allocation
각 파일은 디스크 블록의 링크 된 목록입니다. 블록이 디스크의 어느 곳에나 흩어져 있을 수 있습니다.
단순하게 : 시작 지점만 필요합니다.
자유 공간 관리 시스템(Free-space Management)으로 공간 낭비가 없습니다.
문제점
1) 무작위 접근에 비효율적입니다.
2) 포인터를 위한 공간이 필요합니다.
3) 포인터 손실 시 신뢰성의 문제가 생깁니다.
- Indexed allocation
모든 포인터를 인덱스 블록으로 가져옵니다.
인덱스 테이블이 필요합니다.
외부 fragmentation 없이 합리적으로 효과적인 무작위 접근을 할 수 있습니다.
다중 레벨 또는 결합 된 방식이 가능합니다 (예 : UNIX).
• Free-Space Management
- bit vector or bitmap (n blocks)
인접한 파일을 쉽게 얻을 수 있습니다.
비트맵은 추가적인 공간이 필요합니다.
블락 넘버 계산 : (number of bits per word) * (number of 0-value words) + offset of first 1 bit.
- Linked list (free list)
첫 번째 빈 블록을 가리키는 포인터를 유지하면서 모든 빈 디스크 블록을 연결.
인접한 파일을 쉽게 얻을 수 없습니다.
공간의 낭비가 없습니다.
- Grouping
n 개의 빈 블록의 주소를 첫 번째 빈 블록에 저장
처음 n-1 개의 블록은 정확히 비어있습니다.
마지막 블록은 다른 n 개의 빈 블록의 주소를 저장합니다.
- Counting
n 개의 사용 가능한 디스크 주소 목록을 유지하는 대신 첫 번째 블록의 주소와 첫 번째 블록 다음에 오는 빈 연속 블록의 수를 유지.
• Virtual File System
- Virtual File System(VFS) : 표준 UNIX 파일 시스템과 관련된 모든 시스템 호출을 처리하는 커널 소프트웨어 계층.
- 목적 : 유저 모드 프로세스에게 동일한 인터페이스 제공. 모든 다른 파일 시스템 구현을 위한 커널 추상화 제공
- 기능 :
1) 서비스 파일 및 파일 시스템 관련 시스템 호출
2) 효율적인 조회를 위한 루틴, 파일 시스템 traverse
3) 특정 파일 시스템 모듈과 상호 작용
4) 모든 파일 및 파일 시스템 관련 데이터 구조 관리
- In Linux
수퍼 블록은 기본적으로 파일 시스템 메타 데이터이며 파일 시스템 유형, 크기, 상태 및 기타 메타 데이터 구조 (메타 데이터의 메타 데이터)에 대한 정보를 정의합니다. 수퍼 블록은 파일 시스템에 매우 중요하므로 각 파일 시스템에 대해 여러 개의 중복 사본에 저장됩니다. 수퍼 블록은 파일 시스템을 위한 매우 "고수준" 메타 데이터 구조입니다. 예를 들어, / var 파티션의 수퍼 블럭이 손상되면 해당 파일 시스템 (/ var)을 운영 체제에서 마운트 할 수 없습니다. 일반적으로이 이벤트에서 수퍼 블럭의 대체 백업 복사본을 자동으로 선택하고 파일 시스템 복구를 시도하는 fsck를 실행해야합니다. 백업 사본 자체는 파일 시스템을 통해 확산 된 블록 그룹에 저장되며 첫 번째 블록은 파티션의 시작에서 1 블록 오프셋으로 저장됩니다. 이는 수동 복구가 필요한 경우에 중요합니다. dumpblocks / dev / foo | 명령을 사용하여 수퍼 블록 백업에 대한 정보를 볼 수 있습니다. grep -i superblock 이것은 수동 복구 시도시 유용합니다. dumpe2fs 명령은 163840에 Backup superblock, 163841-163841에 그룹 설명자를 출력한다고 가정 해 보겠습니다. 이 정보 및 파일 시스템 구조에 대한 추가 지식을 사용하여이 수퍼 블록 백업을 사용하려고 시도 할 수 있습니다. /sbin/fsck.ext3 -b 163840 -B 1024 / dev / foo. 이 예제에서는 블록 크기를 1024 바이트로 가정했습니다.
inode는 파일 시스템에 있거나 파일 시스템에 존재하며 파일에 대한 메타 데이터를 나타냅니다. 명확성을 위해 Linux 또는 UNIX 시스템의 모든 오브젝트는 파일입니다. 실제 파일, 디렉토리, 장치 등. inode에 들어있는 메타 데이터 중에 인간이 생각하기에 파일 이름이 없다는 점에 유의하십시오. 나중에 중요 할 것입니다. 아이 노드는 본질적으로 소유권 (사용자, 그룹), 액세스 모드 (읽기, 쓰기, 실행 권한) 및 파일 유형에 대한 정보를 포함합니다.
dentry는 아이 노드 번호를 파일 이름과 관련시켜 inode와 파일을 함께 묶는 접착제입니다. Dentries는 디렉토리 캐싱에서도 역할을 담당합니다. 이 캐싱은 빠른 액세스를 위해 자주 사용되는 파일을 손쉽게 보관합니다. 파일 시스템 탐색은 디렉토리와 파일 간의 관계를 유지하면서 덴 트리의 또 다른 측면입니다.
파일은 사람이 일반적으로 단어를 제시 할 때 생각하는 것 일뿐 아니라 실제로 논리적으로 관련된 임의의 데이터 블록입니다. (위)에서 수행 한 모든 작업을 고려하여 상대적으로 매우 둔합니다.
• Disk Caching
- Buffer cache
응용 프로그램은 파일을 읽고 쓰는 데 중요한 지역을 나타냅니다.
아이디어 : 버퍼 캐시 (또는 버퍼 캐시)에서 지역 정보를 캡처하기 위해 파일 블록을 메모리에 캐시
캐시는 시스템 전체에서 사용되며 모든 프로세스가 공유합니다.
캐시에서 읽으면 디스크가 메모리처럼 수행됩니다.
4MB 캐시도 매우 효과적 일 수 있습니다.
장점 : 디스크 트래픽을 줄이고 불필요한 디스크 I / O 제거
단점 : 캐시 일관성 문제
문제점
- 버퍼 캐시가 VM과 경쟁합니다.
- 크기가 제한되어 있습니다.
- 교체 알고리즘이 다시 필요 : 참조가 비교적 드물기 때문에 모든 블록을 정확한 LRU 순서로 유지하는 것이 가능합니다.
- Page cache
가상 메모리 기술을 사용하여 디스크 블록이 아닌 페이지를 캐시합니다.
메모리 맵핑 된 I / O는 페이지 캐시를 사용합니다.
- Unified Buffer Cache
통합 버퍼 캐시는 동일한 페이지 캐시를 사용하여 메모리 매핑 페이지와 일반 파일 시스템 I / O를 모두 캐시합니다.
이중 캐시 및 페이지 캐시와 버퍼 캐시 간의 불일치 가능성을 방지합니다.
• 복구
- 파일 시스템 일관성
시스템 고장으로 인해 캐시 된 블록이 기록되지 않으면 파일 시스템이 일관성없는 상태로 남을 수 있습니다.
블록 중 일부가 i-node 블록, 디렉토리 블록 또는 빈리스트를 포함하는 블록 인 경우 특히 중요합니다.
대부분의 시스템에는 파일 시스템 일관성을 검사하는 유틸리티 프로그램이 있습니다.
Windows : scandisk
UNIX : fsck
- 시스템 백업
시스템 프로그램을 사용하여 디스크의 데이터를 다른 저장 장치 (플로피 디스크, 자기 테이프)에 백업
백업에서 데이터를 복원하여 손실 된 파일 또는 디스크를 복구
'레거시 > OS' 카테고리의 다른 글
Mass Storage Structure (0) | 2017.06.19 |
---|---|
I/O Systems (0) | 2017.06.19 |
Virtual Memory (0) | 2017.06.18 |
Memory Management (0) | 2017.06.18 |
File System(1) (0) | 2017.06.18 |