저는 Unix와 Linux에서 BSD와 GNU 등에 관해 많이 읽었습니다. 그러나 BSD와 GNU 사용자 영역이 자주 언급되기는 하지만 실제적이고 실질적인 차이점이 무엇인지 여전히 이해하지 못합니다. 누군가 자세히 설명해 주시겠습니까?
답변하실 때 역사적 연관성을 충분히 설명해 주시기 바랍니다. 그리고 저는 GNU/Linux가 주류 UNIX(OS X 제외)가 아니었던 시대를 살아갈 만큼 오래 살지 못했다는 점을 기억하십시오.
답변1
"사용자 영역"이라는 용어는 다양한 맥락에서 많은 것을 나타낼 수 있지만 여기서는 "GNU 사용자 영역"과 "BSD 사용자 영역"을 배포판과 함께 제공되는 기본 최소 어셈블리 집합으로 해석하겠습니다.
가장 큰 차이점은 두 사용자 영역이 완전히 다른 소스 코드로 시작된다는 것입니다.GNU 고양이 소스 코드 NetBSD 고양이 소스 코드. 개념적으로 간단한 이 프로그램을 통해 NetBSD의 cat이 전통적인 단일 문자 명령줄 플래그를 사용한다는 것을 알 수 있습니다. GNU 프로그램은 단일 문자 식별자를 갖는 경향이 있지만 --something-long
유형 옵션 도 있습니다 . GNU 프로그램은 또한 POSIX 호환성을 지향하는 경향이 있습니다.
어떤 경우에는 소스 코드의 차이로 인해 두 사용자 영역이 다르게 동작하게 됩니다.
NetBSD는 (적어도) 표준 C 라이브러리인 libc의 자체 버전을 사용하는 것 같습니다. 제가 보기에는 조금 이해하기 어렵지만 libc와 동적 연결 사이에는 이상한 상관관계가 있습니다. 마찬가지로 소스 코드가 다르면 동작도 달라집니다.
내 생각에 쉘 사용자라면 이것이 ps
다르게 동작하고 ls
익숙한 것과 약간 다른 출력을 제공할 수 있다는 것을 알게 될 것입니다. 명령줄 플래그 유형을 사용하는 경우 --long-option
일부 프로그램에 해당하는 명령줄 플래그를 찾아야 합니다.
역사적으로 나는 BSD 사용자 공간이 V6 및 V7 Bell Labs Unix에서 더 직접적으로 상속되어 32V 포트를 통해 VAX 하드웨어에 연결된다는 것을 알고 있습니다. GNU 사용자 영역은 적어도 부분적으로는 1980년대 초 코드를 철저하게 비밀로 유지하려는 AT&T의 시도에 대한 대응으로 더욱 새로운 것입니다. 1983년 Bell System이 분리된 후 AT&T는 Unix를 "수익화"하려고 시도했습니다. 그 중 일부는 대부분의 사람들이 소스 코드를 볼 수 없도록 하는 방식으로 소스 코드에 대한 라이선스를 부여하는 것입니다. Richard Stallman과 다른 사람들이 질문이 있습니다. 그들의 GNU 프로젝트는 특별히 자유롭게 공유 가능한 Unix 계열 시스템을 만들기 위해 존재합니다.
한편, 1993년 AT&T는 BSD("B"는 캘리포니아 대학이 위치한 버클리를 의미함) 시스템에 대해 캘리포니아 대학 시스템을 상대로 소송을 제기했습니다. Berkeley 사람들은 AT&T의 모든 원본 소스 코드를 최소한 NetBSD 사용자 영역의 조상이 된 새로운 코드로 대체했습니다. AT&T와 UCB는 1994년에 합의에 이르렀습니다.드러내다2004년 대중에게 공개됐다.
물론 최소한 아이디어는 교차 수분되므로 GNU와 BSD 사용자 공간 사이에는 최소한 개념적 유사성이 있지만 극단은 확실히 다릅니다.