본문 바로가기
Programing/OS

[OS] Buffering

by 꾸압 2022. 8. 8.

 

<설명>

[Buffer 란?]

  - Process 간에 Data가 이동하는 동안, Data를 잠시 보유하는데 사용하는 Memory 영역.

  - Buffer는 보통 Data 수신 속도(Received)와 처리 속도(Processed) 사이에 차이가 발생할 때 사용.

  - Buffer를 없애면 Data 손실이 발생하거나 대역폭 사용률이 낮아짐.

 

[Buffering 이란?]

  - 통신이 직간접적이든 뭐든 간에, 메시지는 Temporary Queue 를 통한 Process 통신 과정을 거침.

 


 

<사용 이유>

  - 생산자와 소비자의 속도 차이에서 오는 비효율 극복

  - 서로 다른 자료 전송 사이즈가 다른 상황을 극복

  - Data 입출력의 의미를 명확하기 하기 위해

  - Data를 보내거나 받기 전, 기기가 Data를 복사할 수 있게 도움.

  - Semantics 복사를 지원 (문자열에 의미 부여)

 


 

<Buffering 종류>

  1) Zero Capacity :

    - 이 Queue는 대기하는 어떤 메시지도 keep 불가. (최대 길이 0)

    - 보낸 Process는 Receiving Process가 메시지를 받을 때까지 반드시 block 상태를 유지.

 


 

  2) Bounded Capacity

    - 이 Queue는 한정된 길이인 N 을 가짐. (최대 N개의 메시지 만을 가짐)

    - Queue가 가득찬게 아니면 Queue는 새로운 메시지로 대체될 수 있으며, 보내진 Process는 block 되지 않음.

    - Automatic Buffering 이라고도 불림.

 


 

  3) Unbounded Capacity

    - 이 Queue는 무한한 길이를 가짐. 모든 메시지가 여기서 대기할 수 있음.

    - 이 System 에서 보낸 Process는 아무것도 block 되지 않음.

 


 

<출처 1> https://m.blog.naver.com/complusblog/221204759836

<출처 2> https://www.geeksforgeeks.org/buffering-in-computer-network/

 

 

'Programing > OS' 카테고리의 다른 글

[OS] Cache Hit Ratio  (0) 2022.08.10
[OS] Spooling  (0) 2022.08.09
[OS] Cache  (0) 2022.08.07
[OS] Deadlock 예제 코드 (with Java, C++)  (0) 2022.07.24

댓글