Published on

보조기억장치와 입출력 장치

Authors
  • avatar
    Name
    손예지(Liv)

본 시리즈는 혼자 공부하는 컴퓨터 구조 책을 스터디 하며 남기는 기록 중 네번째 시리즈 입니다. 이전 시리즈 보러가기

보조기억장치

다양한 보조기억장치

하드 디스크

  • 자기적인 방식으로 데이터 저장하는 보조기억장치
  • 플래터
    • 하드디스크에서 데이터 저장되는 곳
  • 스핀들
    • 플래터를 회전시키는 구성요소(가운데 동그라미)
      • 단위 : 분당회전수 RPM
  • 헤드
    • 플래터를 대상으로 데이터를 읽고 쓰는 구성요소
    • 헤드는 디스크 암에 부착 -> 원하는 위치로 헤드 이동시킴
  • 플래터에 데이터가 저장되는 방식
    • 저장 단위 : 트랙(track), 섹터(sector)
    • 트랙을 모아 연결한 단위는 실린더
  • 저장된 데이터에 접근하는 과정
    • 탐색 시간(seek time)
      • 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간
    • 회전 지연(rotational latency)
      • 헤드가 있는 곳으로 플래터를 회전시키는 시간
    • 전송 시간(transfer time)
      • 하드디스크 - 컴퓨터 간 데이터 전송하는 시간

플래시 메모리

  • 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장장치
  • 일상에서 사용하는 전자제품 대부분에 사용
  • 종류
    • SLC(Single Level Cell)
      • 한 셀로 두개 정보 표현
      • 수명이 가장 길지만 용량대비 가격도 가장 높음
      • 고성능, 빠른 저장장치 필요한 경우 SLC 사용
    • MLC(Multiple Level Cell)
      • 한 셀로 네개 정보 표현 -> 한 셀에 두비트씩 저장
        • 대용화 하기 좋다
    • TLC(Triple Level Cell)
      • 한 셀로 여덟개 정보 표현
      • 용량 대비 저렴한 가격
    • 썼다 지우기를 자주 반복, 높은 성능 : SLC
    • 저가의 대용량 저장 장치 : TLC
    • 중간 : MLC
  • 단위
    • 셀 < 페이지 < 블록 < 플레인 < 다이 die
    • 페이지의 세개 상태
      • Free
      • Valid
        • 유효한 데이터를 저장하고 있는 상태
      • Invalid
        • 쓰레기값 이라고 부르는 유효하지 않은 데이터 저장한 상태
    • 플래시 메모리에서 저장된 데이터를 수정할때 덮어쓰는게 불가능 해 이전 값은 쓰레기 값이 됨
    • 사용하지 않지만 용량을 차지하고 있는 문제 -> 해결하기 위해 garbage collection 기능 제공
      • 유효한 페이지만 새로운 블록으로 복사하고 기존 블록을 삭제하여 공간 정리하는 기능

RAID의 정의와 종류

  • 정의
    • RAID(Redundant Array of Independent Disks)
    • 여러개의 물리적 보조기억장치를 하나의 논리적 보조기억장치처럼 사용하는 기술
  • 종류
    • RAID 0
      • 데이터를 보조기억장치 갯수만큼 나눠서 저장
        • 저장된 데이터 : stripe
        • 분산해 저장하는 것 : striping
      • 데이터를 여러개에 나눠서 읽어오기 때문에 한개의 보조기억장치보다 갯수만큼 빨라진다
      • 단점
        • 한개의 하드디스크에 문제가 생겨도 다른 하드디스크를 읽지 못할수도
    • RAID 1 = mirroring
      • 저장하는 데이터의 복사본을 만듬
      • 복구가 간단
      • 단점
        • 복사본의 용량만큼 사용자가 사용 불가능 -> 비용증가
    • RAID 4
      • 완전한 복사본과 오류 검출을 위한 저장장치를 따로 두는 방식
      • 패리티 비트
        • 오류 검출만 가능 하지만 RAID에서는 오류 수정도 가능
    • RAID 5
      • RAID4의 병목현상 해결하기 위해
      • 패리티 정보를 분산해 저장해 병목현상 해결
    • RAID 6
      • 두개의 패리티
      • RAID5 보다 느림 -> 저장 속도 보다 데이터를 안전하게 보관하고 싶을때 사용
    • 혼합
      • 여러 RAID 레벨을 혼합한 방식 : Nested RAID

