운영 체제를 "유닉스처럼"만드는 이유는 무엇입니까?


20

많은 웹 사이트에서 "유닉스와 같은"이라는 용어를 자주 사용합니다.

표준은 없습니다. 그것은 행동하는 방식입니다.

그러나 처음부터 커널을 개발한다면 "유닉스와 같은"것으로 간주되는 것은 무엇입니까?

기본적으로 유닉스처럼 코드를 작성하는 것은 무엇입니까?


답변:


15

표준은 없습니다. 그것은 행동하는 방식입니다.

필자는 대부분의 "유닉스와 같은"OS가 POSIX 표준 을 준수하기 위해 매우 진지한 노력을 기울이고 있다고 생각합니다. POSIX 표준 은 Open Group이 감독 하고 "UNIX UNIX"를 정의하는 단일 UNIX 사양 도 제어합니다 . 전자는 후자의 핵심입니다.

실제로 유닉스 계열 운영 체제 의 실용성을 정의하는 표준이 있습니다. POSIX에 대한 wikipedia 기사의 끝 부분에서 "완전"및 "주로"호환 OS 목록을 살펴보십시오.

Linux 가 특히 SUS (Single Unix Specification)에 의해 완전히 호환되거나 인증 가능한 것으로 간주되지 않는 몇 가지 명백한 이유 가 있지만, 주어진 Linux 시스템이 반드시 호환되지 않기 때문은 아닙니다. Wikipedia 기사는 다음과 같이 사양을 요약합니다.

SUSv3는 총 3700 페이지이며 주제별로 4 개의 주요 부분으로 나뉩니다.

기본 정의 (XBD) -규격에 사용 된 정의 및 규칙 목록과 호환 시스템에서 제공해야하는 C 헤더 파일 목록입니다. 총 84 개의 헤더 파일이 제공됩니다.

쉘 및 유틸리티 (XCU) -유틸리티 목록 및 쉘에 대한 설명, sh. 총 160 개의 유틸리티가 지정되었습니다.

시스템 인터페이스 (XSH) -시스템 호출 또는 라이브러리 함수로 구현되는 다양한 기능의 스펙이 포함되어 있습니다. 총 1123 개의 시스템 인터페이스가 지정됩니다.

이론적 근거 (XRAT) -표준에 대한 설명.

표준 사용자 명령 행 및 스크립팅 인터페이스는 POSIX 쉘로 Korn 쉘의 초기 버전을 기반으로 한 Bourne 쉘의 확장입니다.

다른 사용자 수준 프로그램, 서비스 및 유틸리티에는 awk, echo, ed, vi 및 기타 수백 가지가 포함됩니다. 필요한 프로그램 수준 서비스에는 기본 I / O (파일, 터미널 및 네트워크) 서비스가 포함됩니다.

테스트 스위트는 표준과 함께 제공됩니다. 이를 PCTS 또는 POSIX Certification Test Suite라고합니다.

또한 SUS에는 372 개의 기능과 3 개의 헤더 파일을 지정하는 CURSES (XCURSES) 사양이 포함되어 있습니다. 대체로 SUSv3은 1742 개의 인터페이스를 지정합니다.

이것은 분명히 리눅스 커널의 일부가 아닌 많은 userland 구성 요소 (예 : 셸)를 나타냅니다. 따라서 linux.org 등의 방법은 없습니다. 알. 커널 단독 인증을받을 수 있습니다. 이런 의미에서, 그것은 운영 체제가 아닙니다. 물론 커널을 사용하여 특정 시스템을 인증하려고 시도 할 수는 있지만 일반적인 배포 계획에 비추어 볼 때 의미가 없습니다. 커널과 커널을 유지하는 사람들은 Userland Core (GNU)를 유지하는 사람들과 독립적입니다. 실제 조립 된 OS 배포판 (Debian, Fedora 등)을 유지하는 사람들과 독립적 인 사람.

Debian 또는 Fedora 자체가 인증 프로세스에 참여할 수 있다고 가정합니다 (예를 들어 RedHat Enterprise가 "인증 된 유닉스"가 될 수 있음). 그러나 이것이 실제로 바람직하다는 의문을 제기합니다. SUS 시스템의 주된 이유는 리눅스 틈새가 아닌 소프트웨어로 작성된 (상업적 규모, 비 소비자) 소프트웨어를 실행하는 것으로 추정됩니다. 시스템에서 실행하려는 추가 소프트웨어에 대해 라이센스 당 수십 또는 수십만 달러를 지불하고 있기 때문입니다. 반면에 리눅스와 다른 이상 점들은 상업적 목적을위한 단순한 준수를 넘어서 디자인 목표를 추구해 왔으며, 이에 대한 다양한 예가있다.http://en.wikipedia.org/wiki/STREAMS ) :

