본문 바로가기

컴퓨터 기본 지식

스트림, 버퍼에 대한 이해

728x90
반응형

스트림(Stream)

서로 다른 장치를 이어주는 가상의 연결 고리.

스트림을 통해 두 장치 사이에서 데이터를 주고 받을 수 있다.

스트림을 정확히 표현하면 '추상화된 장치(abstract devices)' 이다. 왜냐하면 여러가지 주변 장치들(모니터, 키보드, 하드 디스크) 을 추상화 시켜서 사용자가 마치 동일한 장치에 접근하는 것 처럼 사용할 수 있게 만들었기 때문이다.

 

입출력에 대한 처리는 장치 제조사마다 다를 수 있다. 하지만 우리 프로그래머는 스트림을 통해서 동일한 형태로 장치에 접근해서 입력 및 출력을 수행할 수 있다. 즉, 스트림이 인터페이스 역할을 해주는 셈이다.

버퍼(Buffer)

메모리의 일부분으로 장치나 파일로 부터 읽거나 쓰기 전에 임시적으로 저장되는 곳이다.

스트림 내부적으로 버퍼를 사용해서 입/출력 관련 데이터를 일시적으로 보관할 수 있다.

 

버퍼를 사용하면 다음과 같은 장단점이 있다.

[장점]

- 묶어서 한 번에 전달하므로, 성능이 향상된다.

- 속도 차이가 나는 두 장치 사이의 완충제 역할을 할 수 있다.

 

[단점]

- 추가적인 메모리 공간을 필요로 한다. => 사용 용도에 맞게 적절한 크기로 사용해야 한다.

 

참고) C언어에서 버퍼 종류

더보기

C언어에서 스트림은 다음과 같은 형태의 버퍼를 가질 수 있다.

  • fully buffered : 버퍼에 데이터가 꽉 채워 졌을 때, 읽기/쓰기 작업 진행 ex) stdin
  • line buffered : 개행 문자가 들어왔을 때 읽기/쓰기 작업 진행 ex) stdout (터미널인 경우)
  • unbuffered : 어떠한 상태에서도 바로 읽기/쓰기 작업 진행 ex) stderr

 

728x90
반응형

'컴퓨터 기본 지식' 카테고리의 다른 글

비트 연산에 대한 이해  (0) 2020.06.24
컴퓨터의 실수 표현 방법  (1) 2020.06.24
컴퓨터의 정수 표현 방법  (0) 2020.06.24
컴퓨터의 수 표현  (0) 2020.06.24
문자 인코딩에 대한 이해  (0) 2020.06.23