serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/6장/6.135 / 40

6.1 · 입출력과 장치

CPU는 입출력 장치와 어떻게 대화할까?

키보드가 눌렸는지 CPU가 매 순간 확인해야 할까요?

CPU는 장치 레지스터를 반복 확인하는 폴링을 쓰거나 장치가 인터럽트로 알려주게 할 수 있습니다.

먼저 생활 비유

배달 도착을 확인하는 두 방법

문을 계속 열어보는 것이 폴링, 배달원이 벨을 누르게 하는 것이 인터럽트입니다.

컴퓨터 예제로 바꾸기

키보드 입력

while (!keyboard.ready) {}
// 또는 인터럽트 대기

입력이 드물다면 계속 검사하는 시간보다 신호가 올 때만 처리하는 편이 효율적입니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

장치 레지스터

키보드 제어기가 상태와 입력 데이터를 보관합니다.

CPU · 커널 · 장치사용자 코드 · CPU운영 체제 · 커널장치 · 네트워크 · 디스크장치 레지스터단계 1폴링단계 2인터럽트 방식단계 3인터럽트 처리단계 4프로그램 전달단계 5키 입력 A현재: 장치 레지스터

이 그림에서 기억할 한 문장

폴링은 단순하고 빠른 반복 상태에 유리할 수 있고, 인터럽트는 드문 이벤트를 기다리는 낭비를 줄입니다.

현재 상태

이동하는 것
키 입력 A
현재 위치
장치 레지스터
다음 위치
폴링

30초 확인 문제

입력이 몇 초에 한 번 생기는데 CPU가 매 순간 확인하면?

처음 보는 용어 두 개

장치 레지스터
CPU가 장치 상태와 명령을 읽고 쓰는 작은 하드웨어 인터페이스
폴링
준비 여부를 프로그램이 반복 확인하는 방식

이 절을 다 읽었다면

폴링은 단순하고 빠른 반복 상태에 유리할 수 있고, 인터럽트는 드문 이벤트를 기다리는 낭비를 줄입니다.

← 이전 절

5.4 메모리 장벽은 어떤 순서를 지킬까?

다음 절 →

6.2 디스크 입출력 중 CPU는 무엇을 할까?