운영체제 5장: 입출력

잠만보·2024년 12월 3일
0

운영체제

목록 보기
6/7

서론

OS 는 프로세스, 주소공간, 파일들에 대한 추상을 제공할 뿐만 아니라, 컴퓨터의 입출력 장치들을 관리한다.

여기에서는 OS 가 입출력을 어떻게 관리하는지 알아보겠다.

The I/O Subsystem

  • 운영체제에서 가장 크고 복잡한 서브시스템
  • 가장 많은 코드 라인을 포함
  • 코드 변경률이 가장 높음
  • 운영체제 엔지니어가 가장 많이 작업하는 부분
  • 철저히 테스트하기 어려움
  • 시스템의 성능 및 시장에서의 수용성에 큰 영향을 미침

I/O Devices

  • I/O 장치의 유형

    • 블록 장치

      • 고정 크기 블록에 데이터를 저장하며 각 블록은 고유 주소를 가짐
      • 각 블록을 독립적으로 읽거나 쓸 수 있음
      • 일반적인 블록 크기: 512바이트 ~ 32,768바이트
      • 예: 디스크, 메모리, CD-ROM, USB
    • 문자 장치

      • 블록 구조와 상관없이 문자 스트림을 주고받음
      • 주소 지정 불가, 탐색 불가
      • 예: 프린터, 네트워크 인터페이스, 마우스
    • 기타 장치

      • 클럭, 메모리 매핑된 화면 등

Principles of I/O Hardware

  • 일반적인 장치, 네트워크 및 데이터베이스의 속도
  • 장치와 데이터 전송 속도에는 큰 차이가 있음

Device Controllers

  • I/O 장치 구성 요소

    • 기계적 구성 요소
    • 전자적 구성 요소 (장치 컨트롤러 혹은 아답터)
  • 장치 컨트롤러

    • 여러 장치를 제어할 수 있음
    • 직렬 비트 스트림을 바이트 블록으로 변환
    • 필요한 경우 오류 수정 수행
    • 필요한 경우 데이터를 메인 메모리로 복사

Memory-Mapped I/O

  • 분리된 I/O 및 메모리 공간

    • I/O와 메모리에 서로 다른 주소 공간 할당

    • 각 제어 레지스터에 I/O 포트 번호 를 할당

    • 특수 I/O 명령어를 사용함

      • 예: IN REG, PORT, OUT PORT, REG
  • 메모리 매핑된 I/O

    • 각 제어 레지스터에 고유 메모리 주소 할당

    • 일반 메모리 참조 명령어를 사용하여 제어 레지스터에 접근

      • 예: store REG, Ether_Control_REG1
  • 하이브리드 방식

    • 위 두 가지 방식을 결합

Memory-Mapped I/O - 장점

  • 메모리 매핑된 I/O의 장점

    • 특수 명령어가 필요하지 않음

      • C/C++에서 장치 레지스터를 어셈블리 없이 주소 지정 가능
    • 사용자 프로세스가 I/O 수행을 제한하는 특별한 보호 메커니즘 불필요

      • I/O 레지스터의 주소 공간을 보호 페이지로 할당
    • 메모리를 참조할 수 있는 모든 명령어가 제어 레지스터를 참조 가능

      • 예:
        LOOP: TEST PORT_4
        BEQ READY
        BRANCH LOOP
        READY:

Memory-Mapped I/O - 단점

  • 캐시를 선택적으로 비활성화할 하드웨어 필요

    • 장치 레지스터는 캐시되면 안 됨
  • 모든 메모리 모듈과 I/O 장치는 모든 메모리 참조를 검사해야 함

    • 메모리 버스와 I/O 버스가 분리된 경우 세 가지 선택사항:

      1. CPU가 메모리 버스를 먼저 시도하고 실패하면 I/O 버스를 시도
      2. 메모리 버스에서 스누핑(메모리 버스에서 I/O 버스로 몇개 길을 빼줌) 장치를 사용 (I/O 장치에는 너무 고속일 수 있음)
      3. PCI 브리지 칩에서 주소를 필터링 (펜티엄 구성)

Direct Memory Access (DMA)

  • DMA (직접 메모리 접근)

    • 특정 하드웨어 장치가 CPU의 개입 없이 메모리를 읽거나 씀

    • CPU가 데이터 전송에 전체적으로 관여해야 하는 기존 방식에서 벗어남

    • CPU는 전송을 시작하고 다른 작업을 수행하다가 전송 완료 시 DMA 컨트롤러로부터 인터럽트 를 받음

  • DMA 전송 모드

    • Cycle Stealing (사이클 훔치기)

      • 컨트롤러가 CPU로부터 버스 사이클을 일부 훔쳐 단어 단위로 전송
    • Burst Mode (버스트 모드)

      • 컨트롤러가 버스를 확보하고 여러 단어를 전송
      • 전송 동안 CPU 또는 다른 장치가 차단됨

  • (중요!) 대부분의 DMA 컨트롤러는 물리적 주소 를 사용
  • 버스에서도 물리적 주소 만 전송함

