Unix에서 "모든 것이 바이트 스트림이다"는 것은 무엇을 의미합니까?

Unix에서 "모든 것이 바이트 스트림이다"는 것은 무엇을 의미합니까?

저는 Linux 초보자이고 파일 시스템을 탐색하는 동안 "라는 문구를 자주 접하게 됩니다.모든 것이 파일이다". 이 질문에 대한 답이 보입니다.여기하지만 아직도 개념을 파악하지 못하고 있어요. 답변에는 정확하게 "모든 것은 바이트 스트림이다"

모니터/키보드 등이 "바이트 스트림"으로 표시된다는 말이 무슨 뜻인지 알 수 없습니다. 누군가 이것을 시각화하도록 도와줄 수 있나요?

답변1

말하자면 "모든 것은 파일이다"라는 슬로건이다. 원한다면 밈. 그것은 사실이 아닙니다.

hello.txt분명히 하드웨어 장치는 ext4 파일 시스템 과 같은 방식으로 실제 파일이 아닙니다 . 그들 중 다수는 저장 장치와 관련이 없습니다.

하지만 모든 것이 다는 아니지만파일, 여러 가지가 가능합니다.마치 접근한 것처럼적어도 어느 정도는 파일이었습니다. 즉, 파일 시스템 트리에 이름이 있고 및 read()시스템 write()호출을 사용할 수 있습니다. 후자는 "모든 것이 바이트 스트림이다"라는 의미를 고려할 때 특히 중요합니다. 해당 호출은 바이트 스트림에 액세스하기 때문입니다.

일반 파일, 원시 디스크 장치, 터미널, 네트워크 소켓 및 파이프에 대해 동일한 시스템 호출이 작동하므로 각각에 대해 동일한 도구 세트를 사용할 수 있습니다. 예를 들어 echo foo출력이 연결된 위치에 관계없이 동일하게 작동합니다. 이를 통해 유틸리티 구현을 단순화하고 새로운 목적에 적용하기가 더 쉬워집니다. 셸이나 다른 명령줄 유틸리티는 파이프나 소켓을 통해 SSH 서버에 연결하고 네트워크를 통해 액세스하기 위해 특별한 작업을 수행할 필요가 없습니다. (대화형 세션의 경우 SSH는 의사 터미널을 생성하므로 로컬 세션과 크게 다르지 않습니다.)

또한 파일 시스템에 여러 가지 항목이 있는 경우 및 쉘 리디렉션( )을 ls사용하여 나열하고 액세스 할 수 있습니다 . 이는 덜 일반적인 시스템 호출을 만들기 위해 특별한 바이너리가 필요 없이 스크립트 안팎에서 특수 파일에 액세스하는 데 유용할 수 있습니다 .catecho foo > .../proc/sys

아직은 아니야모든 것파일 또는 바이트 스트림이며, 모든 것을 read()및 으로 수행할 수 있는 것은 아닙니다 write(). UDP 소켓은 고정된 크기의 멀티바이트 데이터그램을 전송하므로 바이트 스트림이 아닙니다. (그래도 read()여전히 write()작동하지만 약간 다릅니다.) 일부 작업은 여전히 ​​시스템 ioctl()호출로 수행되어야 하며 ioctl 작업은 장치마다 다릅니다. Linux에서는 네트워크 장치의 파일 시스템에 이름이 없습니다.

또한 참조하십시오

답변2

UNIX/Linux 시스템의 모든 것은 일종의 입력 또는 출력 장치로 시각화될 수 있습니다.

디스크는 둘 다입니다. 디스크에 바이트 스트림을 쓰거나 디스크에서 바이트 스트림을 읽습니다. 키보드는 입력 장치입니다. 키보드에서 바이트 스트림을 읽습니다.

이 바이트 스트림을 해석하는 것은 쉘, 사용자 프로그램, 시스템 프로그램 등 현재 키보드를 사용하는 프로그램에 달려 있습니다. 터미널은 단순히 STDOUT 또는 STDERR에 기록되는 바이트 스트림입니다.

그래픽 콘솔에 관해 이야기할 때 비유가 다소 무너지지만 각 터미널 창 내에서는 유지됩니다. 해당 터미널 창은 쉘/프로그램에 의해 바이트가 전송되기를 기다리고 해당 바이트를 텍스트 또는 기타 ASCII 문자 형식으로 사용자에게 표시하는 것입니다.

이 답변에 대한 설명에서 지적했듯이 시스템에 더 깊이 들어가면서 비유는 더욱 세분화됩니다. "모든 것은 파일이다"라는 초기 문구와 "모든 것은 바이트 스트림이다"라는 관련 문구는 시스템을 처음 접하거나 경험이 부족한 사람들을 위해 시스템에 대한 관점을 단순화하기 위해 만들어진 것으로 보입니다. 경험을 쌓고 Linux에 더 많이 참여하게 되면 이러한 단순화가 때로는 부정확할 수도 있지만 환경에 이제 막 익숙해진 사람들에게는 여전히 가치가 있다는 것을 깨닫게 될 것입니다.

관련 정보