목차
개요
현재는 인터넷의 발달로 인해 영상 등을 스트리밍 할때 버퍼링 화면을 자주 보지는 못하지만 초등학교때 처음 나왔던 갤럭시1으로 옆집의 와이파이를 잡아서 볼때는 까만 화면에 원이 돌고 있는 모습을 자주 봤었다.
그 당시엔 다들 버퍼링 심하다~ 라고 하길래 영상이 안나오면 버퍼링이구나 생각했던 시절이 있다.
이 포스팅을 보고 난 후엔 아~ 서버에서 클라이언트로 영상 파일을 다운을 하던 와중에 버퍼에 저장된 영상 매체가 없어서 load를 기다리는 과정이구나 라고 이해할 수 있을것이다.
버퍼 (buffer)
생산자는 무언가를 생산해낼거고 소비자는 생산물을 받는 입장일텐데 생산자에서 소비자로 직접 건네주는 방식은 생산을 하는 과정과 생산물을 받는 과정이 순차적으로 일어난다.
즉 두 과정이 동시에 실행되지는 못하게 된다.
개념
데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역
따라서 이 속도를 높이기 위해서 중간에 버퍼라는 개념을 탑재하여 일종의 보관함을 만들어 놓는 것이다. 버퍼로 인해 공유메모리 시스템의 효율을 증가시킬수 있다.
종류
버퍼에는 무한 버퍼(unbounded buffer)와 유한 버퍼(bounded buffer)가 있는데 단어가 생소하다면 영문 단어를 봐보기를 바란다. bounded 공간 등이 막혀있는 느낌이다. 쉽게 말해 공간이 무한인 보관함과 유한한 보관함 이런 차이라고 생각해보면 쉽다.
버퍼의 크기 = 큐의 길이
생산자 = 송신자
소비자 = 수신자
메세지 = 메세지를 비롯한 정보 등
무한 버퍼(unbounded buffer)
버퍼 큐의 길이는 무한한 길이를 가지게 된다. 메세지 개수의 한계가 없다.
생산자는 버퍼의 크기가 무한하니 끊임없이 생산을 한다. ➡ 생산에 있어서 버퍼로 인한 딜레이가 생기지 않는다.
소비자는 버퍼가 비었을 때 생산물을 기다릴수는 있다. ➡ 버퍼가 비었을 때 딜레이가 생긴다.
유한 버퍼(bounded buffer)
버퍼 큐의 길이는 유한한 길이 n을 가지게 된다. 최대 n개의 메세지가 들어있을수 있다.
생산자는 버퍼의 크기가 제한되어 가득 차있을 경우에는 생산을 하지 못한다. ➡생산에 딜레이가 생길수 있다.
소비자는 무한 버퍼와 마찬가지로 비었을때 생산물을 기다린다.➡ 버퍼가 비어있을 때 딜레이가 생긴다.
또한 버퍼의 크기가 0인 경우도 있는데 이와 같은 경우를 메세지 전달 시스템이라고도 부른다.
2022.08.31 - [OS :: 운영체제] - 프로세스 :: 메시지 전달 시스템
무용량 버퍼(zero capacity buffer)
버퍼 큐의 최대 길이가 0인 버퍼이다. 즉 안에 대기하는 메시지나 정보 등을 가질수 없다.
생산자는 소비자가 메세지를 수신할 때까지 기다린다.
소비자는 생산자가 메세지를 송신할 때까지 기다린다.
버퍼링 (buffering)
버퍼를 활용하는 방식 또는 버퍼를 채우는 동작을 말한다.
위에 설명한 버퍼들을 활용하여 시스템 간의 통신속도를 높인다거나 정보전달의 속도 등에 효율을 추구한다.
대부분 데이터를 전달하는 과정에서 사용되는 소프트웨어적인 방법이다.
일반적으로 FIFO 선입선출 방식으로 작동하게된다.
'CS > Operating System' 카테고리의 다른 글
프로세스 :: 지명 파이프(named pipes) (0) | 2022.09.22 |
---|---|
프로세스 :: 익명 파이프(anonymous pipes) (0) | 2022.09.21 |
프로세스 :: 메시지 전달 시스템 at Mach(iOS) (0) | 2022.08.31 |
프로세스 :: 공유 메모리 시스템 at POSIX (0) | 2022.08.31 |
프로세스 :: 프로세스 간 통신(IPC) 개념, 종류 (0) | 2022.08.29 |