Linux의 커널이 단일 커널이라면 왜 "Unix와 유사"합니까?

Linux의 커널이 단일 커널이라면 왜 "Unix와 유사"합니까?

내가 이해한 바에 따르면 Unix의 특성 중 하나는 고도로 모듈화된 파일 프로세스에 작업을 위임하는 마이크로커널이 있다는 것입니다. 그렇다면 Linux가 이러한 단일 커널 접근 방식에서 벗어났다면 왜 여전히 "Unix와 유사한" 것으로 간주됩니까?

답변1

나는 "유닉스 계열"을 어떻게 정의하느냐에 답이 있다고 믿습니다. "Unix 계열"에 대한 Wikipedia 항목에 따르면 표준 정의가 없는 것 같습니다.1

Unix 계열(UN*X 또는 *nix라고도 함) 운영 체제는 Unix 시스템처럼 작동하지만 반드시 Single UNIX 사양의 모든 버전을 따르거나 인증을 받을 필요는 없는 운영 체제입니다.

용어를 정의하는 표준은 없으며 특정 운영 체제가 "유닉스와 유사한" 방식에 대해 약간의 의견 차이가 있을 수 있습니다.

이 용어에는 Bell Labs Unix에서 영감을 얻었거나 해당 기능을 에뮬레이트하도록 설계된 무료 오픈 소스 운영 체제, 상업용 및 독점적 유사한 운영 체제, 심지어 라이센스가 부여된 UNIX 소스 코드를 기반으로 하는 버전(충분히 "Unix와 유사"할 수 있음)이 포함될 수 있습니다. 》 "UNIX" 상표로 인증 및 라벨링됨).

가장 분명한 이유는 UNIX와 MINIX가 Linux의 전신이자 Linux의 탄생에 영감을 주었다는 점일 것입니다.2

Torvalds는 MINIX에서 Linux 커널을 개발하기 시작했으며 MINIX용으로 작성된 애플리케이션도 Linux에서 사용되었습니다. 나중에 Linux는 점차 성숙해졌고 Linux 시스템에서 Linux 커널 개발이 추가로 수행되었습니다.

Linus Torvalds는 자신의 발명품을 "free", "freak" 및 "x"(Unix에 대한 암시)의 합성어인 Freax라고 부르고 싶었습니다.

운영 체제를 "유닉스 계열"이라고 부를 때 시스템이 모놀리식 시스템인지 마이크로커널인지는 고려하지 않는 것 같습니다. 적어도 시스템이 POSIX 규격인지 아니면 대부분 POSIX 규격인지만큼 자주는 아닙니다.

답변2

"UNIX 방식"은 실제로 사용자 경험을 의미합니다. 소수의 유틸리티 세트를 결합하여 효율적인 운영 체제 명령줄을 구축할 수 있습니다. 관련 메모에서 운영 체제 유틸리티는 결코 "특별한" 것이 아니며 사용자가 직접 작성하는 프로그램 이상의 기능을 갖고 있지도 않습니다.

오늘날 UNIX는 이 분야에서 큰 성공을 거두어 운영 체제가 명령줄 인터페이스를 표시하는 방식이 되었기 때문에 이를 말하기가 어렵습니다. 이는 반례를 통해 가장 잘 설명됩니다. cp a.txt b.txtIBM 메인프레임에서 작동하는 방법은 다음과 같습니다.

//COPY     JOB ,CLASS=E,MSGCLASS=X,NOTIFY=&SYSUID
//cp       EXEC PGM=IEBGENER
//SYSIN    DD DUMMY
//SYSPRINT DD SYSOUT=*
//SYSUT1   DD DSNAME=a.txt,DISP=SHR
//SYSUT2   DD DSNAME=b.txt,DISP=(NEW,CATLG),UNIT=SYSDA

모든 유형의 파일을 복사하지는 않습니다.

