observe_db

[OS] 10. Secondary Storage Management(보조기억장치 관리) 본문

학교 공부/운영체제(OS)(3-1)

[OS] 10. Secondary Storage Management(보조기억장치 관리)

쩡윤 2023. 5. 26. 23:54

(강의 날짜)
 
Part 1.
보조기억장치(secondary storage)

  • 대량의 저장공간 제공
  • 블록 단위 접근(read/write)
  • 저속 접근
  • 순차적 저장장치(sequential storage) ex) 자기테이프
  • 무작위 접근 저장장치(random access storage) ex) 자기 디스크, 플래시 메모리

보조기억장치 관리 필요성

  • 전체 시스템 성능의 병목(bottleneck)에 해당
  • 보조기억장치 성능향상이 전체 성능에 크게 기여 가능
  • 소프트웨어적 성능향상과 하드웨어적 성능 향상

구조
직접 연결 저장장치(direct-attached storage, DAS)

  • I/O 버스에 연결된 I/O 포트에 장착된 저장장치

네트워크 연결 저장장치(Network-attached storage, NAS)

  • 네트워크를 통해 연결된 저장장치
  • NFS(network file system)와 같은 client-server 방식으로 접근 제어
  • 파일 시스템 구조 및 통신 부담 때문에 확장성(scalability) 및 접근 속도 제약
  • 파일 단위로 관리

광저장장치 영역 네트워크(Storage Area Network, SAN)

  • 광체널(fibre channel)등 고성능 네트워크를 통해 원격 컴퓨터의 보조기억장치를 대규모로 공유하도록 하는 구조
  • 전체 저장장치가 하나의 파일 시스템으로 간주
  • 블록 단위 접근
  • NAS 보다 일반화

 
자기디스크(magnetic disk)

  • 물리적으로 구동되는 원반(platter)과 암(arm) 포함
  • 자기 디스크를 트랙(track)과 섹터(sector)로 구분

접근시간(access time)

  • 탐색시간(seek time): 헤드를 움직여 적절한 트랙 위로 이동하는데 걸리는 시간
  • 회전 지연시간(rotational latency): 헤드를 대상 섹터 위로 이동하는 데 걸리는 시간
  • 전송 시간(transfer time): 데이터를 주고받는데 걸리는 시간

 
디스크 입출력 시스템
구성

  • 호스트 버스 어뎁터(host bus adapter, HBA)
    • 시스템 보드에서 하드디스크 컨트롤러로 명령어를 전송하고, 데이터를 주고받는 역할
  • 디스크 컨트롤러(disk controller)
    • 하드디스크에 대한 저수준 연산 제어
    • 하드디스크에 내장
  • 디스크(disk)
    • 인터페이스 프로토콜(interface protocol)

 
Part 2.
디스크 스케줄링(disk scheduling)

  • 디스크 드라이브에 대한 접근시간을 줄일 수 있도록 디스크에 대한 서비스 요청을 효과적으로 관리하는 것
  • 성능 척도
    • 처리량: 단위 시간당 처리되는 요청의 개수
    • 평균 응답시간: 요청이 처리될 때까지 대기한 평균 시간
    • 응답시간의 분산: 응답시간의 예측성 측정
  • 스케줄링 목적
    • 처리량 최대화
    • 응답시간 및 응답시간의 분산 최소화

탐색시간 최적화 스케줄링
선착순(FCFS) 스케줄링

  • 먼저 도착한 요청 우선적으로 서비스 받게 처리
  • 장점
    • 공평(fair)
    • 무기한 대기 방지
    • 낮은 구현 비용
  • 단점
    • 낮은 처리량 가능(무작위 탐색 패턴)

최단 탐색시간 우선(SSTF) 스케줄링

  • 탐색 거리가 가장 짧은 요청이 먼저 서비스
  • FCFS보다 높은 처리량, 짧은 응답시간
  • 일괄처리 시스템에 적합
  • 공평성 보장X(무기한 대기의 가능성)
  • 응답시간의 분산이 큼-> 대화형 시스템 부적합

SCAN 스케줄링

  • 헤드가 이동하는 방향에서 가장 가까이 있는 요청 먼저 서비스
  • 헤드가 끝까지 가면 다시 반대쪽으로 끝까지 가면서 요청 처리
  • 진행 방향에 새로 도착하는 요청도 처리
  • 무기한 대기 발생X

C-SCAN 스케줄링

  • 헤드는 항상 바깥쪽 실린더에서 안쪽 실린더로 이동하면서 가장 짧은 탐색 시간을 갖는 요청 처리
  • SCAN 방식에 비해 대기 시간 균등화

FSCAN(Freeze SCAN) 스케줄링

  • 주기적으로 디스크 요청 대기열을 고정하여 이때 대기열에 있는 요청만 처리
  • 도중에 도착하는 요청은 다음 주기에

