버퍼란 무엇인가?
Source: Dev.to
버퍼는 데이터가 한 위치에서 다른 위치로 이동하는 동안 데이터를 잠시 보관하는 임시 메모리 공간입니다.
밥을 먹는 것에 비유해 보세요.
한 번에 접시 가득한 밥을 모두 위로 옮길 수는 없습니다.
숟가락이 잠시 작은 양의 밥을 담는 것처럼,
컴퓨터에서도 버퍼가 비슷하게 동작합니다.
거대한 데이터를 한 번에 옮기기보다는 보통 작은 조각씩 옮기는데,
버퍼는 그 조각들을 잠시 저장합니다. 데이터가 다음과 같은 작업을 할 때:
- 복사될 때
- 읽혀질 때
- 쓰여질 때
- 업로드될 때
- 다운로드될 때
- 스트리밍될 때
예를 들어:
- 파일을 읽는 중
- 동영상을 스트리밍하는 중
- 인터넷 패킷을 받는 중
- 메모리와 디스크 사이에 데이터를 복사하는 중
버퍼는 데이터가 원활하고 효율적으로 이동하도록 도와줍니다.
버퍼는 메모리에 저장된 원시 바이너리 데이터 블록입니다.
이를 바이트라는 아주 작은 메모리 단위들의 리스트라고 생각하면 됩니다.
버퍼 안의 각 항목은:
- 정확히 8비트(1바이트)를 가짐
- 작은 데이터를 한 조각 저장함
- 읽히고, 변경되고, 복사되고, 쓰여질 수 있음
예시:
4C A1 33 00
각 쌍은 16진수 형식으로 기록된 하나의 바이트 데이터를 나타냅니다.
16진수에 대해서는 나중에 더 배울 것이지만, 기본 개념은 다음과 같습니다.
01001100 01001100 01001100 01001100
하지만 이진수는 사람에게 읽고 이해하기 어렵습니다.
0과 1만으로 수천 바이트를 바라본다고 상상해 보세요.
그래서 프로그래머들은 16진수를 사용합니다.
16진수는 이진 데이터를 더 짧고 깔끔하게 표현하는 방법입니다.
예를 들어, 다음과 같이 쓰는 대신:
01001100
다음과 같이 쓸 수 있습니다:
4C
두 표기 모두 같은 데이터를 나타냅니다.
버퍼를 다음과 같이 생각해 보세요:
[ byte ][ byte ][ byte ][ byte ]
각 상자는:
- 8비트를 포함하고
- 아주 작은 데이터를 저장하며
- 함께 모여 더 큰 정보를 형성합니다.
이것이 버퍼의 핵심 아이디어입니다.