UNIX는 성능을 희생하면서 유용성을 단순화하는 많은 가정을 합니다. 파일 채널 1(stdin), 2(stdout) 및 3(stderr)은 터미널을 오가며 위의 JCL에서 많은 상용구를 제거합니다. 파일 시스템은 하나의 데이터 유형(바이트)과 하나의 액세스 모드(순차)를 지원합니다(순차 데이터를 읽거나 쓸 수 있는 포인터는 일종의 "랜덤 액세스"를 달성하기 위해 이동할 수 있지만). 이는 시스템 유틸리티가 모든 파일 및 데이터 유형을 포괄하기 위해 한 가지 유형의 파일과 한 가지 유형의 데이터만 처리하면 된다는 것을 의미합니다. 파일 시스템에는 사전 할당이 필요하지 않습니다. 운영 체제에 파일 이름이 알려진 경우 해당 파일은 자동으로 디렉토리(IBM 메인프레임에서는 "디스크 디렉토리"라고 함)에 추가됩니다.

이러한 가정은 너무나 성공적이어서 오늘날 우리는 더 이상 고려하지도 않습니다. 당시에는 파일의 최대 크기를 미리 알려주지 않고 파일 시스템의 막대한 오버헤드를 상상해 보면 방탕해 보였을 것입니다.

그러나 UNIX는 여기서 멈추지 않습니다. 이는 시스템 유틸리티에 대한 "도구 상자" 접근 방식을 장려합니다. 메인프레임 IEBGENER는 파일을 인쇄하고, 레코드의 필드를 다시 정렬하고, 레코드를 삭제하고, 빈 레코드를 생성할 수 있습니다. 반면 UNIX에서는 cp가 파일을 복사하고, cat이 파일 내용을 나열하고, cut이 필드를 처리합니다. 명령의 표준 출력을 다음 파일의 표준 입력으로 연결하는 깔끔한 구문이 모두 단일 터미널 라인에 있습니다. 이 "파이프라인" 구문과 작은 명령을 사용하면 IEBGENER가 할 수 있는 모든 작업을 수행할 수 있습니다. 이는 IEBGENER의 저자들이 꿈도 꾸지 못했던 일입니다.

Kernighan과 Plauger는 1976년에 이 접근 방식에 대한 영향력 있는 책을 썼습니다.소프트웨어 도구- 이것은 실제로 "UNIX 방식"의 첫 번째 표현이었습니다. Kernighan과 Pike는 1984년 저서에서 이러한 접근 방식을 반복했습니다.UNIX 프로그래밍 환경.

답변3

내 이해에 따르면 "모놀리식"은 Linux를 잘못 표현한 것입니다. 전체란 광대하고 변함없다는 뜻이다. 모듈을 커널 공간에 연결할 수 있다는 사실은 단일 정의를 깨뜨립니다. 내 생각에 "모놀리스"라는 이름은 Greg Kroah-Hartman의 연설에서 그가 사용한 단어가 옳지 않다고 말했지만 사람들은 Linux가 모놀리식이라는 것을 받아들였다고 말했습니다. 마이크로커널과 모놀리스라는 용어는 종종 완전히 반대되는 것으로 간주되지만 실제로는 그렇지 않습니다. Linux는 비모놀리식 커널이지만 마이크로커널은 아닙니다.

답변4

나는 항상 UNIX가 상표이자 기술 사양이라고 믿어왔습니다.

황금시대에는 그런 일이 전혀 없었지만 저는 청년이었고 SCO v IBM이 그것을 형성했습니다.

UNIX® - 흥미로운 이름의 OpenGroup이 정의하고 승인합니다.https://www.opengroup.org/unix%C2%AE-systems

POSIX는 유용한 사양이지만 수년에 걸쳐 약간 하락했으며, 지난 몇 년간의 고통스러운 시절에도 불구하고 Microsoft Windows 2K는 필요한 표준을 달성했습니다. 최신 버전은 4개 국가에 조화를 가져왔으며 Linux용 Windows 하위 시스템 v.2는 이기종 서버 자산을 보유한 많은 기업에게 매력적인 옵션입니다.

내가 아는 한, Linux는 "전문 서적에서 말하는 것"보다는 시스템 관리자, 개발자, 최종 사용자 등 "사용자에게 적합한 것"에 대한 합의에 항상 독단적으로 더 가깝습니다.

관련 정보