STREAMS는 Single UNIX Specification 버전 1 (UNIX 95) 및 2 (UNIX 98)를 준수하는 데 필요하지만 BSD 및 Linux 개발자가 STREAMS를 제공하지 않아 POSIX에 대한 선택 사항으로 표시되었습니다. 버전 3 (UNIX 03)의 Austin 그룹에서 준수

SUS와 The Open Group! = linux,! = BSD 등의 요점을 강조하는 흥미로운 숙소.


2
인증을받는 것은 준수하는 것과 다릅니다. 예를 들어, Linux Foundation이 비용과 개발 속도로 인해 각 커널 버전을 인증받는 것은 비현실적입니다. 그러나 이것이 커널 (커널)이 완전히 또는 대부분 준수하지 않는다는 것을 의미하지는 않습니다.
strugee

2
@strugee POSIX 표준은 커널에 적용되지 않거나 커널에 관심이 없습니다. 표준화 된 것은 명령 (shell, ls, cat, ...)과 API (libc가 제공하는 것, 스레드)입니다. Linux 기반 배포판 Unix를 만드는 것은 대부분 GNU 구성 요소 (명령 및 glibc)입니다. 커널이 인증 / 규정 준수 범위를 벗어납니다.
jlliagre

1
반박하지 말고 분명히 밝히십시오 (일루미나의 답변에 대한 나의 의견에서 이것을 반복하고 있습니다) : 표준은 "무엇", 커널은 "어떻게"입니다. 나는 표준의 비트들과 조각들을 읽었지만, 그것들이 전혀 "커널"을 참조하지 않는다고 생각합니다 ( "시스템"일뿐입니다). 따라서 WRT 인증 및 규정 준수 : "방법"이 아니라 커널 / OS의 "기능"입니다.
goldilocks

3
@strugee 단일 Unix 사양은 사용자 인터페이스에 적용됩니다. 커널은 물론 관련이 있지만 커널 인증을받는 Linux Foundation에 대한 귀하의 의견에 대한 의견입니다. 커널을 인증 할 수 없으며 인증 프로세스와 상호 작용하는 모든 구성 요소가 없습니다. 인증 될 수있는 (또는 가능한 한 최소한 준수하려고 시도한) 것은 운영 체제, 즉 일반적으로 Linux 커뮤니티에서 배포라고합니다.
jlliagre

2
@strugee 그러나 그 이유는 가능한 빠른 롤오버가 아니라 호환되지 않는 변경 사항이 추가되지 않는다는 약속이 없다는 것입니다. 예를 들어, Solaris 10은 호환되며이 호환성을 보장하며 Unix03 인증 이후 12 가지 업데이트가있었습니다. 또한, Gnu / Linux 조합은 가능한 / 원하지 않는 수준에서 호환되도록 노력합니다. 값 비싼 프로세스이기 때문에 (거의) 인증을 시도하지 않았으며 일부 요구 사항이 누락되어 (확실히) 일부 확장 기능이 호환되지 않아 어쨌든 준수하지 않을 것입니다.
확실히

12

POSIX에 대한 첫 번째 답변을 확장하려면 "유닉스와 같은"의 의미를 이해하려면 먼저 UNIX가 정확히 무엇인지 이해해야합니다. 로부터 문서를 보면 오픈 그룹 , 당신은 찾을 수 유닉스 상표권을 소유 자세한 정보] 단일 유닉스 규격 의에게 '진화 - 여기 UNIX03 :

UNIX 03 제품 표준은 단일 UNIX 사양 버전 3을 준수하는 시스템의 마크입니다. UNIX 98 제품 표준의 크게 향상된 버전입니다. 필수 개선 사항에는 ISO / IEC 9989 : 1999 C 프로그래밍 언어, IEEE Std 1003.1-2001 및 ISO / IEC 9945 : 2002와의 정렬이 포함됩니다. 이 제품 표준에는 국제화 된 시스템 호출 및 라이브러리 확장 V3, 명령 및 유틸리티 V4, C 언어 V2 및 국제화 된 터미널 인터페이스와 같은 필수 제품 표준이 포함됩니다.

UNIX98 :

UNIX 98 제품 표준은 UNIX 95 제품 표준의 크게 향상된 버전입니다. 필수 개선 사항에는 (1) 스레드 인터페이스, (2) MSE (Multibyte Support Extension), (3) 대용량 파일 지원, (4) 동적 연결, (5) 하드웨어 데이터 길이 종속성 또는 제한 사항 제거를위한 변경 사항 및 (6) ) 2000 년 변경. 또한 소프트웨어 관리 기능 및 실시간 지원을위한 일련의 API 옵션이 추가로 제공됩니다. 이 제품 표준에는 다음과 같은 필수 제품 표준이 포함됩니다. 국제화 된 시스템 호출 및 라이브러리 확장 V2, 명령 및 유틸리티 V3, C 언어, 전송 서비스 (XTI) V2, 소켓 V2 및 국제화 된 터미널 인터페이스. 또한 소프트웨어 관리 제품 표준을 준수 할 수도 있습니다.

