본문 바로가기
목차
CE

[CE] Stream이란

by ds31x 2024. 9. 11.
728x90
반응형

Stream:

Stream 은 데이터를 한 번에 모두 처리하지 않고, 일정한 크기의 조각(chunk) 으로 나누어 순차적으로 흐르게 하며 처리하는 방식 또는 그 대상abstraction (추상화한 개념)임.

 

파일, 네트워크 소켓, 메모리 등 입출력(I/O)이 가능한 모든 객체byte 또는 bit (혹은 문자)의 연속적인 흐름으로 다루는 데 사용됨.

 

다음과 같은 특짐을 가짐.

  • 추상화된 데이터 흐름: 파일, 네트워크, 메모리 등 다양한 I/O 자원동일한 방식으로 다룰 수 있도록 abstraction.
  • 순차 처리: 데이터를 순서대로 읽거나 쓰며, 현재 처리 위치(file pointer)를 유지함.
  • 지연 처리: 데이터 전체를 한 번에 메모리에 올리는 것이 아니라, 필요한 만큼만 순차적으로 처리함.
  • 버퍼 기반 동작: 내부적으로는 buffer를 사용하여 I/O 효율성을 높임.
  • 대용량 데이터 처리에 유리: 데이터를 일정한 chunk로 나누어 순차적으로 처리하므로 영상, 로그, 대규모 텍스트 파일 등도 메모리 부담 없이 처리 가능.

https://jcsites.juniata.edu/faculty/rhodes/cs240/fileproc.html

 


1. 프로그래밍에서의 stream

  • 입력 스트림(Input Stream):
    • 데이터를 프로그램으로 가져오는 stream (예: 키보드입력, 파일 읽기, 네트워크 수신)
    • OS에서 Process 에 기본으로 할당되는 stdin 이 대표적인 예.
    • 숫자로 0 (정확히는 file descriptor가 0임)으로 식별되기도 함.
    • Python에선 sys.stdin 으로 표준 입력스트림을 가리킴.
  • 출력 스트림(Output Stream):
    • 데이터를 외부로 보내는 흐름 (예: 파일 쓰기, 네트워크 전송)
    • Python의 경우
      • file로 연결된 경우 full-buffered 로 buffer가 다 차야 출력이 이루어짐.
      • console로 연결된 경우 line-buffered로 linefeed에서 flush가 이루어짐.
      • sys.stdout 이 표준 출력스트림을 가리킴.
    • OS에서 Process 에 기본으로 할당되는 stdout 이 대표적인 예.
    • 숫자로 1 (정확히는 file descriptor가 1임)로 식별되기도 함

이들 모두 stream 방식으로 데이터를 순차적으로 처리하는게 일반적임.

 

이 외에도 stderr로 대표되는 "표준에러 출력스트림 (file descriptro가 2)" 도 있으나, 기본적으로 stdout과 동일하게 console로 설정된다.

  • 오류 메시지 등이 출력됨.
  • Python에선 sys.stderr 이 표준에러출력스트림을 가리킴.
  • unbuffered 으로 flush가 자동으로 이루어진다고 생각하면 됨.
  • redirection 등을 통해 다른 곳으로 출력되게 설정가능.

2. 미디어 스트리밍에서의 stream

  • 실시간 비디오/오디오 전송 및 재생
  • 데이터를 작은 chunk로 나누어 전송하며, 사용자에게 실시간으로 재생 가능
  • 예시: Netflix, YouTube와 같은 미디어 스트리밍 서비스

주요 특징

  • 순차적 처리: 대용량 데이터를 한 번에 처리하지 않음
  • 실시간 처리: 실시간 데이터 전송 및 재생에 유리
    • 사실 buffer 가 사용되기 때문에 온전한 real time은 아님.
  • 입출력 효율성: 파일이나 네트워크를 통해 효율적인 데이터 처리.

같이 보면 좋은 자료들

https://dsaint31.me/mkdocs_site/CE/ch10/ce10_2_04_stdio/#standard-io-library_1

 

BME

I/O Stream 과 Standard I/O Library 1. Stream 이란? 스트림(stream) 이라는 개념은 데이터의 흐름을 의미하며, 이를 bit(비트) 또는 byte(바이트)의 연속으로 생각할 수 있음. 종종 bit stream 또는 byte stream 이라고

dsaint31.me

 

https://jcsites.juniata.edu/faculty/rhodes/cs240/fileproc.html

 

Streams and File I/O

void writeDouble(double v) Converts the double argument to a long using the doubleToLongBits method in class Double, and then writes that long value to the file as an eight-byte quantity, high byte first. (you are not losing the fractional part of the dou

jcsites.juniata.edu


 

 

728x90