본문 바로가기

Dev/CS 컴퓨터사이언스

[혼공컴운/OS] 입출력장치 | 장치 컨트롤러 | 프로그램 입출력 | 인터럽트 입출력 | DMA 입출력 | 장치 드라이버

728x90
반응형

장치 컨트롤러

컴퓨터 내부와 정보를 주고 받을 수 있도록 하는 하드웨어적인 통로

 

장치 컨트롤러의 역할

  • CPU와 입출력장치 간의 통신 중개: CPU와 입출력장치간 데이터를 주고받을 수 있도록 해줌
  • 오류 검출: 연결된 입출력 장치에 문제가 없는지 오류 검출 및 확인
  • 데이터 버퍼링: 전송률이 다름으로써 생기는 문제를 해결하기 위해 데이터를 버퍼에 저장하여 전달

 

장치 컨트롤러의 데이터 입출력 방식

프로그램 입출력: 프로그램 속 명령어로 입출력 장치를 제어하는 방식

  • 메모리 맵 입출력: 메모리 접근 주소공간과 입출력 접근용 주소공간을 함께 사용
  • 고립형 입출력: 메모리 접근 주소 공간과 입출력 접근용 주소공간을 독립적으로 사용 (입출력장치 읽기/쓰기 선을 따로 둠으로써 가능해지는 방법임)

 

인터럽트 기반 입출력:

  • 하드웨어 인터럽트란?
    • CPU가 입출력 장치에게 장치 컨트롤러를 통해 업무 지시
    • 입출력 장치가 업무 수행
    • 업무가 끝나면 입출력 장치가 CPU에게 인터럽트를 날림으로써 작업이 끝남을 알림
  • 인터럽트 동시 발생 시 처리 방식
    • 순차 처리: 인터럽트가 발생한 순서에 따라서 처리
    • 우선순위 처리: 우선순위가 높은 인터럽트를 우선으로 처리
    • 이 때, 우선순위는 PIC(Programmable Interrupt Controller)를 통해 파악하고, PIC가 먼저 처리를 인터럽트를 CPU에게 전달한다. 무시할 수 없는 인터럽트인 NMI(Non-Maskable Interrupt)는 무조건 먼저 처리 된다

 

DMA 입출력: CPU를 거치지 않고 바로 입출력 장치와 메모리간 접근이 가능하도록 DMA 컨트롤러를 사용하는 방식

  • 동작 방식
    1. CPU가 DMA 컨트롤러에게 명령을 내림
    2. DMA 컨트롤러가 CPU 대신 메모리, 입출력 장치와 데이터를 전송해가며 업무 수행
    3. 업무가 다 끝나면 DMA 컨트롤러가 CPU에게 인터럽트를 걸어 작업이 끝남을 알림
  • 입출력 버스: DMA는 CPU와 시스템 버스를 공유하는데, 그러면 사이클 스틸링이 잦게 일어날 수 있음. 따라서 이를 최소한으로 줄이기 위해 DMA와 입출력 장치 간 서로 데이터를 전송할 수 있는 입출력 버스를 별도로 두었음 (예: PCI 버스, PCIe 버스)

 

 

장치 드라이버

장치 컨트롤러의 동작을 감지하고 제어하여 연결하기 위한 소프트웨어적인 통로

728x90
반응형