13-1주차. 입출력 시스템

나우히즈·2024년 8월 9일

OS

목록 보기
20/27

Disk Structure

디스크에는 여러개의 원판들이 존재하고 원판의 트랙에 데이터를 읽고 쓸 수 있다.
트랙은 여러개의 섹터로 구분된다. 섹터에 데이터를 저장하고 읽고 쓰는데, 그 동작을 디스크 헤드가 움직여서 수행하게 된다.

Logical block

  • 디스크의 외부에서 보는 디스크의 단위 정보 저장 공간
  • 주소를 가진 1차원 배열처럼 취급
  • 정보를 전송하는 최소 단위

Sector

  • Logical block 이 물리적인 디스크에 매핑된 위치
  • Sector 0 은 최외곽 실린더의 첫 트랙에 있는 첫 번째 섹터이다.

디스크 내부에서는 특정 원판 - 특정 트랙 - 특정 섹터에 데이터를 저장.
디스크 외부(컴퓨터 호스트)에서는 디스크 상의 위치를 이야기할 때, 논리적인 블록번호를 통해 접근한다.

Disk Management

physical formatting (Low-level formatting)

  • 디스크를 컨트롤러가 읽고 쓸 수 있도록 섹터들로 나누는 과정
  • 각 섹터는 < 헤더, 실제 데이터 (보통 512바이트), 트레일러 > 로 구성
  • 헤더와 트레일러는 섹터 번호, ECC(Error Correcting Code, 정보가 에러없이 잘 저장되어있는지 체크하는 코드)등의 정보가 저장되고 controller가 직접 접근 및 운영함.
  • 디스크 컨트롤러에 특정 섹터에 있는 데이터를 달라고 요청하면 컨트롤러가 읽고 512바이트의 데이터 뿐만 아니라 헤더와 트레일러의 데이터도 같이 읽게 됨.

Partitioning

  • 디스크를 하나 이상의 실린더 그룹으로 나누는 과정
  • OS는 이것을 독립적인 disk로 취급 (logical disk)
    디스크 하나를 사면, :C , :D 등으로 나눌 수 있는데 이를 파티셔닝이라고 함.
    운영체제 입장에선 물리적 디스크 하나가 전부가 아니라, 파티션한 요소 모두가 디스크가 됨.
    각 파티션된 디스크는 각각의 파일시스템을 설치해서 쓸수도 있고, 스왑영역으로 사용되기도 할 것.

Logical formatting

  • 파일 시스템을 만드는 것
  • FAT, inode, free space 등의 구조 포함

각 파티셔닝된 논리적 디스크에 파일 시스템을 설치하는 것을 의미.

booting

  • ROM에 있는 "small bootstrap loader" 의 실행
  • sector 0 (boot block)을 load하여 실행
  • sector 0 은 "Full bootstrap loader program"
  • OS를 디스크에서 불러와 실행

전원을 켜게 되면, CPU는 ROM의 0번 섹터의 기계어를 하나씩 실행시키게 됨. 일반적인 RAM은 휘발성이라 전원이 나가면 데이터가 사라짐. 따라서 전원이 나가도 데이터가 유지되는 ROM이라는 메모리에서 부트로더를 실행하게 되는것임.

Disk Scheduling

Access time의 구성

  • Seek time: 헤드를 해당 실린더로 움직이는데 걸리는 시간(굉장히 오래 걸림)
  • Rotational latency: 헤드가 원하는 섹터에 도달하기 까지 걸리는 회전지연시간
  • Transfer time: 실제 데이터의 전송시간

헤드가 움직이는 것이 Access time의 대부분을 차지함.

Disk bandwidth (대역폭)

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

Seek time을 최소화하는 것이 디스크 스케줄링의 목표.
-> Seek time ~= seek distance

디스크 스케줄링은 엘리베이터 스케줄링과 매우 유사.


FCFS(First Come First Served)

가장 먼저 온 것을 먼저 처리하는 것.
-> 비효울적.

SSTF (Shortest Seek Time First)

디스크 헤드의 현재위치로부터 seek time이 가장 짧은 위치를 가장 먼저 서비스하는 알고리즘.
starvation 문제가 발생할 수 있음.

SCAN

엘리베이터 스케줄링과 동일.
헤드는 디스크의 한 방향을 가면서, 이동하며 가는 길목에 있는 모든 요청 처리.
섹터 위치에 따라 대기시간의 편차가 존재한다.

C-SCAN

헤드가 한쪽 끝에서 다른 쪽 끝으로 이동하며 길목에 있는 모든 요청 처리.
다른쪽 끝에 도달하면 요청을 처리하지 않고 곧바로 출발점으로 다시 이동.
SCAN보다 균일한 대기시간을 제공.

Other algorithms

N-SCAN

SCAN과 동일하나, 한 방향으로 움직이기 시작하면 큐에 새로 들어오는 요청은 다음 턴에 서비스하게 됨.

LOOK / C-LOOK

한쪽 방향으로 이동할 때, 한쪽 끝까지 가는 것이 아니라 큐에 존재하는 최대/최소 번호까지만 서비스를 하고 방향을 바꾸는 방식.


어떤 알고리듬을 써야할까

일반적으로 SCAN, C-SCAN 및 LOOK, C-LOOK이 디스크 입출력이 많은 시스템에서 효율적.
파일의 할당 방법에 따라 디스크 요청이 영향을 받음
디스크 스케줄링 알고리즘은 필요한 경우 다른 알고리즘으로 쉽게 교체할 수 있도록 OS와 별도의 모듈로 작성되는 것이 바람직함.


Swap-Space Management

DISK -> file system / swap space 용도.

  • Disk 를 사용하는 이유
  1. 메모리의 휘발적인 특성 -> 파일 시스템의 유지 및 보관
  2. 프로그램 실행을 위한 메모리 공간 부족 시 -> 스왑 영역으로의 활용
  • Swap-space
    가상 메모리 시스템에서는 디스크를 메모리의 연장 공간으로 사용.
    파일 시스템 내부에 둘 수도 있으나 별도의 파티션 사용이 일반적.

스왑공간은 공간 효율성 보다는 속도 효율성이 우선시되고, 일반 파일보다 훨씬 짧은 시간만 존재하고 자주 참조되기 때문에 블록의 크기 및 저장 방식이 일반 파일시스템과는 다르다.

RAID

"Redundant Array of Independent Disks"

독립적인 디스크 여러 개를 연속하여 사용하는 방식.

RAID 장점

  1. 신뢰성 향상
    동일 정보를 여러 디스크에 중복 저장(이를 mirroring 또는 shadowing 이라고 함)
    하나의 디스크가 고장 시 다른 디스크에서 읽어옴.
    단순한 중복 저장이 아니라 일부 디스크에 parity(일종의 축약 정보)를 저장하여 공간의 효율성을 높일 수 있다.

  2. 디스크 처리 속도 향상
    여러 디스크에 블록의 내용을 분산 저장
    병렬적으로 읽어오므로써 속도를 향상시킴. (interleaving, striping)

0개의 댓글