속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 한다.
데이터를 한꺼번에 모았다가 한번에 전송한다.(귤을 5개를 한개씩 전달하는 것보단 바구니에 모아서 보내는것이 더 효율적이다.)
하드디스크에서는 메모리 버퍼가 있다.
일반적으로 버퍼 사이즈를 크게 하면 데이터 전송량이 늘어나지만 반대로 대기 시간이 길어지는데 이를 버퍼링이라고 한다.
메모리와 CPU 사이에 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 저장장소이다.
캐시는 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓는다.
메모리의 경우 시스템 버스의 속도로 작동하기 때문에 느리다.
cf_버스 : 컴퓨터 부품 간, 컴퓨터 간에 데이터와 정보를 전송하는 통로(통신 시스템)
캐시 히트_Cache hit : 원하는 데이터를 찾았다.
캐시 미스_Cache miss : 원하는 데이터가 없으면 메모리로 가서 데이터를 찾는다.
캐시에 있는 데이터가 변경되는 경우 이를 반영해야 하는 문제도 있다. 캐시는 메모리에 있는 데이터를 임시로 가져온 것이기 때문에 캐시에 있는 데이터가 변경되면 메모리에 있는 데이터도 변경해야 한다. 캐시의 변경된 데이터를 메모리에 반영하는 데에는 즉시쓰기 방식과 지연쓰기 방식이 있다.
즉시쓰기 write through
캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 방식이다.
메모리와의 빈번한 데이터 전송으로 인해 성능이 느려진다는 것이 단점이다
메모리의 최신 값이 항상 유지되기 때문에 급작스러운 정전에도 데이터를 잃어버리지 않는다.
지연쓰기 write back
캐시에 있는 데이터가 변경되면 이를 즉시 메모리에 반영하는 것이 아니라 변경된 내용을 모아서 주기적으로 반영하는 방식이다.
메모리와의 데이터 전송횟수가 줄어들어 시스템의 성능을 향상할 수는 있으나 메모리와 캐시된 데이터 사이의 불일치가 발생할 수도 있다는 것이 단점이다.
L1 캐시 : CPU 레지스터에 직접 연결되기 때문에 L1캐시라고 불린다. 특수캐시로 명령어 캐시와 데이터 캐시가 있는데 명령어 캐시는 명령어 레지스터와 연결, 데이터 캐시는 데이터 레지스터와 연결되어 있다.
L2 캐시 : 일반캐시로 메모리와 연결되기 때문에 L2캐시라고 불린다.
인터럽트 처리 순서
- 다른 인터럽트를 차단
- 현재 실행 상태(State)를 PCB에 저장
- ISR(Interrupt Service Routine)로 점프
- 저장한 실행 상태(State)를 복원
- 인터럽트로 중단된 지점부터 다시 시작