보조기억장치의 정보를 파일 및 디렉터리의 형태로 저장하고 관리할 수 있도록 하는 os 내부 프로그램
파일
- 이름, 실행을 위한 정보, 속성(메타데이터: 형식, 위치, 크기)
- 파일을 다루는 모든 작업은 os를 통해 이루어짐
- 파일 디스크립터(핸들): 프로세스가 할당 받아 사용중인 파일을 구분하기 위한 정보
- 저수준에서 파일 식별
- 0 이상의 정수
- I/O, 파이프, 소켓도 식별
디렉터리
- 트리 구조 디렉터리
- 루트 디렉터리
- 경로: 파일 위치를 특정하는 정보
- os는 디렉터리에 속한 요소의 관련 정보가 포함된 파일로 취급
- 테이블로 표현되며 각 정보의 행은 디렉터리 엔트리
- 디렉터리 엔트리: 파일 이름, 저장된 위치를 유추할 수 있는 정보
- 상위
- 현재
- 다른 파일들
파일 할당
- 블록 단위로 씀
- 하나 이상의 블록을 할당받아 저장 4KB
- 연결 할당: 디렉터리 엔트리는 파일 이름, 첫 번째 블록 주소, 블록 단위 개수
- 색인 블록: 파일을 이루는 블록의 주소를 모아서 관리하는 블록
- 색인 할당: 파일이름, 색인 블록 주소
파일 시스템
- 파티셔닝: 보조기억장치의 영역을 구획하는 작업, 파티션 마다 다른 파일 시스템 사용 가능
포매팅: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정하고, 새로운 데이터를 쓸 준비를 하는 작업
아이노드: 색인 블록 기반
- 파일 마다 각각 갖고있음, 번호 부여
- EXT4 : 대표 파일 시스템
- 슈퍼블록: 아이노드 개수, 총 블록 개수, 블록 크기
- 그룹 식별자: 블록 그룹에 대한 메타데이터
- 블록 비트맵
- 아이노드 비트맵
- 아이노드 테이블
- 데이터 블록
- 아이노드는 파티션 내 특정 영역에 모여 있음
마운트
- 저장장치의 파일 시스템에서 다른 저장장치의 파일 시스템으로 접근할 수 있도록 파일 시스템을 편입하는 작업
헤드: 디스크 암에 부착
동일한 암 위치에 있는 트랙의 집합은 하나의 실린더를 형성한다.
전송속도: 드라이브와 컴퓨터간 데이터 흐름 ㅠ속도
탐색시간: 디스크 암을 원하는 실린더로 이동하는 시간
회전 지연 시간: 원하는 섹터가 디스크 헤드 위치까지 회전하는 시간
헤드 충돌: 헤드가 자기 표면 손상
디스크 스케줄링
FCFS
Scan Scheduling: 디스크 암이 디스크의 끝에서 끝으로 이동하며 요청을 처리. 끝에서 역방향 진행
C-Scan: 시간을 더 균등하게 하기 위해 0 -> 100, 0 -> 100
SSTF: 최소 탐색 시간, 기아 유발
LOOK: 진행방향에 없으면 전환
NVM 스케줄링
- FCFS + 인접한 것 함께 처리
- 읽기는 일정
- 쓰기는 일정하진 않음
error detection and correction: xor 패리티비트, 순환 중복 검사, 오류 수정 코드
- 소프트(수정 가능)/하드(수정 불가) 오류
bad block: 손상된 블록
RAID
- Redundant Array of Independent Disk
- 디스크의 안정성, 성능을 위해 여러 독립적인 장치를 하나의 보조기억장치처럼 사용
- 미러링은 신뢰성 제공, 비용이 큼
- 스트라이핑은 높은 전송률, 안정성 낮음
RAID 0: 데이터를 여러 장치에 나누어 저장. 중복정보 없음
RAID 1: 완전한 복사본을 만들어 저장. 드라이브 미러링. 두 곳에 써야해서 느림
RAID4: 패리티를 저장하는 디스크 구성. 패리티 디스크가 병목지점이 될 수 있음
RAID5: 패리티를 각 디스크에 분산
RAID6: 서로 다른 2개의 패리티로 구성. 오류 검출 복구 수단이 두 개, 느림
nested raid
- 0+1: 드라이브 세트가 스트라이프되고 그 스트라이프가 미러링
- 1+0: 드라이브가 쌍으로 미러링된 후 그 쌍이 스트라이핑