입출력 장치

augusstt·2022년 10월 20일
0

CS

목록 보기
5/11
post-thumbnail

이 글은 "혼자 공부하는 컴퓨터 구조 + 운영체제"를 읽고 이해한 내용을 복습하기 위해 작성하는 글입니다.

이미지 출처 : 혼자 공부하는 컴퓨터 구조 + 운영체제

보조 기억 장치

1. 장치 컨트롤러 / 장치 드라이버

  1. 장치 컨트롤러 (하드웨어적 통로)

    • CPU, 메모리와 전송률이 비슷하지 않기 때문에 컴퓨터네 직접 연결되지 않고, 장치 컨트롤러와 연결

    • 역할

      • CPU와 입출력장치간 통신

      • 오류 검출

      • 데이터 버퍼링

        • "버퍼"라는 임시공간에 데이터를 저장하여 전송률을 비슷하게 맞추는 것
    • 내부 구조

      • 데이터 레지스터
        - CPU와 입출력 장치간 주고받을 데이터가 담기는 레지스터

      • 상태 레지스터
        - 입출력장치가 준비가 되었는지, 작업이 완료되었는지, 오류는 없는지 등의 상태 정보 저장

      • 제어 레지스터
        - 입출력 장치가 수행할 내용에 대한 제어 정보, 명령 저장

  1. 장치 드라이버 (소프트웨어적 통로)
    • 장치 컨트롤러의 동작을 감지, 제어하여 컴퓨터 내부와 정보를 주고받을수 있게 함.

2. 입출력 방법

  1. 프로그램 입출력

    • 프로그램 속 명령어로 입출력장치를 제어

    • CPU가 장치 컨트롤러의 레지스터 값을 읽고 씀으로써 이루어진다.

    1. 메모리 맵 입출력
      • 메모리에 접근하기 위한 주소공간과 입출력장치에 접근하기 위한 주소공간을 동일시
        메모리맵
    1. 고립형 입출력
      • 메모리를 위한 주소공간과 입출력장치를 위한 주소공간을 분리
        고립형
  2. 인터럽트 기반 입출력

    • 장치 컨트롤러가 입출력 작업을 끝낸 뒤 CPU에게 인터럽트 요청신호를 전송하면 CPU는 진행 중인 백업 한뒤 인터럽트 서비스 루틴 실행

    • 여러 입출력 장치에서 동시에 인터럽트가 발생한 경우
      - CPU가 플래그 레지스터 속 인터럽트 비트를 비활성화 한뒤 순차적으로 인터럽트를 처리한다.

    • 다중 인터럽트 처리 과정

      PIC : 프로그래머블 인터럽트 컨트롤러 (하드웨어)

      1. PIC가 장치 컨트롤러에서 인터럽트 요청신호를 받는다.

      2. PIC가 인터럽트 우선순위를 판단한 뒤, CPU요청신호를 전송.

      3. CPU는 PIC에 인터럽트 확인 신호를 전송.

      4. PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터 전송

      5. 해당 장치의 인터럽트 서비스 루틴 실행

        다중 인터럽트 처리

프로그램 기반 입출력, 인터럽트 기반 입출력 : 입출력장치와 메모리간 데이터 이동은 CPU주도, 데이터는 항상 CPU를 거친다.

  1. DMA 입출력 (Direct Memory Access)
  • 위 두개의 입출력과 다르게 메모리가 CPU를 거리치않고 상호작용이 가능

  • 직접 메모리에 접근이 가능

  • 과정
    1. CPU가 DMA 컨트롤러에 입출력장치의 정보(주소, 연산 등)로 작업 명령
    2. DMA 컨트롤러는 CPU대신 장치 컨트롤러와 상호작용하며 입출력 작업 수행 (필요하다면 메모리에 직접 접근)
    3. 입출력 작업이 끝나면 CPU에 인터럽트를 걸어 작업완료를 알린다.

profile
https://augusstt-note.gitbook.io/aug-note 로 블로그 이전했습니다!

0개의 댓글