입출력장치

장치 컨트롤러와 장치 드라이버

장치 컨트롤러

  • 입출력 장치가 다루기 어려운 이유
    • 입출력 장치 종류가 많음 -> 규격화 어려움
    • 입출력 장치의 데이터 전송률은 CPU와 메모리에 비해 적음
    • -> 컴퓨터에 직접 연결되지 않고 장치 컨트롤러 통해 연결
  • 장치 컨트롤러 역할
    • CPU와 입출력 장치 간 통신 중계
    • 오류 검출
    • 데이터 버퍼링
      • 데이터를 임시저장공간 버퍼에 담았다가 조금씩 내보내는 방법
    • 데이터 레지스터
    • 상태 레지스터
    • 제어 레지스터

장치 드라이버

  • 장치 컨트롤러의 동작을 감지, 제어
    • 장치 컨트롤러가 컴퓨터 내부와 정보 주고받게 하는 역할
  • 장치 드라이버는 운영체제 통해서 실행된다

다양한 입출력 방법

프로그램 입출력

  • CPU가 명령어를 어떻게 읽을까
    • 메모리 맵 입출력 memory-mapped I/O
      • 메모리에 접근하기 위한 주소공간과 입출력장치에 접근하기 위한 주소공간을 하나의 주소공간으로 간주
    • 고립형 입출력
      • 메모리에 접근하는 주소공간, 입출력 장치에 접근하는 주소공간을 분리
  • 인터럽트 기반 입출력
    • 인터럽트 발생 -> CPU - 하드웨어 사이에서 장치 컨트롤러가 입출력 제어
    • 인터럽트가 동시에 발생하면?
      • 순서대로 처리
      • 우선순위가 높은 인터럽트 처리
        • 프로그래머블 인터럽트 컨트롤러 사용

DMA 입출력

  • 입출력장치와 메모리가 cpu를 거치지 않고 상호작용할 수 있는 방식
  • DMA 컨트롤러(하드웨어) 필요
  • 시스템 버스는 공용자원이어서 CPU와 DMA 컨트롤러가 동시에 사용 불가
    • CPU가 시스템 버스 사용하지 않을때, CPU가 일시적으로 시스템 버스 이용하지 않도록 하고 이용
    • 사이클 스틸링(cycle stealing)
  • 입출력 버스
    • DMA 를 위해 시스템 버스 자주 사용하게 되는 문제 해결하기 위해 사용
    • DMA 컨트롤러 통해서 장치 컨트롤러가 연결 -> 시스템 버스 사용 빈도 줄임
      • 입출력 전용 CPU(입출력 프로세서, 입출력 채널) 도 만들어짐

알게된 점

가비지 컬렉션이 자바에서 동작하는 건 알고 있었는데 플래시메모리를 공부하면서 하드웨어에도 가비지 컬렉션이 있다는 것을 알게되었습니다.

자바에서는 JVM에서 객체의 참조 여부를 확인해 더이상 참조되지 않는 데이터를 가비지 컬렉션으로 제거하지만 플래시 메모리에서는 데이터를 수정할 경우 데이터를 덮어쓸 수 없기 때문에 가비지 컬렉션이 필수적입니다. Invalid 상태의 데이터가 생기고 가비지 컬렉션을 통해서 새롭게 데이터를 저장할 공간을 확보합니다.

참고자료

혼자 공부하는 컴퓨터 구조 + 운영체제
How the Garbage Collector Works in Java, Python, and Go!
HotSpot Virtual Machine Garbage Collection Tuning Guide