Interrupts Revisited

  • 인터럽트 벡터

    • 해당 인터럽트 서비스 루틴의 새 프로그램 카운터를 가져옴
  • 하드웨어 상태 정보 저장 위치 (스택을 어디에 만들 것인가)

    • 현재 유저 스택

      • 스택 포인터가 유효하지 않을 수 있음
      • 페이지 끝에 도달하면 페이지 폴트 발생 가능
    • 커널 스택

      • 스택 포인터가 유효할 가능성이 높고 고정된 페이지에 있음
      • 커널로 전환하기 위해 MMU context switch 필요
      • 대부분 또는 전체 캐시 및 TLB를 무효화해야 할 수도 있음
  • 정확한(interrupt 정확도) 인터럽트와 부정확한 인터럽트

    • 정확한 경우, 시스템 상태가 잘 정의된 상태로 유지

    • 부정확한 경우, 운영체제가 많은 내부 상태 정보를 처리해야 함

Interacting with Disks

  • 과거에는 운영체제가 실린더 번호, 섹터 번호, 표면 번호, 전송 크기를 지정해야 했음

    • 즉, 운영체제가 디스크의 모든 매개변수를 알아야 했음
  • 현대 디스크는 더 복잡함

    • 모든 섹터가 동일 크기가 아니며, 섹터가 재배치됨

    • 디스크는 더 높은 수준의 인터페이스 제공 (예: SCSI)

      • 데이터를 [0 ... N] 범위의 논리 블록 배열로 제공
      • 논리 블록을 실린더/표면/섹터에 매핑
      • 운영체제는 논리 블록 번호만 지정하면 됨
      • 물리적 매개변수를 운영체제로부터 숨김
        • 장점: 단순성
        • 단점: 특정 제어 불가

Example Disk Characteristics

  • IBM Ultrastar 36XP 드라이브:

    • 형식: 3.5인치
    • 용량: 36.4GB
    • 회전 속도: 7,200 RPM (초당 120회, 음계 C3)
    • 플래터: 10개
    • 표면: 20개
    • 섹터 크기: 512~732바이트
    • 실린더: 11,494개
    • 캐시: 4MB
    • 전송 속도: 17.9MB/s(내부) ~ 28.9MB/s(외부)
    • 전체 탐색 시간: 14.5ms
    • 헤드 전환 시간: 0.3ms

Disk Performance

  • 성능은 여러 단계에 따라 달라짐
  1. 탐색(Seek): 디스크 암을 올바른 실린더로 이동

    • 디스크 암 이동 속도에 따라 달라짐

    • 탐색 시간은 점차 줄어들고 있음

  2. 회전(Rotation): 헤드 아래 섹터가 오기를 기다림

    • 디스크 회전 속도에 따라 달라짐

    • 속도가 점차 증가하고 있음

  3. 전송(Transfer): 데이터를 디스크 표면에서 디스크 컨트롤러로 전송한 뒤 호스트로 전달

    • 디스크의 데이터 밀도에 따라 달라짐

    • 데이터 밀도는 빠르게 증가하고 있음

  • 운영체제는 디스크 사용 시 이 모든 단계를 최소화하려 함
    • 특히 탐색 및 회전 지연을 줄이는 데 중점

RAID (Redundant Array of Independent Disks)

  • 디스크 병렬 사용으로 성능과 신뢰성을 개선하는 방법
  • 다양한 RAID 레벨이 존재함 (RAID 0~5)

RAID Level 0

  • 데이터 조각을 여러 디스크에 라운드 로빈 방식으로 분배

  • 대용량 요청 시 성능이 뛰어남

  • 데이터가 한 섹터씩 요청되는 경우 성능 이득 없음

  • 중복 데이터가 없어 신뢰성이 단일 디스크보다 낮음

RAID Level 1

  • 모든 디스크를 복제
  • 읽기 성능이 최대 2배 향상 가능

RAID Level 5

  • 패리티 데이터를 모든 디스크에 분산하여 패리티 디스크 병목 현상을 제거
  • 디스크 손상 시 복원 과정이 복잡함

Solid-State Drive (SSD)

  • 플래시 메모리를 사용하여 데이터를 영구 저장

    • 구성: 컨트롤러 + 플래시 메모리
  • 플래시 메모리 구조:

    • 페이지: 데이터 저장의 기본 단위, 읽기/쓰기 작업 단위

    • 블록: 페이지의 집합, 지우기 작업의 최소 단위

    • HDD와 달리 덮어쓰기가 불가능하며, 삭제 후 쓰기가 필요

Flash Translation Layer (FTL)

  • OS에서 보는 논리 블록을 SSD의 물리 페이지로 매핑
  • 웨어 레벨링과 가비지 컬렉션 수행

TRIM 명령어

  • OS에서 파일 삭제 시 실제 데이터 블록은 삭제되지 않음
  • TRIM 명령어를 통해 SSD에서 삭제된 데이터 블록을 무효화
profile
아프지 말자 - (잘못된 정보, 수정 사항 있으면 언제든지 알려주시면 감사하겠습니다!)

0개의 댓글