교재 - 쉽게 배우는 운영 체제
문제 상황: 시스템 버스(FSB)의 속도 < CPU 내부버스(BSB)의 속도
즉, CPU의 속도를 주변 장치가 따라오지 못함.
버퍼(buffer): 두 장치간에 데이터를 옮길 때 일정량의 데이터를 모아 옮겨 속도 차이를 완화하는 장치
메모리, 동영상 재생, 화면 출력에도 버퍼를 사용한다.
스풀(Simultaneous Peripheral Operations On-line): CPU와 입출력 장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
ex) 프린터의 스플러: 프로그램은 인쇄작업을 스풀러에게 맡겨놓고 작업을 진행한다. 이로 인해 문서 작업과 프린터 출력 작업이 독립적으로 진행이 가능.
캐시(cache): 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해 두는 임시 저장소, CPU에 있는 캐시는 CPU 내부버스의 속도로 작동하기 때문에 무척 빠르다.
미리 가져오기(prefetch): CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져오는 행위
캐시 히트(cache hit): CPU가 메모리에 접근 전 캐시에서 원하는 데이터를 찾은 경우
캐시 미스(cache miss): CPU가 메모리에 접근 전 캐시에서 원하는 데이터를 못 찾은 경우

L2: 일반 캐시 (명령어와 데이터의 구분 없이 모든 자료를 가져옴)
L1: 특수 캐시 (명령어와 데이터를 구분하여 가져옴)

속도가 빠르고 값이 비싼 저장 장치를 CPU와 가까운 쪽에, 값이 싸고 저장장치는 CPU와 반대쪽에 배치
상황: 기존에는 CPU가 직접 입출력 장치에서 데이터의 출입을 관리하는 폴링 방식을 사용했지만, CPU의 역할이 많아져 작업 효율이 떨어짐
인터럽트 방식: CPU의 작업과 별도로 저장장치의 데이터 이동을 담당하는 입출력 관리자를 두는 방식
이때 완료 신호를 보낼 때 장치의 이름 대신 인터럽트 번호(윈도우에서는 IRQ)를 사용한다.
또한 여러개의 인터럽트를 하나의 배열로 만든 인터럽트 벡터가 있는데, 완료된 인터럽트 번호를 표시한다.
작업이 완료될 때 외에도 컴퓨터의 종료나 메모리 영역을 넘어서 작업하는 경우에도 인터럽트가 발생한다.
직접 메모리 접근(Direct Memory Access): 효율성을 위해 기존에 CPU만 가지고 있던 메모리 접근 권한을 입출력 관리자가 가지게 되어 메모리에 대해 직접 접근 하는것
직접 메모리 접근으로 인해 CPU와 입출력 관리자가 각각 관리하는 데이터가 섞여 있으면 관리하기가 어려움. 이를 막기 위해 메모리를 CPU 작업 영역과 입출력 작업 영업으로 나누게 됨
메모리 맵 입출력(Meemory Mapped I/O): 메모리의 일정 구간을 입출력에 할당하는 기법
사이클 훔치기(cycle stealing): CPU와 입출력 관리자가 동시에 메모리에 접근 시에 조금 느린 입출력 관리자에게 CPU가 메모리 사용 권한을 양보하는 것