linux

linux <1> | linux I/O streams란?

yjlee06 2024. 9. 25. 12:39
반응형
들어가기 전_

stream이라는 단어는 데이터를 전송하는 통로로 많이 들어보셨을 거 같은데요. 클라이언트에서 서버 데이터를 다운로드할 때, 음악을 들을 때 stream라는 데이터 통로를 통해 들어오기도 하죠. I/O streams의 앞에 있는 것은 input / output 즉 입출력 뜻하고 뒤에 있는 streams은 데이터 통로를 의미합니다. 즉 정리하자면 '입출력 데이터 통로'가 되겠네요. 해당 통로가 왜 있는지, 어떠한 역할을 하고 있는지, 어떻게 작동하고 있는지에 대해 소개하겠습니다.

 

1. 해당 통로가 왜 있나요?
kernel space에 대해 알고 있었나요?

일단 kernel의 뜻을 간단히 알고 넘어가겠습니다. kernel은 램, 디스크, 키보드와 같은 외부 장치들을 포함한 모든 하드웨어 리소스의 관리를 담당합니다. 그러한 리소스가 있는 환경을 kernel space라 칭합니다. 또한 kernel space는 애플리케이션에서 직접 접근할 수 없습니다.

왜 접근할 수 없는 것이죠?

kernel은 하드웨어만 관리하도록 개발되었으며 이에 반대되는 개념인 user space는 애플리케이션을 위해 개발되었습니다. 만약 애플리케이션에서 cpu나 메모리를 직접 접근하는 것은 매우 위험한 행위이기에 제한되어 있습니다.

그렇기에

간접적으로 통신을 제공하는 매체를 통해 kernel space와 user space는 통신을 할 수 있습니다. 대표적인 것이 stream이죠.

 

2. 어떠한 역할을 하고 있나요? / 어떻게 작동하고 있나요?

 

사전적 의미

Stream kernel space STREAMS driver 사용하여 user space 존재하는 프로세스와 양방향으로 통신할 있도록하는 데이터 통로입니다. 여기서 입력은 STDIN, 출력은 STDOUT 또는 오류 발생 시 STDERR로 볼 수 있겠습니다.

 

스트림 종류 3가지 STDIN , STDOUT, STDERR

STDIN

한글로는 표준 입력이라 부릅니다.

해당 스트림은 키보드, 마우스와 같은 외부 장치로부터 데이터를 입력받는 통로를 의미합니다.

STDOUT

한글로는 표준 출력이라 부릅니다.

입력된 데이터의 정상적인 처리 결과를 전송하는 통로입니다.

STDERR

한글로는 표준 오류메시지 출력이라 부릅니다.

입력된 데이터를 처리중 오류가 발생하였을 오류 메시지를 전송하는 통로입니다.

 

요약

Stream

Stream kernel space STREAMS driver user space 프로세스간의 양방향으로 데이터를 전달할 있는 데이터 통로

 

STDIN 표준 입력

외부장치로부터 데이터를 입력받는 stream

 

STDOUT 표준 출력

입력된 데이터를 성공적으로 처리된 결과를 보내는 stream

 

STDERR 표준 오류 출력

입력된 데이터를 처리 실패하였을 때 오류를 출력하는 stream

 

끝내는 말

stream이랑 tty 정리하느라 못 올렸던 도커 학습 포스트도 올려야겠네요. 

읽어주셔서 감사합니다!

Reference

수정 또는 추가해야 할 부분이 있으면 댓글로 알려주세요!