본문 바로가기
컴퓨터 공학/운영체제

[운영체제] 컴퓨터 성능 향상 기술 (버퍼, 캐시, 인터럽트)

by tempus 2021. 8. 24.
반응형

현대 컴퓨터 구조의 가장 큰 문제점은 CPU, 메모리와 주변장치의 작업 속도가 다르다는 것입니다. 메모리는 시스템 버스(FSB)의 속도와 같고 CPU는 내부 버스(BSB)의 속도와 같은데 일반적으로 내부 버스 속도가 더 빠르기 때문에 메모리나 주변장치는 CPU의 속도를 따라가지 못합니다.


이번에는 이러한 장치 간 속도 차이를 개선하고 시스템의 작업 속도를 올리기 위해 개발된 기술 중 운영체제 관련된 기술을 간단히 알아봅시다.



🔷 버퍼(Buffer)

버퍼는 임시 저장 공간입니다. 속도에 차이가 있는 두 장치 사이에서 그 차이를 완화하는 역할을 합니다. 예를 들어 창고에 있는 사과 5개를 도마에 옮긴다고 하면 이때 한 번에 하나씩 옮기면 다섯 번을 왕복해야 하지만 사과를 바구니에 담아서 옮기면 한 번에 옮길 수 있어 효율적인데, 이러한 경우 바구니가 버퍼에 비유됩니다.


컴퓨터 내부에서는 느린 입출력 장치에서 데이터를 읽을 때마다 하나씩 전송하면 작업량에 비해 실제로 전송되는 데이터 양이 매우 적지만, 일정량의 데이터를 모아서 한번에 전송하면 적은 노력으로 많은 데이터를 옮길 수 있습니다. 이 때 사용하는 장치가 버퍼입니다.


buffer_img


 

이러한 버퍼는 하드웨어적으로만 사용되는 것이 아닌 소프트웨어적으로 사용되기도 합니다. 그 예로 동영상 스트리밍이 있습니다. 동영상을 볼 때 네트워크에서 데이터가 들어오는 시간과 플레이어가 재생되는 시간의 속도 차이가 있기 때문에 플레이어가 재생되는 도중에 데이터가 도착하지 않으면 동영상이 끊기게 됩니다.
보통 이를 버퍼링이 걸렸다고 하는데 이러한 문제를 방지하기 위해 동영상 데이터를 일부분 가져와 버퍼에 넣은 후 실행하게 됩니다.


buffering_img
우리가 흔히 보는 동영상 버퍼링


버퍼링 : 버퍼에 데이터를 담는 과정을 의미합니다.


🔷 캐시(Cache)

캐시는 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해두는 임시 장소입니다. 캐시는 필요한 데이터를 모아 한꺼번에 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓습니다.


캐시는 CPU안에 있으며 CPU 내부 버스의 속도로 작동합니다. 이는 메모리와 CPU 사이의 속도를 완화시켜줍니다.


  1. 캐시는 메모리의 내용 중 일부를 미리 가져온다.
  2. CPU는 캐시에 원하는 데이터가 있는지 찾아본다.
  3. 캐시에 원하는 데이터가 있다. (캐시 히트) - 일반적으로 적중률은 90%이다.
  4. 캐시에 원하는 데이터가 없다. (캐시 미스)

cache_structure
캐시의 구조


 

캐시 적중률을 높이는 방법은 대표적으로 2가지가 있는데

  1. 캐시의 크기를 늘린다. 크기가 늘어나면 더 많은 데이터를 가져올 수 있다. But 캐시는 가격이 비싸 무한정 늘릴 수 없다.
  2. 앞으로 많이 사용될 데이터를 가져오는 것이다.( 이와 관련된 이론으로 현재 위치에 가까운 데이터가 멀리 있는 데이터보다 사용될 확률이 높다는 지역성 이론이 있다.)

🔷 인터럽트(Interrupt)

초기의 컴퓨터 시스템에는 주변장치가 많아서 CPU가 직접 입출력 장치에서 데이터를 가져오거나 내보냈습니다. 이를 폴링(polling) 방식이라고 합니다.


하지만 이런 방식은 CPU의 본래 역할인 명령어 해석과 실행이라는 작업 외에 입출력까지 관여를 해야 해서 작업 효율이 떨어졌습니다. 또한 주변장치가 늘어나며 작업효율은 더 떨어졌습니다. 그래서 등장한 것이 바로 인터럽트입니다.


interrupt_img_rabbit


인터럽트 동작 방식은 요리사 옆에 주방 보조를 두는 것과 같습니다. 주방장(CPU)은 계속 요리를 하고 주방 보조(입출력 관리자)에게 지시 하여 필요한 재료를 가져다 놓으라 하면 주방 보조는 해당 재료를 도마에 올리고 준비가 되었다고 주방장에게 알립니다.


이는 CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높입니다. 즉 데이터 입출력이 이루어지는 동안 CPU는 다른 작업을 할 수 있습니다.


인터럽트 방식의 동작 과정

  1. CPU가 입출력 관리자에게 입출력 명령을 보낸다.
  2. 입출력 관리자는 명령받은 데이터를 메모리에 가져다 놓거나 메모리에 있는 데이터를 저장장치로 옮긴다.
  3. 데이터 전송이 완료되면 입출력 관리자는 완료 신호를 CPU에게 보낸다.

이때 보내는 완료 신호가 인터럽트라고 합니다.

 




반응형

댓글


loading