POSIX.1-2008에서 STREAMS가 더 이상 사용되지 않는 것으로 표시된 이유는 무엇입니까? [폐쇄]

POSIX.1-2008에서 STREAMS가 더 이상 사용되지 않는 것으로 표시된 이유는 무엇입니까? [폐쇄]

POSIX.1-2008 XRAT 이론적 근거에는 X/Open STREAMS가 표준의 향후 버전에서 제거될 수 있으며 엄격하게 호환되는 응용 프로그램이 이를 사용해서는 안 된다고 명시되어 있지만 그 이유는 설명하지 않습니다.

표준에서 효과적으로 제거된 이유는 무엇입니까?

POSIX의 범위를 벗어납니까? 이런 방식으로 장치 드라이버를 구현하는 데 결함이 있습니까? 저는 STREAMS가 흥미롭다고 생각합니다. 저는 장치 드라이버를 레이어로 구현한다는 아이디어를 좋아합니다.

답변1

STREAMS에는 API가 포함되어 있습니다. 이 개념이 널리 채택되어 휴대용 응용 프로그램 등에서 사용된다면 확실히 표준화의 영역에 속하게 될 것입니다.

Linux 해커들 사이에서 널리 알려진 이론은 STREAMS가 1994년에 종료되었으며 이전 버전과의 호환성을 위해서만 존재한다는 것입니다. (아피스).

https://lkml.org/lkml/1998/6/28/138

또한 원래는 웹을 포괄하도록 설계되었습니다(인용: Wikipedia). 분명 100M/1G 서버 시대에는 이것이 네트워크 성능에 걸림돌이었는데... 이제는 10G+가...

사람들은 Linux 네트워킹이 여전히 느리다고 말합니다(DPDK처럼 사용자 공간을 우회하려고 시도함). 따라서 STREAMS 모델을 적용하지 않는 네트워크 스택이 있어서 기쁩니다.

저는 STREAMS에 익숙하지 않지만 원래 디자인의 나머지 절반은 터미널 IO였습니다. 적어도 Linux의 경우에는 약간 오래되었다고 말할 수 있습니다. 우리는 필요한 작업을 수행하는 인터페이스를 갖추고 있으며 추가 기능을 작성하면 불필요한 중단이 발생합니다. 이미 다음을 사용하여 중간 처리를 전환할 수 있습니다.산업 규율, 이는 교환 가능한 필터를 제공하는 대신 데이터를 다른 하위 시스템으로 이동하는 것처럼 보입니다. 예를 들어, PPP(분야) 중 하나는 장치 노드와 완전히 다른 네트워크 인터페이스를 생성합니다. 결과가 장치 노드인 경우에도 udev 핫플러그 장치 관리자에 특정 유형의 새 장치로 선언하는 것이 깔끔해 보입니다. 예를 들어, 직렬 마우스 규칙을 적용하면 X가 USB 마우스를 연결하는 것과 똑같은 메커니즘을 통해 선택하는 새로운 입력 장치가 생성됩니다.

답변2

사용자 공간 프로그래머의 관점에서 보면 STREAMS는 훌륭한 API이지만 커널 관점에서 보면 형편없는 API입니다. 원격으로 실행되는 방식으로는 구현할 수 없습니다.

이러한 이유로 STREAMS를 구현한 시스템은 몇 년 전에 이를 포기했습니다. POSIX는 현재 상황을 기록합니다.

관련 정보