Stream   스트림

(2022-10-10)

1. 스트림(Stream) 이란?

  ※ 영어 뜻으로는, `흐르는 시냇물` 등을 의미

  ㅇ [데이터 관점]
     - 일반적으로, 데이터,패킷,비트 등의 일련의 연속성을 갖는 흐름을 의미
        . 음성,영상,텍스트 등의 작은 데이터 조각들이 하나의 줄기를 이루며,
        . 순서대로 물 흐르듯이 전송되는 데이터 열(列)

  ㅇ [프로세스 관점]
     - 원격 호스트 상호간 또는 동일 호스트프로세스 또는 장치 상호 간의 통신에서,
     - 에 의한 메세지 전달방식 등을 이용한,
     - 가상 연결 통로 또는 이를 구현한 소프트웨어 모듈


2. 동영상 재생 기술에서의 스트림 

  ※ ☞ 스트리밍 (Streaming) 참조
     - 점진적 다운로드하며 재생하는 방식


3. 암호화 방식에서의 스트림

  ※ ☞ 스트림 암호 (Stream Cipher) 참조
     - 비트/바이트/단어들을 순차적으로 암호화하는 방식


4. 다중안테나 방식에서의 스트림

  ※ ☞ 공간 스트림 (Spatial Stream) 참조   
     - 다중 안테나에 의해 공간 속을 데이터가 연속 흐르는 통로로 간주되는 라디오 링크


5. 운영체제 상의 스트림

  ㅇ 스트림 사용 이유
     - 물리 디스크상의 파일,장치들을 통일된 방식으로 다루기 위한 가상적인 개념
        . 따라서, 스트림은 어디서 나왔는지 어디로 가는지 신경을 쓸 필요없이,
        . 자유롭게, 어떤 장치,프로세스,파일들과 연결될 수 있게 하므로써,
        . 프로그래머에게 많은 편리성 줌

  ㅇ 스트림 처리 상의 특징
     - 장치 독립적 임
        . 장치든 파일이든 프로세스이든 상관없음 (어떤 것과도 연결될 수 있음)
     - 버퍼 사용
        . 대부분, 스트림이 버퍼라는 임시 저장 공간을 갖고 있어서, 
        . 일정량을 모아두었다가, 시스템 효율을 고려하여 큰 데이터 덩어리 씩 처리하게 됨
        . 주로, CPU입출력 장치 간의 속도 차이 때문에 버퍼를 경유하게 함

  ㅇ 만일, 
     - 파일,디바이스 등을 읽으려면,
        . 운영체제 커널에게, 이곳에 스트림을 연결토록, 시스템콜로써 요청하게 됨
     - 장치 내 또는 네트워크 양단 간의, 프로세스 간에도, 
        . 스트림(파이프)로써 연결이 가능함


6. 프로그래밍 언어상의 스트림

  ㅇ [C 언어]
     - 유닉스 운영체제와 밀접한 관련있는, C 언어 프로그램은,
        . 입출력을 데이터 스트림으로 해석함

     - 입출력 통로
        . C 프로그램은, 프로그램 외부와 스트림을 통해서 만 상호작용을 함
     - 처리 단위
        . 크게, 바이트(텍스트) 스트림 및 바이너리(이진) 스트림으로 구분 처리
     - 표준 스트림 : stdin, stdout, stderr파일기술자 참조
        . 따로, 스트림을 열 필요 없이 바로 사용 가능
        . 표준 입력 스트림 : stdin, 표준 출력 스트림 : stdout, 표준 에러 스트림 : stderr
     - 파일 스트림 
        . 파일 입출력시, 표준 스트림 처럼 자동으로 스트림이 생성되지 않고, 먼저 스트림을 생성시켜야 함
        . [참고용어]  ☞ 파일포인터, Redirection 참조

  ㅇ [C++ 언어]
     - 표준 입력 스트림 객체 : cin
     - 표준 출력 스트림 객체 : cout
        . 사용 例) cout.flush(); cout << "Hello World!";



Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"