CS Chapter_5 - 컴퓨터 성능 향상 기술

장선웅·2022년 8월 8일
0

1. 컴퓨터 성능 향상 기술

1_1 버퍼

버퍼란, 장치와 장치 간의 데이터 전송을 할 때, 완충작용을 하기 위한 임시 데이터 공간이다.

위의 그림과 같이 입력스트림을 통해 키보드와 컴퓨터(CPU)가 연결되어있다고 생각해 보자

키보드라는 입력장치와 컴퓨터의 연산장치는 데이터를 처리하는 속도가 다르다. 즉, 키보드는 초당 1회라고 한다면 컴퓨터는 초당 10회를 할 수 있다고 생각해보자.

만약, 이처럼 완충장치가 존재하지 않는 상태에서 키보드에서 스트림을 통해 CPU로 데이터를 전달한다면, 아무리 컴퓨터의 성능이 뛰어나다 하더라도 초당 1회의 연산밖에 하지 못하게 된다.

위 그림처럼 임시저장소를 만들게 되면 키보드로 부터 입력받는 데이터를 모아서 한번에 CPU에게 전달한다.
그렇다면 CPU는 정상적으로 자신의 성능만큼 업무를 수행할 수 있게 되는 것이다.

여기에서 임시 저장소가 바로 버퍼이다.

하드웨어 뿐 아니라 소프트웨어적인 부분에서도 사용되는 흔히 우리가 동영상을 스트리밍해서 볼 때, 일정량의 데이터를 버퍼에 모아 한 번에 출력하는 것을 버퍼링이라고 한다.


1_2 스풀

스풀이란, CPU와 입출력 장치가 독립적으로 동작하도록 하는 소프트웨어적인 버퍼의 일종이다.

  • 하지만 스풀의 같은 경우, 다른 프로그램과의 공유를 허용하지 않기 때문에, 하나의 작업이 완료되기 전까지는 다른 작업을 불허한다.

1_3 캐시

캐시란, 위의 저장공간 계층 구조에서 확인할 수 있듯이, 자주 사용하는 데이터나 값을 미리 복사해 놓은 임시 저장소이며, 저장 공간이 작고 비용이 비싼 대신, 빠른 성능을 제공한다.

1_3_1 캐시의 사용

  1. 접근 시간에 비해 원래 데이터를 접근하는 시간이 오래 걸리는 경우(서버의 균일한 API데이터)
  2. 반복적으로 동일한 결과를 돌려주는 경우(이미지나 썸내일 등)

1_3_2 Long Tail의 법칙

위의 그래프처럼 20%의 요구가 시스템 리소스의 대부분을 사용한다는 법칙이다. 그렇기 때문에 20%의 기능에 캐시를 이용함으로써, 리소스 사용량은 대폭 줄임과 동시에 성능은 대폭 향상이 가능하다.

1_3_3 Local 캐시 vs Global 캐시

Local 캐시

  • Local 장비 내에서만 사용되는 캐시로, Local 장비의 리소스를 이용한다.
  • Local에서만 작동하기 때문에 속도가 빠르다.
  • 다른 서버와의 데이터 공유가 어렵다

Global 캐시

  • 여러 서버에서 캐시 서버에 접근하여 사용하는 캐시로 분산된 서버에서 데이터를 저장하고 조회할 수 있다.
  • 네트워크를 통해 데이터를 가져오므로 Local 캐시에 비해 상대적으로 느리다
  • 별도의 캐시서버를 사용하기 때문에 서버 간의 데이터 공유가 쉽다

1_4 폴링과 인터럽트

이 둘은, 프로세서와 입출력 장치 사이의 통신의 일종이다.

1_4_1 폴링

폴링은 특정 주기마다 스레드를 돌며 시그널이 들어 왔는지 확인하는 방식이다. 소프트웨어적인 시그널 확인이다.

장점

  • 구현이 쉽다.
  • 우선순위 변경이 용이하다.

단점

  • 특정 주기마다 확인하기 때문에 리소스를 많이 사용한다.
  • 특정 주기마다 확인하기 때문에 정확한 타이밍에 시그널이 들어왔는지 알 수 없다.
  • 주기에 따른 오차가 생길 수 있다.

1_4_2 인터럽트

인터럽트는 외부 인터럽트 핀에 신호가 들어오면 즉시 인터럽트 소스를 실행하고 다시 원래 코드로 돌아오는 방식이다. 하드웨어적인 시그널 확인이다.

장점

  • 시그널이 들어온 정확한 타이밍을 확인 할 수 있다.
  • 반응 시간이 빠르다.
  • 인터럽트 발생시에만 처리하기 때문에 시스템 부하가 적다.

단점

  • 폴링에 비해 구현이 복잡하다.
profile
개발을 꿈꾸는 초짜

0개의 댓글