Disk Management
- 디스크에서 저장하는 최소 단위 - 섹터
- 디스크 외부에서 관리하는 단위 - logical block
Disk structure
- logical block
- 디스크 외부에서 보는 디스크의 단위 정보 저장 공간들
- 주소를 가진 1차원 배열처럼 취급
- 정보를 전송하는 최소 단위
- Sector
- Logical block이 물리적인 디스크에 매핑된 위치
- Sector 0은 최외곽 실린더의 첫 트랙에 있는 첫 번째 섹터이다.
- 부팅과 관련된 정보가 저장
Disk Management
- physhical formatting(low-level formatting)
- 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정
- 각 섹터는 header + 실제 데이터 + trailer로 구성
- header와 trailer는 sector number, ECC 등의 정보가 저장되며 controller가 직접 접근 및 운영
- ECC는 체크섬 처럼 해쉬함수로 데이터 저장 시 발생가능한 에러를 검출하는 역할 - 모든 error를 커버하지는 못한다.
- Partitioning
- 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
- OS는 이것을 독립적 disk로 취급 (logical disk)
- 파티션까지 완료된 logical disk를 파일 시스템으로 사용할 수 있고 혹은 스왑 영역으로 사용할 수 있다.
- Logical formatting
- 파일시스템을 만드는 것
- FAT, Inode, free space 등의 구조 포함
- Booting
- ROM에 있는 “small bootstrap loader”의 실행
- CPU는 하드디스크를 직접 접근하지 못한다.
- ROM - 전원이 나가도 데이터가 유지되는 영역
- sector 0 (boot block)을 load하여 실행
- sector 0은 “full Bootstrap loader program”
- OS를 디스크에서 load하여 실행
Disk Scheduling
- Access time의 구성
- Seek time
- 헤드를 해당 실린더로 움직이는데 걸리는 시간(가장 많은 시간을 차지)
- Rotational latency
- 헤드가 원하는 섹터에 도달하기까지 걸리는 회전 지연시간(Seek time의 약 1/10정도)
- Transfer time
- 실제 데이터의 전송 시간(굉장히 작은 시간을 차지)
- 고속의 입출력이 필요한 경우 한 번의 seek로 많은 데이터를 읽고 쓰게하면 효율적(시간이 빠르다)이다.
- Seek time
Disk Scheduling Algorithm
- Disk 내에서 스케줄러가 실행되는 것이 아니기 때문에 논리 블럭 번호를 가지고 스케줄링을 진행하게 된다.
FCFS(First Come First Service)
- 안쪽과 바깥쪽 요청이 번갈아 들어오면 굉장히 비효율적으로 동작한다.
SSTF(Shortest Seek Time First)
- Queue에서 현재 Head에서 가장 가까운 요청을 먼저 처리한다.
- Starvation이 발생할 수 있다.
SCAN
- 간단하면서 가장 획기적인 방법
- 엘리베이터 스케줄링이라고도 불린다.
- Queue에 어떤 요청이 들어왔는지 상관없이 가장 안쪽에서 가장 바깥을 왕복한다.
- 가는 길목의 모든 요청을 처리하며 다시 반대쪽 끝으로 이동한다.
- 문제점 : 실린더 위치에 따라 대기 시간이 다르다.
- 가운데 부분이 대기시간이 짧고, 양쪽은 대기시간이 길다.
C-SCAN
- SCAN의 대기시간 불균형 문제를 해결
- 다른쪽 끝에 도달했으면 요청을 처리하지 않고 곧바로 출발점으로 다시 이동
- SCAN보다 균일한 대기 시간을 제공하지만, 이동 거리는 조금 더 길어질 수 있다.
N-SCAN
- SCAN의 변형 알고리즘
- 일단 arm이 한 방향으로 이동하기 시작했을 때 들어오는 요청들은 다음 이동에 처리한다.
- Queue에 들어오는 요청의 대기시간의 분포가 조금 더 균일해지는 특징이 있다.
LOOK
- SCAN, C-SCAN의 비효율을 개선
- 가는 방향의 요청이 없으면 방향을 바꾼다.(엘리베이터와 유사)
C-LOOK
- C-SCAN처럼 한쪽 방향만 요청을 처리하는데, 한쪽방향은 제일 낮은 주소까지만 이동한다.
Swap-space Management
- Swap-space
- Virtual Memory System에서는 디스크를 memory의 연장 공간으로 사용
- 파일시스템 내부에 둘 수도 있으나 별도 partition 사용이 일반적
- 공간 효율성보다는 속도 효율성이 우선
- 공간 효율성을 위해 연속할당, linked allocation 등의 효율적인 방식을 사용한다.
- 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조됨
- 따라서, block의 크기 및 저장방식이 일반 파일시스템과 다름
- 공간 효율성보다는 속도 효율성이 우선
- Seek time을 줄이기 위해서 굉장히 큰 단위로 swap 데이터를 할당한다. (16~512kb 등)
RAID
- Redundant Array of Independent Disks
- 여러 개 디스크를 묶어서 사용
- RAID의 사용 목적
- 디스크 처리 속도 향상
- 여러 디스크에 block의 내용을 분산 저장
- 병렬적으로 읽어옴(Interleaving, striping)
- 신뢰성 향상
- 동일한 정보를 여러 디스크에 중복 저장
- 하나의 디스크가 고장(failure) 시 다른 디스크에서 읽어옴(Mirroring, shadowing)
- 단순한 중복 저장이 아니라 일부 디스크에 parity를 저장하여 공간의 효율성을 높일 수 있다.
- 디스크 처리 속도 향상
'Computer Science > 운영체제' 카테고리의 다른 글
반효경 운영체제 - 9. File System (1) | 2023.05.28 |
---|---|
반효경 운영체제 - 8. 가상 메모리 (0) | 2023.05.13 |
반효경 운영체제 - 7. 메모리 관리 (3) | 2023.05.11 |
반효경 운영체제 - 6. DeadLock (1) | 2023.05.08 |
반효경 운영체제 - 5. Process Synchronization (0) | 2023.05.07 |