UNIX95 (내 강조) :

이 제품 표준은 제공되는 기능 외에도 UNIX 운영 체제 코드 및 / 또는 AT & T 에서 처음 개발 한 인터페이스 에서 파생 된 운영 체제 클래스 중 하나를 위해 원래 개발 된 광범위한 응용 프로그램을 지원하기위한 통합 플랫폼을 정의합니다. 기본 제품 표준에 따라 기본보다 범위가 넓습니다. 이 제품 표준에는 다음과 같은 제품 표준이 포함됩니다. 국제 시스템 호출 및 라이브러리 확장, 명령 및 유틸리티 V2, C 언어, 전송 서비스 (XTI), 소켓 및 국제 터미널 인터페이스.

표준의 서버 버전 은 경우에 따라 인터넷 서버와 IPv6을 추가합니다.

물론 AT & T Bell Laboratories에 대한 참조를 볼 수 있으며 C 언어는 UNIX의 핵심 요소입니다. C 언어, 모듈 식 기본 도구 및 셸 및 커널, 파일 시스템 및 기타 주요 OS 구성 요소의 설계 및 구현 방법 .

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

그 곳이 책입니다 바로이 시점에서 Maurice J. Bach 의 유닉스 운영 체제 디자인 (The Design of the UNIX Operating System) 은이 시점에서 역사적 문제이기 때문에 귀중한 독서가되었습니다. 물론 이것이 C 언어와 같은 다른 발명 과 어떻게 관련이 있는지는 주목할 만하다 . C는 AT & T Bell에 의해 개발되어 다른 하드웨어에서 이식 가능한 빠른 언어로 Unix를 구현할 수있게되었으며 많은 POSIX는 표준 C의 확장입니다.

커널 자체에 관한 한, 유닉스 커널이 전통적으로 무엇인지 설명하기 위해 다음과 같은 개념적 다이어그램을 찾을 수 있습니다.

여기에 이미지 설명을 입력하십시오

다음은 UNIX System V 커널의 기초를 설명하는 Mr Bach의 고전 서적 (1986)에서 발췌 한 내용입니다.

그러나 그것들은 [애플리케이션 서브 시스템 및 프로그램] 모두 궁극적으로 커널이 제공하는 하위 레벨 서비스를 사용하며 일련의 시스템 호출을 통해 해당 서비스를 이용할 수 있습니다. System V에는 약 64 개의 시스템 호출이 있으며 그 중 32 개 미만이 자주 사용됩니다. 그들은 사용하기 쉽지만 사용자에게 많은 힘을 제공하는 간단한 옵션을 가지고 있습니다. 시스템 호출과이를 구현하는 내부 알고리즘은 커널의 본문을 형성한다.

[...] 두 가지 주요 구성 요소는 파일 하위 시스템과 프로세스 하위 시스템입니다.

파일은 파일 시스템으로 구성되며 논리 시스템으로 취급됩니다. 디스크와 같은 물리적 장치에는 여러 논리 장치 (파일 시스템)가 포함될 수 있습니다. 각 파일 시스템에는 파일 시스템의 구조와 내용을 설명하는 수퍼 블록이 있으며 파일 시스템의 각 파일은 파일의 속성을 제공하는 inode로 설명됩니다. 파일을 조작하는 시스템 호출은 inode를 통해 수행됩니다. [그리고 버퍼 풀]

[...] 두 가지 버전의 inode가 있습니다. 파일을 사용하지 않을 때 inode 정보를 저장하는 디스크 사본과 활성 파일에 대한 정보를 기록하는 코어 내 사본입니다.

UNIX 시스템에서 사용자 프로세스 실행은 사용자와 커널의 두 가지 수준으로 나뉩니다. 프로세스가 시스템 호출을 실행하면 프로세스의 실행 모드가 사용자 모드 에서 커널 모드로 변경 됩니다 . 운영 체제가 실행되고 사용자 요청을 서비스하려고 시도합니다 ...]

[...] UNIX 시스템의 철학은 사용자가보다 복잡한 프로그램을 빌드하기위한 빌딩 블록으로 사용될 수있는 작은 모듈 식 프로그램을 작성할 수있게하는 운영 체제 기본 요소를 제공하는 것입니다. 쉘 사용자에게 표시되는 이러한 기본 요소 중 하나는 I / O재지 정하는 기능 입니다.

