컴퓨터 성능 향상 기술

문딤·2022년 8월 8일
0
post-thumbnail

버퍼 , 스풀, 캐시

버퍼 란?

CPU와 보조기억장치에서 사용되는 임시 저장 공간을 의미한다.
A와 B가 서로 입출력을 수행하는데에 있어서 속도차이를 극복하기 위해 사용하는 임시 저장공간.

EX) 동영상 서비스에서 버퍼링

CPU는 1초에 100개의 데이터를 처리할 수 있지만, 처리할 데이터를 가지고 있는 보조 기억 장치는 데이터를 1초에 세 개 밖에 보내주지 않는다.
CPU 효율성 상실..

버퍼를 사용하면, CPU 내부 캐시메모리 보다는 느리지만, 훨씬 빠른 RAM을 이용한다. 보조기억장치는 주기억장치의 버퍼로 마련해둔 공간에 데이터를 쌓고, CPU는 가끔 버퍼를 확인하여 쌓여있는 데이터를 한꺼번에 처리.

💨 따라서 버퍼는 속도차가 큰 두 대상이 입출력을 수행할 때 효율성을 위해 사용하는 임시저장공간.

스풀(Spool)이란?

simultaneous peripheral output online

◻ 컴퓨터 중앙처리장치(CPU)의 명령을 자기디스크장치에 저장하고, 그 명령을 주변장치로 전달하여 처리하는 방식을 말한다.

◻ 컴퓨터와 주변장치의 처리속도 차이로 인한 대기시간이 발생하는데, 이를 없애기 위해 고안된 것이다.

◻ 따라서 컴퓨터는 다른 작업을 바로 수행할 수 있으며, 주변 장치도 프로그램을 수행할 수 있어 작업효율을 높일 수있다.

◻ FIFO 방식 처리이므로, 대기열의 첫 번째 명령을 무조건적으로 실행된다.

캐시(Cache) 란?

속도가 빠른 장치와 느린 장치에서 속도 차이에 따른 병목 현상을 줄이기 위한 메모리를 말한다.

병목현상?
💨 어떠한 특정 요소의 한계 때문에 전체가 제한받는 상황
즉 cpu나 기억장치, 입출력 장치간의 처리속도차이로 인한 지연현상.

Cache의 장점

  1. CPU 코어와 메모리 사이의 병목 현상 완화
  2. 웹 브라우저 캐시 파일은, 하드디스크와 웹페이지 사이의 병목 현상을 완화
  3. 속도 향상

Cache의 단점

  1. 용량이 작고, 비쌈.

지역성의 원리

⬜ 시간적 지역성

특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것
메모리 상의 같은 주소에 여러 차례 읽기 쓰기를 수행할 경우,
상대적으로 작은 크기의 캐시를 사용해도 효율성을 꾀할 수 있다.

⬜ 공간적 지역성

특정 데이터와 가까운 주소가 순서대로 접근되었을 경우.
CPU 캐시나 디스크 캐시의 경우 한 메모리 주소에 접근할 때 그 주소뿐 아니라 해당 블록을 전부 캐시에 가져오게 된다.
이때 메모리 주소를 오름차순이나 내림차순으로 접근한다면,
캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성이 크게 향상된다.

캐시의 지역성

캐시가 효율적으로 동작하려면, 캐시의 적중율(Hit-rate)를 극대화 시켜야 한다.
캐시에 저장할 데이터가 지역성(Locality)을 가져야 한다.
지역성의 전제 조건으로 프로그램은 모든 코드나 데이터를 균등하게 Access하지 않는다는 특성을 기본으로 한다.

캐쉬의 동작 과정

👍👍👍
https://parksb.github.io/article/29.html

폴링과 인터럽트

폴링(Polling)

하나의 장치(또는 프로그램이) 다른 장치의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신등의 자료처리를 하는 방식.

ex) AJAX polling

폴링의 문제점

  1. 폴링의 주기가 짧으면 서버의 성능에 부담이 간다.
  2. 주기가 길면 실시간성이 떨어진다.

해결방법

  1. COMET을 구현(실시간 웹을 구현하기위한 기술들을 지칭)

💨 롱폴링 기법: 서버측에서 접속을 열어두는 시간을 길게한다. 이벤트가 발생하면 바로 응답이 이루어짐.
💨 스트리밍 방식: 웹 접속을 계속 열어두고 발생할 때마다 부분적으로 브라우저에 응답.

인터럽트

어떠한 주변장치들의 입출력이나 하드웨어 문제, 프로그램에서 예외등이 발생했을때 CPU에게 이를 알려주는 방식.

PROCESS

  1. CPU가 입출력 관리자(입출력 제어기)에게 입출력 명령을 보냄.
  2. 입출력 관리자는 메모리에 있는 데이터를 저장장치로 보내거나, 해당 데이터를 메모리로 가져온다.
  3. 데이터 전송과정이 완료되면 입출력 관리자가 인터럽트 신호를 CPU에 보낸다.

종류
HW INTERRUPT, SW INTERRUPT, SIGNAL.

폴링 VS 인터럽트

참고

https://techdifferences.com/difference-between-interrupt-and-polling-in-os.html

https://kkhipp.tistory.com/159

https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%BA%90%EC%8B%9C%20%EB%A9%94%EB%AA%A8%EB%A6%AC.html

profile
풀스택개발자가 될래요

0개의 댓글