본문 바로가기
기초 용어

[개념] buffer , flush()

by tokkiC 2022. 5. 17.

인터넷 페이지나 동영상을 볼때 "'버퍼링' 중입니다. 기다려주세요" 하는 메세지를 자주 봐왔을것이다

이전까지는 버퍼링? 로딩 기다리는 걸 말하는 줄로만 알아도 크게 이해에 문제가 없었다

하지만 프로그래밍을 배우는 입장에서 버퍼, 버퍼링의 의미를 그렇게 대충 이해하면 안될일! 정리해보자


buffer 버퍼


완충제라는 의미이다. 뭔가가 부딫혀서 문제가 생기지 않도록 막아주는 것을 뜻한다. 뭘 부딫힌다는 걸까?

거북이와 토끼를 예로 들어보자

거북이는 일하는 속도(처리속도)가 느리고, 토끼는 일하는 속도(처리속도)가 빠르다

거북이는 빗자루로 바닥을 쓸고, 토끼는 대걸래로 바닥을 닦는다

반드시 먼지나 쓰레기를 먼저 치워야만 대걸래로 닦을수있다고 가정하자

아무리 토끼가 청소 속도(처리속도)가 빨라도 거북이가 청소 속도가 느리면 토끼도 청소를 빠르게 할 수 없다

그렇다고 토끼가 거북이 뒤만 천천히 따라다니면서 거북이가 빗자루질 한 바닥을 여유롭게 닦는다는 것은

더 많은 일을 수행할 수 있는 토끼의 능력을 낭비하는 것이다.

그래서 토끼의 능력을 낭비하지 않고 수행하기 위해 우리는 토끼에게 명령을 내린다

"야 토끼! 너 거북이 뒤만 따라다니지 말고 다른 일해!
거북이 따라 바닥 닦는일은 10분에 한번씩만 가서 10분 동안 쌓인 닦을 일을 처리하라구!"

이렇게 명령하면 토끼는 거북이 하나만 매달리지 않고 다른 일을 수행하면서 10분마다 거북이가 해놓은 일만

빠르게 처리하고와서 또 다른 일을 할 수 있을것이다.

이렇듯 처리 속도가 다른 두 대상이 함께 작업을 수행할때 처리속도가 빠른쪽이 마냥 기다리지 않도록해서

처리능력의 낭비를 막아 속도가 빠른쪽의 능력을 더 효율적으로 굴려먹을수있게 되었다

여기서 거북이가 10분 동안 쓸어서 쌓여 모인 토끼가 닦아야 될 일들이 버퍼이다. (10분은 예시일뿐!)

그리고 그리고 거북이가 쓸고 지나가 토끼가 한번 처리할 때의 일을 10분동안 모아두는 것이 버퍼링이다

여기선 비유를 10분이라고 했지만 보통은 시간이 아니라

처리할 데이터의 일정량을 정해서 그 양이 채워지기까지 처리를 맡기지 않고 쌓이길 기다리는 것을 버퍼링

아직 양이 적어서 처리를 맡기지 않고 쌓인 데이터를 버퍼라고 한다.

인터넷 연결 상태가 안좋으면 유튜브가 버퍼링이 자주 생기는 이유도 우리 컴퓨터는 데이터를 빠르게 처리 가능하지만

인터넷으로 받는 전송속도가 느려서 재생할동안 재생할 내용을 미리 받아둔것인 버퍼가 쌓이지 않았을때

버퍼링을 띄우고 재생(처리)를 기다려달라고 하는 것이다.

저장장치인 하드디스크와 처리장치인 cpu 의 속도차이가 크기때문에 여기서도 버퍼를 사용하여 cpu를 효율적으로 사용하는데

여기서 사용하는 버퍼는 임시 저장공간인 Ram에 저장되게 된다.

즉, 램에서 처리될 데이터인 버퍼를 모아 쌓는 것이고, 램이 많으면 한 번에 사용가능한 버퍼의 양이 많아지니

cpu의 처리효율도 올라가서 컴퓨터의 속도도 빠르게 느껴지는 것이다

이미지 출처 : https://dololak.tistory.com/84

동영상 재생시를 예로 들면 버퍼링이 떠도 재생하는 빨간 부분 앞에 재생가능한 하얀 부분이 뜰때가 있다. 미리 다운로드하여 저장하는 그 하얀 부분을 버퍼라고 할 수 있다. 원활한 재생을 위해 그 버퍼가 어느정도 충분히 쌓을때까지 기다리는 중인 상태를 버퍼링이라고 한다


flush 플러쉬


이렇게 여러가지 방면에서 버퍼를 쌓아 효율적을 추구할수있지만

데이터가 버퍼량에 도달할때까지 기다리지 않고 강제로 보내야 할 때가 있다 .그럴때 flush() 메소드를 이용한다

flush 는 배출 이라는 뜻을 가지고 있다.

한마디로 임시 저장공간에 모인 버퍼를 강제로 배출한다는 것이다.

전송에서건 출력에서건 모아둔 걸 처리하고, 임시 저장공간을 비우란 뜻이다

버퍼의 필요성을 이해했지만 그래도 버퍼링 넌 밤에 나랑 마주치지마라! 콱 마

'기초 용어' 카테고리의 다른 글

script 스크립트, 스크립트 언어  (0) 2022.05.20
Null-terminated string 널 종단 문자열  (0) 2022.05.19
random 랜덤  (0) 2022.05.19
[개념] pay load, overhead, protocol overhead  (0) 2022.05.17

댓글