[...] 커널은 시스템 호출 서비스 외에도 사용자 커뮤니티를위한 일반적인 부기 관리, 프로세스 스케줄링 제어, 메인 메모리의 프로세스 저장 및 보호 관리, 인터럽트 필드 화, 파일 및 장치 관리 및 시스템 오류 관리 정황.

유닉스 계열 운영 체제에서 다양한 커널 구현에 관심이있는 경우 FreeBSD 구현 (4.4BSD) 또는 Mach 커널을 보거나 이러한 기능을 비교할 수도 있습니다.

UNIX 디자인에 대해 더 많이 알수록 UNIX의 조상과 그 역사 에 대한 다음 다이어그램에서 발생한 일을 더 잘 이해하게 됩니다. 바흐는 자신의 저서에서 주로 System V에 대해 이야기하고 있지만 BSD에 대해서도 이야기합니다.

여기에 이미지 설명을 입력하십시오

거기에 눈에 보이는 것보다이 더 정말이. 예를 들어, Mac OSX는 UNIX03 인증을 받았지만 순수한 UNIX (주로 빨간색)에 연결되어 있습니까?

여기에 이미지 설명을 입력하십시오

위에서 BSD, GNU, Microsoft 및 다양한 개인이이 우주에 어떻게 기여했는지 볼 수 있습니다. 비록 GNU와 궁극적으로 리눅스가 유닉스와 직접적으로 연계되어 있지는 않지만, GNU 는 오픈 소스 세계에서 상용 UNIX의 도구와 소프트웨어를 다시 엔지니어링하려는 노력을하고 있음을 알 수 있습니다. 따라서 GNU 유지 관리 소프트웨어를 살펴보면 초기 프로토 타입 앱 및 라이브러리에 대한 아이디어를 얻을 수 있습니다.

라이센싱 전쟁 은 유닉스의 진화 (때로는 정체)에서 중요한 역할을했습니다. 라이센스 유형에 따라 UNIX가 정렬되어 있음을 즉시 알 수 있습니다. close는 vs. BSD ( BSD는 코드를 닫은 소스로 만들 수 있습니다 ... OSX 참조) 및 Linux와 GNU는 카피 레프트 세계에서 보완 할 수있는 GPL 입니다. 다음은 Linus Torvalds가 처음 개발 한 Linux 커널의 고전적인 맵입니다. 여기에는 Unix와 유사한 운영 체제에서 커널이 "할 수있는"기능이 포함되어 있습니다.

여기에 이미지 설명을 입력하십시오

이것은 " 커널 "디자인 유형이 UNIX 표준을 구성하는 것이 아니며 유닉스 계열 OS를 정의하는 것이 아니라는 것을 암시 합니다. 이것은 많은 유닉스 계열 OS가 모 놀리 식 커널 또는 마이크로 커널을 가질 수 있다는 사실에 의해 입증됩니다. 모 놀리 식은 UNIX의 전형적인 디자인 유형이었습니다. 실제로, 순수 UNIX에서도 HPUX에는 단일 커널이 있으며 AIX는 마이크로 커널을 사용합니다. 디자인에 대한 이 토론 은 성능에 관한 것이며 유닉스 조상이나 정체성과 관련이 없습니다. 다른 한편으로, 유닉스 / 유닉스와 같은 운영 체제 하에서 파일 시스템 등을 다루는 소프트웨어에 서비스를 제공하는 전통적인 개념적 접근 방식이있다.

이러한 고려 사항이 귀하의 질문의 OS 부분에 컨텍스트를 추가 할 것이라고 생각합니다.


3
+1 여기에 몇 가지 좋은 점이 있습니다. 1) C와 Unix의 관계에 대해 (추가 : C는 AT & T Bell이 개발했지만 다른 하드웨어에서 이식 가능하지만 다른 하드웨어에서 이식 가능한 언어와 많은 POSIX로 Unix를 구현하기 위해 개발했습니다. 표준 C의 확장입니다.) 2) 커널 디자인은 표준과 무관합니다. 표준은 "무엇"이고, 커널은 "어떻게"입니다.
goldilocks

1
@ goldilocks 감사합니다, 나는 C 동사에 대한 귀하의 의견을 추가했습니다. 커널 고려 사항이 표준과 관련이 없음을 분명히하려고 노력했습니다. 이 질문은 유닉스와 같은 커널에 대해 구체적인 것이 있지만 아직 존재하지 않는다고 가정합니다. 반면에 역사적으로 최초의 유닉스 커널은 그런 식으로 있었을 것입니다. 내 이해는 제한적이지만 70 년대 이후 하드웨어가 많이 바뀌었기 때문에 커널이 많이 바뀌 었다고 가정합니다. 분명한 것은 커널이 유닉스 / 유닉스 계열을 정의하지 않는다는 것입니다. 리눅스 커널이 GNU / 리눅스 또는 리눅스를 명확하게 정의한다고 생각했습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.