운영체제 : 스토리지와 입출력

김가영·2021년 6월 5일
2

computer-science

목록 보기
7/11
post-thumbnail

대용량 저장장치 구조

  • Mass-Storage
    비휘발성, secondary storage system
    주로, HDD(Hard Disk Drive) or NVM(Non-Volatile Memory)
    광학디스크, cloud storage, 광항 디스크 → RAID

가장 전통적인 것은 Hard Disk Drives

HDD Scheduling

  • access time(또는 seek time)을 최소화
  • data transfer bandwith 최대화

seek time
device arm이 head를 원하는 sector로 옮기는데 걸리는 시간

disk bandwith
한 번 transfer되는 bytes 용량 / 전체 시간

FIFO

SCAN

양끝을 이동하면서 요청들을 모두 처리한다.

C-SCAN

SCAN과 유사, but uniform wait time
head를 한 방향으로만 이동하는 것, 시작방향으로 돌아올땐 읽지 않고 이동만 한다.

Boot Block

전원이 시작했을 때 처음으로 커널을 load해주는 것을 bootstrap loader이라고 했다.
Bootstrap loader는 NVM flash memory에 저장된다.

RAID

Redundant Arrays of Independent Disks

  • 디스크 구성 기술
  • 성능과 신뢰성 이슈를 해결하기 위한 방법들

Redundancy → Improvement of Reliability

중복을 허용한다.

  • 분실된 정보를 리빌드하기 위한 별도의 정보를 저장한다.
  • 가장 간단한 방법 : mirroring → 모든 데이터를 복제해놓는다.

Parallelism → Improvement of Performance

  • 여러개의 drive를 이용할 경우 data striping을 사용하여 전송 비율을 향상할 수 있다.
  • bit-level striping : 여러 드라이브에 각 바이트의 비트를 나누어 저장
  • block-level striping도 있다

RAID LEVELs

  • mirroring : highly reliable but expensive
  • striping: cheap, not related to relibility
  • parity bit: data bit의 1의 개수가 짝수인지 홀수인지를 추가로 저장 → bit가 손상되었는지의 여부를 판단할 수 있다.
  • RAID levels : cost performance trade-off를 이용하여 분리
    RAID 0 : non-redundant striping
    RAID 1 : mirrored disks
    RAID 4 : block-interleaved parity (parity disk 추가)
    RAID 5 : block-interleaved distributed parity (각 disk에 parity)
    ...

I/O systems

컴퓨터가 하는 일은 크게 computing과 I/O로 나눌 수 있다.
보통 I/O가 더 주된 작업이 많다. (ex : file editing, youtube, game...)

입출력시 운영체제는 입출력 작업 및 입출력 장치를 관리하고 제어하는 일을 담당한다.

Memory-Mapped I/O

입출력 전송을 위해 processor는 어떻게 명령어와 데이터를 컨트롤러에 전달하는가?
모든 컨트롤러는 register를 가지고 있기 때문에 이들 컨트롤러의 레지스터에 비트 패턴을 쓰거나 읽음으로써 입출력을 수행한다. 각 주변 장치 레지스터들은 메모리 주소와 일대일 대응하게 되고, CPU는 이러한 mapped location을 이용하여 명령을 사용한다.

Three types of I/O

  • polling(or busy waiting)
    busy bit가 소거될떄까지 반복해서 상태 register를 읽는다.
  • interrupt
    CPU는 매 명령어가 끝날때마다 다음 명령어를 수행하기 전에 interrupt request line이라는 선을 검사한다. 입출력 하드웨어 컨트롤러가 이 line에 신호를 보내면 CPU가 알아차리고, 제어를 인터럽트 핸들러로 전달한다. 인터럽트 핸들러가 데이터를 처리(입출력 장치를 서비스)하고 인터럽트로부터 복귀한다.
  • DMA(Direct Memory Access)
    register을 통해서 I/O를 하는 대신, 직접 접근한다. 큰 데이터를 옮길때 유용하다. CPU 도움 없이 직접 버스를 통해 입출력을 수행할 수 있다.

Blocking I/O vs Non-BLocking I/O

  • Blocking I/O : thread가 running 에서 waiting상태로 간다.
  • Non-BLocking I/O : thread의 실행을 멈추지 않는다. 연산을 하는 중에 keyboard와 mousedml input을 받는 것이 한 예.
  • Asynchronous system call vs Non-Blocking system call:
    Non-blocking은 그 시점에서 가지고 올 수 있는 데이터를 가지고 return 한다. (그 데이터가 일부일지라도)
    Asynchronous는 요청만 하고 입력이 완전히 끝난 후 (인터럽트나 콜백루틴 등을 통해) 입출력이 완료됐음을 전달받는다.

File System

  • File : 저장장치의 물리적 특성을 추상화한 논리적 저장 단위
    크게 두가지 file, directory(folder)

Access Method

파일에 대한 접근방법

  • Sequential access : 저장된 레코드 순서대로 차례대로 접근한다.
  • direct access: 파일을 번호를 갖는 일련의 블록(or record)으로 간주하여 순서의 제약 없이 접근이 가능하다.

디렉터리 구조

  • single level: 파일 하나, 폴더 하나
  • two level
  • tree-structured

파일 시스템의 구현

Allocation Method

  • 파일을 어떻게 저장장치 공간에 배치할 것인가?
  • Contiguous Allocation
    연속적으로 통째로 올림
    external fragmentation, need for compaction
  • Linked Allocation
    연속 할당의 모든 문제를 해결한다.
    파일을 쪼개고, linked list처럼 연결
    sequential access에서는 효과적이지만, direct access에는 시간이 오래걸린다
    → FAT : 디스크 블록 번호만을 index로 가지고, 각 항목은 다음 블록 번호를 가리킨다.
  • Indexed Allocation
    모든 포인터들을 하나의 장소(index block)에 모아놓는다. i번째 항목은 i번째 block을 가리킨다.
    linked allocation(without FAT)의 단점을 없애준다.

Free-Space Management

쓰지 않는 space들의 list를 가지고 있어야 나중에 이용이 가능하다.

profile
개발블로그

0개의 댓글