본문 바로가기

공통

버퍼란?

"아오.. 진짜 버퍼링 왜이러냐 짜증나네.."

다들 한번쯤 해본 말 아닌가요?

 

영상볼때 나오는 그 빙글빙글표시.. 으.. 상상만해도 짜증나는데요

 

이를 우리는 "버퍼링" 이라고 부릅니다.

 

오늘은 그 버퍼링 이라는것을 배워볼겁니다.

 

우리가 흔히 쓰는 컴퓨터나 핸드폰 등에는 버퍼 라는 공간이 들어있습니다.

 

자 상상을 해볼게요, 우리가 핸드폰으로 인터넷에서 동영상 하나를 본다고 칩시다.

 

와이파이 연결하고 동영상을 클릭을 했어요.

 

근데 인터넷이 느려서 동영상 정보가 핸드폰으로 들어오는 속도가 늦다면

 

어떻게 될까요?

 

동영상에서는 "가나다라마바사 아자차카타파하" 라고 말하는 동영상인데

 

인터넷이 느리면 "ㄱ..ㅏ나...ㄷ......ㅏ" 이런식으로 계속 끊길겁니다

 

상상만 해도 짜증나죠.. 이를 보완한 방법이 바로 "버퍼링" 기법입니다.

 

컴퓨터는 모두 2진수 즉 0과 1로만 이루어져있다는것은 다들 알고 계시겠죠?

 

동영상또한 마찬가지입니다. 내부적으로는 0과 1로 이루어져있겠죠,

 

그럼 우리가 동영상 재생버튼을 누르면 0과 1이 막 들어올것입니다.

 

와이파이 속도가 느려서 이 0과 1이 들어오는게 자꾸자꾸 중단되면

 

우리 핸드폰에서의 영상은 당연히 끊기게 되죠.

 

그래서 이를 어떻게 해결하느냐!

 

버퍼 라는 공간을 사용하는데 이해를 쉽게 돕기 위해서 버퍼를 배열로 표현하겠습니다

 

 

 

자 이런식으로 되어있다고 칩시다.

 

인터넷을 뒤지다가 보고싶은 영상을 찾았고 그 영상을 눌렀어요!

 

그럼 인터넷에서 그 동영상에 대한 플레이 정보를 폰으로 보낼겁니다

 

자 인터넷에서 동영상 정보를 로드 했으니 핸드폰으로 한개씩 보내기 시작합니다.

 

하지만 핸드폰은 그렇게 받은 정보를 바로 화면에 내보내지 않고 버퍼라는 곳에 차곡 차곡 쌓습니다

 

이런식으로 말이죠!

 

그럼 이제 버퍼에 데이터가 어느정도 차면

 

버퍼에 먼저들어온 데이터부터 핸드폰 화면에 송출하고

 

인터넷으로부터 동영상 정보를 조금씩 받아 가득 찬 버퍼를 유지시킵니다

 

이런식으로 말이죠!

 

그러다가 와이파이가 끊겨서 더이상 인터넷에서 동영상 정보를 주지 않는다고 칩시다.

 

그럼 핸드폰은 이미 버퍼에 들어있는 내용만 화면에 송출합니다

 

그리고 이렇게 버퍼가 다 비었다가 다시 와이파이가 연결돼서

 

인터넷에서 다시 영상정보를 보내주면 다시 버퍼에 채우고

 

일정 정도이상 버퍼가 차면 다시 핸드폰 화면에 송출하고 인터넷에서 영상정보 받고

 

이를 반복하며 영상을 재생하게 됩니다.

 

이러면 인터넷이 느려지더라도 바로바로

 

"ㄱ..ㅏ...나....ㄷ....ㅏ라" 이런식으로 끊기지 않고

 

"가나다라.....마바사아" 이런식으로 끊기겠죠

 

훠얼씬 부드럽겠죠?

 

그리고 이 핸드폰이 이 버퍼가 어느정도 이상 차기를 기다리는 대기시간을

 

버퍼링 이라고 부르는 것입니다.

 

영상뿐만 아니라 모든 사용자 입력이나 정보들은 모두 버퍼를 거쳐서 들어온다고 보시면 될것같습니다.

 

예를들어서 C언어에서 scanf함수도 일단 사용자의 입력을 버퍼에 넣고

 

필요한 만큼 버퍼에서 빼서 변수에 할당해주는겁니다.

 

이런식으로 프로그래밍과 버퍼링은 매우 큰 연관이 있습니다.

 

매우 중요한 개념이니 꼭 외워주시고 버퍼! 하면 어떤개념인지 떠오르도록 공부해주세요!

'공통' 카테고리의 다른 글

주석  (0) 2019.06.26
프로그래밍 표기법  (0) 2019.06.26
전역변수와 지역변수  (0) 2019.06.26
연산자  (0) 2019.06.24
자료형과 실수 오차  (0) 2019.06.24