임베디드/[ Linux Kernel ]

[ Linux Kernel ] 30. 스트림(Stream)이란?

kim.svadoz 2020. 11. 12. 17:22
반응형

30. 스트림(Stream)이란?


우리는 프로그램을 실행할 때 키보드를 통해서 입력을하고 모니터를 통해서 출력을 하고 있죠?

우리는 별다른 무리없이 간단하게 입출력을 합니다. 생각을 해보면 키보드에서 입력을 받고, 하드웨어적인 부분을 처리하여야 입력이 되고 화면으로 출력이 되겠죠?

예로 A라는 문자를 눌렀다고 가정해봅시다. 그러면 키보드에서 신호가 나갈 것이고, 그것을 컴퓨터에서 처리하여, 출력장치인 모니터로 신호를 보내 결과적으로 화면에 A라는 문자가 찍힐 것입니다.

그러나, 우리는 이렇게 하드웨어적인 세세한 부분까지 신경을 쓰지 않습니다. 입출력을 도와주는 스트림(Stream)이란 녀석이 있기 때문이죠

스트림을 사용하는 입출력 장치(Input/Output Device)는 많습니다. 키보드나 모니터 뿐만 아니라, 프린터, 마우스, 네트워크, 메모리 등등 많은 입출력 장치에서 쓰인다. 물론 스트림의 종류도 입출력 장치의 종류만큼 다양하다.

파일에 데이터를 쓰고 싶다고 한다면 파일관련 스트림을 찾아서 목표지점으로 삼을 것이다. 목표지점이란 입력스트림의 경우 데이터가 위치하는 곳을 말하고, 출력 스트림의 경우 데이터가 저장될 곳을 말한다.

입출력 장치에 데이터를 입력하거나 출력하는 처리를 하기 위해 스트림이 존재하는데, 스트림은 방향에 따라 2가지로 나눌 수 있다.

=> 사용자 입장에서 데이터가 들어오면 입력 스트림(Input Stream)이고, 데이터가 나가면 출력 스트림(Output Stream)이다.

  • 입력 스트림은 데이터를 스트림으로 읽어 들이고, 스트림에 존재하는 데이터를 하나하나 읽는다.
  • 출력 스트림은 출력된 데이터를 스트림으로 보내고 스트림에 있는 데이터를 비워 버린다. 비워진 데이터는 모두 목표지점에 저장이 되는 것이다.

결국 스트림은 데이터의 입출력 처리의 중간자 역할을 한다. 데이터의 목표지점은 네트워크건 메모리건 프린터건 중요하지 않는다.

그저 해당되는 데이터를 스트림으로 읽어 들이거나 스트림으로 내보내면 끝인것이다. 하드웨어적인 복잡한 작업은 스트림이 알아서 해주고 사용자는 편하게 사용만 하면 되는 것!!

  1. 스트림(Stream) 이란?

    • 일반적으로 데이터, 패킷, 비트 등의 일련의 연속성을 갖는 흐름을 의미

      • 음성, 영상, 데이터 등의 작은 조각들이 하나의 줄기를 이루며 전송되는 데이터 열

      호스트 사옿간 또는 동일 호스트 내 프로세스 상호간 통신에서 큐에 의한 메세지 전달방식을 이용한 가상 연결통로를 의미하기도 한다

  2. 멀티미디어 스트리밍 기술

    • 전송 방식 구분

      • 다운로드 방식 : 재생(Play) 전에 데이터를 완전히 다운로드 받는 방식

        (웹 서버)/HTTP/TCP/IP 상에서 동작

      • 스트리밍 방식 : 데이터 수신과 동시에 재생, 사용자에게 동시성 제공. 실시간 정손기

        (미디어 서버)/RTP/UDP/IP 상에서 동작

    • 스트리밍 종류

      • RTP 스트림 : 인터넷 스트리밍 프로토콜

        • RTP/UDP/IP 패킷에 실릴 수 있도록 한 스트리밍 프로토콜
        • 오디오, 비디오 등의 정보를 담은 일련의 패킷화된 정보 앞에 RTP 헤더를 붙힌 스트림
      • MPEG 스트림 : 주로 디지털 방송용 스트리밍 프로토콜

        • MPEG 다중화 방식에 의해 패킷 스트림화 된것

          *인터넷 상에서는 MPEG 다중화 스트림이 RTP 스트림 위에 또한 실릴 수 있음

        • PS, TS, ES, PES

    • 스트리밍 관련 프로토콜

      • 인터넷 실시간 미디어 흐름 및 제어 관련 프로토콜
        • 물리정 정보의 빠른 흐름 및 제어 : RTP(빠른 수송) / RTSP(수송 제어)
        • 스트리밍 재생 제어 : RTSP(RTP 스트림 전반에 대한 제어)
      • 디지털 방송용
        • 비디오 압축 전송용 프로토콜 : MPEG-2, H.264
        • 음성 압축 전송용 프로토콜 : MPEG-2 AUDIO, AC-3
    • 멀티미디어 스트림 재생

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

    • C 언어에서의 스트림

      • 연속된 문자 또는 데이터

        크게 텍스트9바이트) 스트림 및 바이너리(이진) 스트림으로 구분

      • ANSI C의 표준 파일 스트림 : stdin, stdout, stderr

    • 스트림 사용 이유

      => 물리 디스크 상의 파일, 장치들을 통일된 방식으로 다루기 위한 가상적인 개념

      => 따라서 스트림은 어디서 나왔는지 어디로 가는지 신경 쓸 필요 없이 자유롭게 어떤 장치 및 프로세스, 파일들과 연결될 수 있어 많은 편리성 제공

반응형