나는 유닉스와 리눅스에서 BSD와 GNU 등에 대해 많이 읽었지만 BSD와 GNU 사용자 영역 사이에 실제로 언급되는 실제 차이점이 무엇인지 이해하지 못합니다. 정교한 사람이 있습니까?
대답 할 때 GNU / 리눅스가 주류 UNIX가 아니었던시기 (OS X 제외)를 경험할만큼 오래 살지 않았다는 점을 명심하고 역사적 연결을 충분히 설명하십시오.
답변
“userland”라는 용어는 서로 다른 맥락에서 많은 것을 언급 할 수 있지만 여기서는 “GNU userland”대 “BSD userland”를 배포판과 함께 제공되는 기본 최소 프로그램 세트로 해석합니다.
가장 큰 차이점은 두 사용자 영역이 완전히 다른 소스 코드로 시작한다는 것입니다. GNU 고양이 소스 코드 NetBSD 고양이 소스 코드 . 개념이 간단한 프로그램에서 NetBSD의 고양이가 전통적인 단일 문자 명령 행 플래그를 사용한다는 것을 알 수 있습니다. GNU 프로그램에는 단일 문자 플래그뿐만 아니라 --something-long
유형 옵션 도 있습니다. GNU 프로그램은 또한 POSIX 호환성을 지향합니다.
소스 코드의 차이로 인해 두 사용자 영역에서 서로 다른 동작을하는 경우가 있습니다.
또한 NetBSD는 (적어도) 표준 C 라이브러리 인 자체 버전의 libc를 사용하는 것처럼 보입니다. 나는 여기 내 머리 위로 들어가고 있지만 libc와 동적 연결은 이상하게 상호 관련되어 있습니다. 다시 말하지만, 소스 코드가 다르면 동작이 달라집니다.
나는 쉘 사용자로서, 당신은 그것이 ps
다르게 행동 하고, 당신 과 ls
는 약간 다른 출력 을 줄 수 있다고 생각 합니다. 명령 행 플래그 --long-option
유형 을 사용하는 경우 일부 프로그램에 대해 동등한 명령 행 플래그를 찾아야 합니다.
역사적으로, BSD 사용자 영역은 V6 및 V7 Bell Labs Unix에서 32V 포트를 통해 VAX 하드웨어로 직접 내려갑니다. GNU 사용자 영역은 80 년대 초반 코드를 철저히 보호하려는 AT & T의 시도에 대한 반응으로 적어도 다소 새로 작성되었습니다. AT & T는 1983 년 벨 시스템 사업이 끝난 후 유닉스를 “수익 화”하려고 노력했다. 그 중 일부는 대부분의 사람들이 소스 코드를 보지 못하게하는 방식으로 소스 코드에 라이센스를 부여하는 것이 었습니다. Richard Stallman과 다른 사람들은 이것에 문제가있었습니다. GNU 프로젝트는 자유롭게 공유 할 수있는 유닉스 계열 시스템을 만들기 위해 특별히 존재했습니다.
한편 AT & T는 1993 년까지 캘리포니아 대학 시스템을 BSD ( ‘B’는 캘리포니아 대학이 위치한 버클리) 시스템에 대해 소송을 제기했습니다. 버클리 사람들은 AT & T의 모든 원본을 새로운 코드로 교체했으며,이 새로운 코드는 최소한 NetBSD 사용 자국의 조상이되었습니다. AT & T와 UCB는 1994 년 합의에 와서 밝혀 2004 년에 대중에게.
당연히 적어도 아이디어는 교차 수분을 가지므로 GNU와 BSD 사용자 랜드 사이에는 개념적 유사성이 있지만 코너 케이스는 분명히 다릅니다.