[운영체제] #12 Disk Management and Scheduling

또상·2022년 10월 31일
0

Operating System

목록 보기
13/13
post-thumbnail

Disk Structure

  • Logical Block
    • 디스크 외부에서 보는 디스크 단위 정보 저장 공간
    • 주소를 가진 1차원 배열처럼 취급
    • 정보를 전송하는 최소 단위
  • Sector
    • Logical Block 이 실제 물리적인 디스크에 매핑된 위치
    • Sector 0 : 가장 바깥쪽 실린더의 첫 트랙의 첫번째 섹터로 부팅 관련 정보가 들어감.



Disk Management

Physical Formatting (Low-level formatting)

  • 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정
  • 각 섹터는 header + 실제 Data (512 byte) + trailer 로 구성
  • header 와 trailer 에는 부가 정보가 들어감
    • sector number, ECC (Error Correcting Code) ...
      • ECC : 해당 data 의 hash 함수 값을 저장해서
        저장된 hash 값 == hash(data) 인지 확인해서 배드 섹터인지 확인.
        ECC 의 규모에 따라 Error 수정이 가능한 경우도 있다.
    • Controller 가 직접 접근 및 운영
  • 옛날엔 직접 하기도 했으나 요즘에는 HDD 를 사면 이 과정은 이미 되어서 나옴.

Partitioning

  • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
  • OS 는 이것을 독립적인 disk 로 취급 (logical disk)

Logical Formatting

  • 파티션에 파일시스템을 설치
  • FAT, iNode, free space 등의 구조 포함.

Booting

CPU 는 메모리에만 접근 할 수 있다. 그런데 메모리는 전원이 꺼지면 내용이 휘발됨 -> 어떻게 부팅..? -> ROM 이라는 전원이 꺼져도 내용이 유지되는 작은 HW 사용.

  1. 컴퓨터 전원을 켜면 CPU 가 ROM 을 가르키게 됨.
  2. ROM 에 있는 small bootstrap loader 실행
  3. sector 0 (boot block) 을 load 하여 실행
  4. sector 0 은 full bootstrap loader 를 실행
  5. OS 를 디스크에서 load 하여 실행



Disk Scheduling

Access Time 의 구성

  • Seek Time
    • 헤드를 해당 실린더로 움직이는데 걸리는 시간 (in-out)
    • 기계 장치가 이동해야해서 시간이 많이 걸림
  • Rotational Latency
    • 헤드가 원하는 섹터에 도달하기까지 걸리는 회전 지연 시간
  • Transfer Time
    • 실제 데이터의 전송 시간
    • 굉장히 작은 시간

Disk bandwidth

  • 단위 시간 당 전송된 바이트의 수

Disk Scheduling

  • Disk bandwidth 를 높이기 위해
  • seek time 을 최소화하는 것이 목표.
  • Seek time ~= Seek distance

Algorithm

  • 53에서 시작 (실린더 위치는 0~199)
  • 요청 : 98 183 37 122 14 124 65 67

FCFS

First Come First Service


SSTF

Shortest Seek Time First

  • Startvation : 짧은게 계속 들어오면 멀리 있는 것은 절대 접근하지 못할 수 있음.

SCAN

elevator scheduling

  • disk arm 이 디스크 한쪽 끝에서 반대쪽 끝까지 이동하면서 가는 길목에 있는 모든 요청을 처리
  • 한쪽 끝에 도착하면 다시 반대쪽으로 이동하면서 오는 길목에 있는 모든 요청 처리
  • 문제점 : 실린더의 위치에 따라 대기 시간이 다르다. (가장자리 쪽이 덜 기다림)

C-SCAN

  • 한쪽 끝에서 다른 쪽 끝까지 가면서 길목에 있는 모든 요청 처리
  • 다른쪽 끝에 도달하면 요청을 처리하지 않고 출발점으로 이동
  • 이동 거리는 조금 길어지지만 SCAN 보다 균일한 대기 시간


N-SCAN

  • arm 이 한 방향으로 움직이기 시작하면 그 시점 이후에 도착한 job 은 돌아올 때 service (가는 도중에 들어온 건 다음에 처리)

LOOK

  • SCAN : 헤드가 디스크 끝에서 끝으로 이동
  • LOOK : 헤드가 한쪽으로 진행하다가 그 방향에 더 처리할 요청이 없으면 헤드 이동 방향을 반대로 틀어서 이동 시작.
    • LOOK 양쪽으로 왔다갔다 하면서 다 처리

C-LOOK

  • C-LOOK : 한쪽으로 가고 그 방향 끝 요청에 다다르면 맨 처음 요청으로 돌아와서 다시 같은 방향으로 처리 시작.

결정

  • SCAN, C-SCAN / LOOK, C-LOOK 이 일반적으로 디스크 입출력이 많은 시스템에서 효율적.
  • File 할당 방법에 따라 디스크 요청도 영향을 받는다.
    • ex) 연속 할당 -> 헤드 이동이 줄어듬.
    • 요즘은 여러 요청을 merge 해서 한꺼번에 처리
  • 필요할 경우 다른 알고리즘으로 교체할 수 있도록 OS 와 별도의 모듈로 작성하자.



Swap-Space Management

Disk 를 사용하는 2가지 이유

  • memory 는 휘발성이라서 -> file system (유지해야 하는 정보를 저장)
  • 프로그램 실행을 위한 memory 공간 부족 -> swap area

Swap-Space

  • Virtual Memory System 에서는 디스크를 memory 의 연장 공간으로 사용
  • 파일 시스템 내부에 둘 수도 있으나 별도의 partition 사용이 일반적
    • 공간효율성보다는 속도 효율성이 우선 (seek time 을 줄여야 함)
    • 일반 파일보다 훨씬 짧은 시간만 존재 (곧 사라질거니 큰 단위여도 괜찮음) 하고 자주 참조됨.
    • 따라서, block 의 크기 및 저장 방식이 일반 파일시스템과 다름



RAID

Redundant Array of Independent Disk
여러개의 디스크를 묶어서 사용 (중복 저장 or 분산 저장)

사용 목적

  • 디스크 처리 속도 향상
    • 여러 디스크에 block 내용을 분산 저장
    • 병렬적으로 읽어 옴 (interleaving : 동시에 읽음, striping : 조금씩 저장)
  • 신뢰성 향상
    • 동일 정보를 여러 디스크에 중복 저장
    • 하나의 디스크가 고장나도 다른 디스크에서 읽어올 수 있다 (Mirroring, Shadowing)
    • 단순히 통으로 디스크를 중복 저장할 수도 있고,
    • 일부 디스크에 parity 를 저장해서 오류가 생겼는지 감지하고 복구할 수 있을 만큼만 저장해서 공간 효율성을 높일 수도 있다.



출처 / 참고

반효경 교수님의 2014 운영체제 12. Disk Management and Scheduling 2 강의를 듣고 포스팅하고,
공룡책을 읽고 추가 정리합니다.

사진 출처는 강의 자료.

profile
0년차 iOS 개발자입니다.

0개의 댓글