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 |