N-Step SCAN 스케줄링

  • 요청 대기열의 처음 N개의 요청 단위로 SCAN 방식으로 처리
  • 응답시간 분산을 축소시키는 효과

LOOK 스케줄링

  • 일명 엘리베이터 알고리즘
  • SCAN과 유사하나 헤드를 움직일 때 진행방향에 요청이 없으면 마지막 실린더까지 가지 않음

C-LOOK 스케줄링

  • C-SCAN을 LOOK과 같이 처리

 
회전 지연시간 최적화
회전 최적화(rotational optimization)

  • 과거에는 탐색 시간만 주된 최적화 요소
  • 기술의 발전에 따라 회전 지연시간도 동일한 단위(order)의 시간 요구

최단지연시간우선(SLTF) 스케줄링

  • 현재 실린더에서 회전 지연이 가장 적은 것 먼저 처리

 
이동시간 및 접근시간 스케줄링
최단 위치이동 시간 우선(Shortest-positioning-time-first, SPTF) 스케줄링

  • 위치이동시간 == 탐색시간 + 회전지연
  • 위치이동시간이 최소인 요청부터 처리
  • 무기한 대기 요청 가능성

최단 접근시간 우선 스케줄링(SATF)

  • 접근시간 == 위치이동시간 + 전송시간
  • 접근시간 최소인 요청부터 처리
  • 무기한 대기 요청 가능성

 
마감시간 디스크 스케줄링

  • 무기한 대기 상황을 피하기 위해 디스크 요청에 대해 마감시간 부여.(시간 이내에 요청 처리)
    • 읽기 마감시간 기본 500ms
    • 쓰기 마감시간 기본 5s
  • 마감시간 대기열
    • 읽기 요청 및 쓰기 요청 각각을 관리하는 FIFO 대기열
  • 정렬된 대기열
    • 읽기 요청 및 쓰기 요청을 섹터번호의 증가 순으로 관리하는 대기열
  • 각 요청은 마감시간 대기열과 정렬된 대기열에 각각 삽입
  • 읽기 요청을 쓰기 요청보다 우선 처리
  • 마감시간 대기열의 첫번째 요청 확인 => 마감시간 초과 요청을 먼저 처리
  • 정렬된 대기열에서 여러 요청을 순차적으로 처리
  • 리눅스에서 기본 디스크 스케줄링 방법

 
완전공정 대기열 디스크 스케줄링(CFQ)

  • 프로세스마다 I/O 대기열 보유, 최대한 균등하게 예약
  • 많은 프로세스가 세세한 I/O를 많이 발생시킬 때 적합
  • Fedora Core 커널 패키지의 기본 제공

 
디스크 스케줄링

  • 효과가 미미한 경우도 발생(CPU를 많이 사용하는 프로세스 위주의 환경에서)
  • 디스크 요청이 디스크 상에서 무작위 위치로 발생할 때 효과적
  • 파일 시스템의 구조에 따른 영향도 발생 가능

디스크 캐시(disk cache)

  • 디스크 데이터의 사본을 더 빠른 메모리에 저장
  • 주 메모리, 보드상 캐시, 또는 디스크 컨트롤러에 위치
  • 디스크보다 빠른 접근 지원
  • 디스크가 여유로워질 때까지 디스크에 기록할 데이터를 잠시 보관
  • write-through caching: 수정시 바로 디스크에도 기록
  • write-back-caching: 수정 내용을 디스크 캐시에 저장했다가 주기적으로 디스크 기록

 
Part3.
RAID(Redundant Array of Inexpensive Disks/Redundant Array of Independent Disks)

  • 여러개의 하드디스크에 일부 중복된 데이터를 나눠서 저장
  • 디스크 용량/성능/신뢰도 개선목적

Level 0-스트리핑

  • 파일을 여러개의 조각으로 나누어 디스크에 분산 저장
  • 스트립별로 R/W 가능(처리속도 개선)

Level 1-미러링

  • 복사본 유지

Level 2

  • Bit level Hamming ECC Parity 사용
  • Bit 수준에서 스트리핑: 하나의 word가 여러 디스크에 나누어져 저장
  • 별도의 패리티 비트를 저장하는 디스크 사용
  • ECC(Error Correction Code) 계산 시간 부담 발생

Level 3

  • Bit-level XOR ECC Parity
  • XOR을 사용하여 ECC 계산(1개 디스크만)

Level 4

  • Block-Level XOR ECC Parity
  • RAID Level 3와 유사- 비트수준이 아닌 블록 수준 스트라이핑

Level 5

  • Block-Level Distributed XOR ECC Parity
  • Level 4와 유사-패리티 정보가 디스크에 분산 저장

Level 6

  • Level 5와 유사- 2비트 패리티 정보가 디스크에 분산 저장

비교


 


[0] 주석

Comments