나는 종종 많은 웹사이트에서 "유닉스 계열"이라는 용어를 사용하는 것을 봅니다.
표준은 없습니다. 단지 작동 방식이 다를 뿐입니다.
하지만 커널을 처음부터 개발한다면 "UNIX와 유사한" 커널로 간주되는 이유는 무엇일까요?
기본적으로, 코드를 Unix처럼 작성하는 이유는 무엇일까요?
답변1
표준은 없습니다. 단지 작동 방식이 다를 뿐입니다.
나는 대부분의 "UNIX 계열" 운영 체제가 이를 준수하기 위해 매우 진지한 노력을 하고 있다고 믿습니다.POSIX 표준, Open Group이 감독하며 이 그룹도 제어합니다.단일 UNIX 사양이는 "진짜 UNIX"를 정의합니다. 전자가 후자의 핵심이다.
사실 실용성을 정의하는 기준이 있는데유닉스 계열운영 체제. POSIX에 대한 Wikipedia 기사 끝에 있는 "완전히" 및 "대부분" 호환되는 운영 체제 목록을 참조하세요.
몇 가지 분명한 이유가 있습니다.운영 체제특히 단일 Unix 사양(SUS)을 완전히 준수하거나 인증할 수 없는 것으로 간주될 수 있지만 이는 특정 Linux 시스템이 SUS와 반드시 호환되지 않기 때문이 아닙니다. Wikipedia 기사는 사양을 다음과 같이 요약합니다.
SUSv3에는 총 3700페이지가 있으며 주제별로 네 가지 주요 부분으로 나뉩니다.
기본 정의(XBD)- 사양에 사용되는 정의 및 규칙 목록과 호환 시스템에서 제공해야 하는 C 헤더 파일 목록입니다. 총 84개의 헤더 파일이 제공됩니다.
쉘 및 유틸리티(XCU)- 유틸리티 목록 및 쉘 설명, sh. 총 160개의 유틸리티가 지정되었습니다.
시스템 인터페이스(XSH)- 시스템 호출이나 라이브러리 함수로 구현되는 다양한 함수에 대한 사양이 포함되어 있습니다. 총 1123개의 시스템 인터페이스가 지정됩니다.
기본 원칙(XRAT)- 표준에 대한 설명입니다.
표준 사용자 명령줄 및 스크립팅 인터페이스는 Korn Shell의 이전 버전을 기반으로 하는 Bourne Shell의 확장인 POSIX Shell입니다.
기타 사용자 수준 프로그램, 서비스 및 유틸리티에는 awk, echo, ed, vi 및 기타 수백 가지가 포함됩니다. 필수 프로그램 수준 서비스에는 기본 I/O(파일, 터미널 및 네트워크) 서비스가 포함됩니다.
표준에는 테스트 스위트가 함께 제공됩니다. 이를 PCTS 또는 POSIX 인증 테스트 스위트라고 합니다.
또한 SUS에는 372개의 함수와 3개의 헤더 파일을 지정하는 CURSES(XCURSES) 사양도 포함되어 있습니다. 전체적으로 SUSv3은 1742개의 인터페이스를 지정합니다.
이는 분명히 Linux 커널의 일부가 아닌 많은 사용자 영역 구성 요소(예: 쉘)를 의미합니다. 따라서 linux.org 등에는 선택의 여지가 없습니다. 외. 커널은 별도로 인증될 수 있습니다. 이러한 의미에서 커널은 전혀 운영 체제가 아닙니다. 물론 그들은 특정 시스템을 인증하기 위해 커널을 사용하려고 시도할 수 있지만 일반적인 배포 시나리오에서는 의미가 없습니다. 커널과 커널을 유지하는 사람들은 사용자 영역 커널(GNU)과 커널을 유지하는 사람들로부터 독립적입니다. 운영 체제 배포판(Debian, Fedora 등)을 실제로 조립하는 사람들입니다.
나는 Debian이나 Fedora 자체가 인증 프로세스에 참여할 수 있다고 생각하지만(예를 들어 RedHat Enterprise가 "인증 유닉스"가 될 수 있음) 이것이 실제로 바람직한지 의문이 듭니다. 내 생각에 SUS 시스템의 주된 이유는 이를 위해 작성된(상업적 규모, 비소비자용) 소프트웨어를 실행하는 것입니다. 이것은 단순히 Linux의 틈새 시장이 아닙니다. 그렇게 하는 사람들은 OS 라이센스당 수천 달러를 지불하게 될 것입니다. 지원 등 시스템에서 실행하려는 추가 소프트웨어에 대해 라이센스당 수만 달러 또는 수십만 달러를 지불하기 때문입니다. 반면, 리눅스 등의 아웃라이어들은 비즈니스 목적을 위한 단순한 준수를 넘어 설계 목표를 추구하고 있으며, 이에 대한 다양한 예가 있습니다.http://en.wikipedia.org/wiki/STREAMS):
STREAMS는 단일 UNIX 사양 버전 1(UNIX 95) 및 2(UNIX 98)를 준수해야 했지만 BSD 및 Linux 개발자가 STREAMS 제공을 거부했기 때문에 [인용 필요]는 버전 3( UNIX 03의 규정 준수).
SUS와 The Open Group이 != linux, != BSD 등이라는 사실을 강조하는 흥미로운 조정입니다.
답변2
POSIX에 대한 첫 번째 대답을 확장하려면 "UNIX 계열"이 무엇을 의미하는지 이해하려면 먼저 UNIX가 정확히 무엇인지 이해해야 합니다. 다음 문서 보기그룹 열기, Unix 상표를 소유하고 있는 경우세부 사항관련된단일 UNIX 사양진화 - 여기 있습니다유닉스03:
UNIX 03 제품 표준은 단일 UNIX 사양 버전 3을 준수하는 시스템에 대한 지정입니다. 이는 UNIX 98 제품 표준이 크게 향상된 버전입니다. 필수 개선 사항에는 ISO/IEC 9989:1999 C 프로그래밍 언어, IEEE Std 1003.1-2001 및 ISO/IEC 9945:2002와의 정렬이 포함됩니다. 이 제품 표준에는 국제화 시스템 호출 및 라이브러리 확장 V3, 명령 및 유틸리티 V4, C 언어 V2 및 국제화 터미널 인터페이스와 같은 필수 제품 표준이 포함됩니다.
UNIX 98 제품 표준은 UNIX 95 제품 표준의 대폭 향상된 버전입니다. 필수 개선 사항에는 (1) 스레딩 인터페이스, (2) 멀티바이트 지원 확장(MSE), (3) 대용량 파일 지원, (4) 동적 연결, (5) 하드웨어 데이터 길이 종속성 또는 제한을 제거하기 위한 변경 사항, (6) 변경 사항이 포함됩니다. 2000년에. 또한 실시간 지원을 위한 소프트웨어 관리 도구 및 API 세트와 같은 선택적 개선 사항이 포함되어 있습니다. 이 제품 표준에는 국제화 시스템 호출 및 라이브러리 확장 V2, 명령 및 유틸리티 V3, C 언어, XTI(전송 서비스) V2, 소켓 V2 및 국제화 터미널 인터페이스와 같은 필수 제품 표준이 포함됩니다. 또한 소프트웨어 관리 제품 표준을 준수할 수도 있습니다.
UNIX95(내 강조점):
이 제품 표준은 원래 파생된 운영 체제 클래스용으로 개발된 다양한 응용 프로그램을 지원하기 위한 통합 플랫폼을 정의합니다.원래 AT&T가 개발한 UNIX 운영 체제 코드 및/또는 인터페이스, 기본 제품에 기본으로 제공되는 부대시설에 더해 Base보다 범위가 더 넓습니다. 이 제품 표준에는 국제화 시스템 호출 및 확장 라이브러리, 명령 및 유틸리티 V2, C 언어, 전송 서비스(XTI), 소켓 및 국제화 터미널 인터페이스 등의 제품 표준이 포함됩니다.
섬기는 사람버전어떤 경우에는 표준에 인터넷 서버와 IPv6가 추가되었습니다.
물론 우리는 그것을 봅니다AT&T 벨 연구소C 언어는 UNIX의 핵심입니다. 언어, 모듈식 인프라, 셸, 커널, 파일 시스템 및 기타 주요 운영 체제 구성 요소의 설계 및 구현 방식입니다.
여기가 책들이 있는 곳이에요UNIX 운영 체제 설계모리스 J. 바흐(Maurice J. Bach)의 작품은 이 시점에서 역사적 문제와 관련되어 있어 매우 귀중한 읽을거리가 됩니다. 물론 이것이 관련이 있다는 점은 주목할 가치가 있습니다.기타 발명품정말 C언어와 비슷하네요. C는 AT&T Bell이 어셈블리만큼 빠르지만 다양한 하드웨어와 표준 C에 대한 많은 POSIX 확장으로 이식 가능한 언어로 Unix를 구현하기 위해 개발했습니다.
커널 자체의 관점에서 UNIX 커널이 전통적으로 의미했던 바를 설명하는 다음과 같은 개념 다이어그램을 자주 찾을 수 있습니다.
다음은 UNIX System V 커널의 기본 사항을 논의하는 Bach의 고전 책(1986)에서 발췌한 내용입니다.
그러나 [애플리케이션 하위 시스템 및 프로그램]은 모두 궁극적으로 커널에서 제공하는 하위 수준 서비스를 사용하며 일련의 시스템 호출을 통해 이러한 서비스를 활용합니다. System V에는 약 64개의 시스템 호출이 있으며 그 중 자주 사용되는 것은 32개 미만입니다. 사용하기 쉽고 사용자에게 강력한 기능을 제공하는 간단한 옵션이 있습니다. 시스템 호출 세트와 이를 구현하는 내부 알고리즘은 커널의 대부분을 구성합니다 [...]
[...] 두 가지 주요 구성 요소는 파일 하위 시스템과 프로세스 하위 시스템입니다.
파일은 논리적 장치로 간주되는 파일 시스템으로 구성됩니다. 물리적 장치(예: 디스크)에는 여러 논리적 장치(파일 시스템)가 포함될 수 있습니다. 각 파일 시스템에는 파일 시스템의 구조와 내용을 설명하는 슈퍼블록이 있습니다. 파일 시스템의 각 파일은 파일의 속성을 제공하는 인덱스 노드로 설명됩니다. 파일을 작동하기 위한 시스템 호출은 inode를 통해 이루어집니다. [그리고 버퍼 풀]
[...] inode에는 두 가지 버전이 있습니다. 파일이 사용되지 않을 때 inode 정보를 저장하는 디스크 복사본과 활성 파일에 대한 정보를 기록하는 코어 복사본입니다.
UNIX 시스템에서 사용자 프로세스의 실행은 사용자 수준과 커널 수준의 두 가지 수준으로 나뉩니다. 프로세스가 시스템 호출을 실행하면 프로세스의 실행 모드가 다음과 같이 변경됩니다.사용자 모드도착하다커널 모드: 운영 체제는 사용자 요청을 실행하고 서비스하려고 시도합니다 [...]
UNIX 시스템의 아이디어는 사용자가 보다 복잡한 프로그램을 구축하기 위한 구성 요소로 사용할 수 있는 작은 모듈식 프로그램을 작성할 수 있도록 하는 운영 체제 기본 요소를 제공하는 것입니다. 쉘 사용자에게 보이는 이러한 기본 기능 중 하나는 다음과 같은 기능입니다.입력/출력 리디렉션.
[...] 시스템 호출 서비스 외에도 커널은 사용자 커뮤니티를 위한 일반 장부를 수행하고, 프로세스 일정을 제어하고, 주 메모리의 프로세스 저장 및 보호를 관리하고, 인터럽트를 처리하고, 파일 및 장치를 관리하고, 시스템 오류 조건을 처리합니다. .
UNIX 계열 운영 체제에서 다양한 커널 구현에 관심이 있다면 FreeBSD를 확인해 보세요.구현하다(4.4BSD) 또는마하 커널아니면 이것 좀 보세요비교하다그들의 특성.
UNIX의 설계에 대해 더 많이 알수록 UNIX와 그 기원에 대해 아래 다이어그램에서 무슨 일이 일어나고 있는지 더 잘 이해할 수 있습니다.역사. Bach 씨는 자신의 책에서 주로 System V에 대해 이야기하지만 BSD에 대해서도 논의합니다.
가지다눈에 보이는 것보다 더 많은 것이 있습니다진짜. 예를 들어 Mac OSX는 UNIX03입니다.인증그러나 이것이 순수한 UNIX(주로 빨간색)와 연관되어 있다고 보십니까?
위에서 BSD, GNU, Microsoft 및 다양한 개인이 이 세계에 어떻게 기여하는지 확인할 수 있습니다. GNU와 최종적으로 Linux는 UNIX로부터 직접적인 계통이 없지만,암소 비슷한 일종의 영양오픈 소스 세계에서 폐쇄형 상용 UNIX에 있는 도구와 소프트웨어를 재설계하려는 노력입니다. 그러니까 보세요GNU 유지 소프트웨어예를 들어 아이디어는 초기 프로토타입 애플리케이션과 라이브러리에 제공됩니다.
특허전쟁UNIX의 개발(때로는 침체)에 중요한 역할을 했습니다. 라이센스 유형에 따라 UNIX가 폐쇄형과 BSD(BSD는 허용합니다코드를 비공개 소스로 만들려면...OSX 참조) 및일반 공중 라이선스이는 카피레프트 세계에서 Linux와 GNU를 상호보완적으로 만듭니다. 이것은 원래 Linus Torvalds가 개발한 Linux 커널의 고전적인 다이어그램으로, Unix 계열 운영 체제에서 커널이 "할 수 있는" 것이 무엇인지도 보여줍니다.
이것은 다음과 같은 아이디어를 제안합니다.핵심"설계 유형은 UNIX 표준이나 UNIX 유사 운영 체제를 정의하는 것이 아닙니다. 이는 많은 UNIX 유사 운영 체제가 모놀리식 커널이나 마이크로커널을 가질 수 있다는 사실로 입증됩니다. 모놀리식은 UNIX의 고전적인 설계 유형입니다. 실제로 , 순수 UNIX에서도 HPUX는 단일 커널을 사용하는 반면 AIX는 마이크로커널을 사용합니다.토론디자인은 Unix 계보나 정체성이 아니라 성능에 관한 것입니다. 반면, UNIX/UNIX 계열 운영 체제에서는 소프트웨어 제공, 파일 시스템 처리 등에 대한 전통적인 개념적 접근 방식이 있습니다.
나는 그러한 고려 사항이 귀하의 질문의 운영 체제 부분에 맥락을 추가할 것이라고 믿습니다.