인터럽트 번호
- 폴링 방식 : CPU가 직접 입출력장치에서 데이터를 가져오거나 내보내는 방식
- ex) 요리사가 재료가 필요하면 보관 창고에서 직접 가져오는 것
- 단점 : CPU가 명령어 해석, 실행이라는 본인의 역할 외에 입출력까지 관여해야 하므로 작업 효율 저하
- 인터럽트 방식 : CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영 → 효율 증대
- ex) 요리사가 필요한 재료를 주방 보조에게 시키고 자신의 본래 역할인 요리에 집중하는 것
- 기존의 CPU역할에만 몰두할 수 있게 됨, 즉, 데이터의 입출력이 이루어지는 동안 CPU의 작업을 진행할 수 있음
- 종류 : 내부 인터럽트(소프트웨어 인터럽트), 외부 인터럽트(하드웨어 인터럽트)
- 프로그램 내부에서 잘못된 명령 또는 데이터 사용 시(0으로 나누기, 표현 비트 범위를 벗어난 경우)
- 전원 이상, 기계문제, IO관련 이벤트
- 인터럽트 방식의 동작 과정
- CPU의 입출력 명령 to 입출력 관리자
- 입출력 관리자는 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮김
-
작업이 끝나면(데이터 전송) 입출력 관리자는 완료 신호를 CPU에게 보냄
→ 그리고 이 완료 신호가 인터럽트
❓ 인터럽트 번호
- 많은 주변장치 중에 어떤 것의 작업이 끝났는지를 CPU에 알려주기 위한 용도
- 사용하는 장치의 고유 번호로 운영체제마다 상이(윈도우에서 키보드의 IRQ=1, 마우스의 IRQ=12)
- CPU가 여러 개의 입출력 작업을 명령한 뒤, 여러 작업이 동시에 완료되면 여러 개의 인터럽트를 하나의 배열로 만든 인터럽트 벡터 사용 → 효율적
메모리 직접 접근(DMA)
- 과거 운영체제
- 폴링 방식 사용 → CPU가 메모리와 주변장치에 대한 권한 보유
- 현재 운영체제
- 인터럽트 방식 사용 → 입출력 관리자가 데이터의 입출력 담당
인터럽트 방식의 동작 과정 중에, 입출력 관리자가 CPU의 명령을 받아 메모리에 접근해야 하는 순간이 존재.
그런데, 메모리는 CPU에만 접근 권한이 있음.
즉, 입출력 관리자가 CPU의 허락없이 메모리에 접근할 수 있는 권한이 바로 메모리 직접 접근이라고 한다.
메모리 매핑 입출력
-
직접 메모리 접근을 사용할 시 문제점
- 메모리엔 1. CPU가 사용하는 데이터, 2.입출력 장치가 사용하는 데이터가 모두 존재한다.
-
직접 메모리 접근을 통해 데이터를 메모리에 가져다 놓으면 위 두 데이터가 섞여서 관리하기 어렵다.
→ 이를 위해, CPU가 사용하는 메모리 공간과, 직접 메모리 접근을 통해 들어오고 나가는 데이터의 공간을 분리
→ 해당 분리 기법을 메모리 매핑 입출력(MMIO)라고 한다.
Leave a comment