Research UNIX

Research UNIX는 1969년 미국 벨 연구소에서 시작된 UNIX의 원본 연구용 운영체제 계보이다. 켄 톰프슨과 데니스 리치를 중심으로 개발됐으며 처음에는 DEC PDP-7의 어셈블리어로 구현됐다. 이후 PDP-11로 이식되고 1973년에 커널 대부분이 C로 다시 작성되면서 다른...

분류UNIX 원본 연구용 운영체제 계보
개발 기관Bell Labs의 Computing Science Research Center
주요 개발자켄 톰프슨, 데니스 리치, 더글러스 매킬로이 등
개발 시작1969년
초기 하드웨어DEC PDP-7, 이후 PDP-11
초기 작성 언어PDP-7·PDP-11 어셈블리어
커널의 C 재작성1973년 Research UNIX V4
기준 판본제1판~제10판 UNIX Programmer's Manual
연구용 판본V1 · V2 · V3 · V4 · V5 · V6 · V7 · V8 · V9 · V10
커널 구조당시의 모놀리식 커널, 시분할·다중 사용자
공통 인터페이스파일 디스크립터, 프로세스, 셸, 파이프
코드 파생Berkeley Software Distribution, System V, UNIX/32V 등
배포Bell System 내부 및 대학·연구기관, 판본별 계약 상이
개발 상태역사적 연구 계보
소스 보존The Unix Heritage Society의 Unix Archive·Unix Tree
아카이브TUHS Unix Tree

Research UNIX는 1969년 미국 벨 연구소에서 시작된 UNIX의 원본 연구용 운영체제 계보이다. 켄 톰프슨과 데니스 리치를 중심으로 개발됐으며 처음에는 DEC PDP-7의 어셈블리어로 구현됐다. 이후 PDP-11로 이식되고 1973년에 커널 대부분이 C로 다시 작성되면서 다른 컴퓨터로 이식할 수 있는 시스템 소프트웨어의 모델을 확립했다. 초기에는 Bell System 내부의 문서 처리와 개발 환경에 사용됐으나 소스가 대학·연구기관에 공급되면서 UNIX 파생 운영체제의 공통 조상이 됐다.[1][2]

Research UNIX에서 말하는 판(Edition)은 대체로 《UNIX Programmer's Manual》의 발행판을 기준으로 구분한다. 제1판의 1971년 자료부터 제10판의 1989년 자료까지 여러 세대가 존재하지만 일반적인 현대 운영체제의 정기 버전 정책과 같은 방식으로 개발된 것은 아니다. V1·V4·V6·V7은 기술적 전환점이 뚜렷하며, V2·V3·V5 및 후기 V8~V10도 각자의 매뉴얼과 소스 보존 자료로 구분된다. 판 번호와 현재 입수할 수 있는 소스 묶음, 실제 당시 배포한 설치 매체는 일치하지 않을 수 있다.[3]

Research UNIX와 UNIX System V는 같은 문서명이 아니다. Research UNIX는 벨 연구소의 연구용 판본을 가리키고, System V는 AT&T의 상용 UNIX 계열에 속한다. BSD는 처음에 Research UNIX에 설치하는 확장 배포판이었지만 3BSD·4BSD를 거치며 커널과 네트워크 스택·파일 시스템을 포함하는 별도의 운영체제 계통으로 성장했다. System V와 BSD는 이후 서로의 기술을 통합하기도 했으므로 단일한 선형 분기 관계만으로 실제 코드 전체의 이동을 표현할 수는 없다.[4]

초기 Research UNIX는 현대의 POSIX 인증이나 공식 UNIX 상표 프로그램보다 먼저 존재한 시스템이다. 따라서 1970년대의 판본을 오늘날의 POSIX·Single UNIX Specification에 의해 인증받은 운영체제라고 설명하면 시대가 뒤섞인다. 반대로 최신 Linux·MINIX처럼 UNIX의 시스템 인터페이스를 독립적으로 구현한 시스템은 Research UNIX 원본 커널의 직접적인 소스 파생판이 아니다.

개발의 시작

1969년 Bell Labs가 Multics 공동 개발에서 철수한 뒤 톰프슨은 사용되지 않던 PDP-7에서 대화형 작업 환경을 만들었다. 초창기 소프트웨어는 Space Travel 게임을 실행하는 데 필요한 그래픽스·연산 프로그램과 파일 시스템에서 출발했으나, 이후 셸·에디터·어셈블러·프로세스 실행 기능이 결합되면서 하나의 운영체제로 형성됐다. PDP-7 UNIX는 Research UNIX V1보다 앞선 원형으로 간주해야 하며 '1971년 제1판이 최초 코드의 시작'이라는 설명은 정확하지 않다.[5]

특허 부서의 문서 처리 수요는 PDP-11/20 확보와 UNIX의 실제 업무 적용에 연결됐다. 초창기 시스템에는 ed 편집기·roff 문서 조판 도구·파일 조작 명령과 계층형 파일 시스템·프로세스 생성 인터페이스가 존재했고, 이 기능들을 조합하는 명령줄 작업 환경이 발전했다. 소수 개발자가 전체 운영체제를 파악하고 수정할 수 있을 정도로 시스템 규모가 작았다는 점도 당대의 대형 시분할 운영체제와 달랐다.[6]

연구용 판본의 발전

1971년 11월의 제1판은 PDP-11용 파일 시스템·프로세스·셸·텍스트 처리 도구를 갖춘 기준 판본이다. V2는 주로 PDP-11/20의 사용자 명령·초기 C 컴파일러를 발전시켰으며, V3 시기에 PDP-11/45 기반의 발전과 파이프 기능이 등장했다. 제4판(1973년)은 핵심 커널을 C로 재작성한 첫 판본으로 널리 알려져 있다. 'V3에서 C가 등장했다'와 'V4에서 C로 본격 재작성됐다'는 구분을 유지해야 한다.[7]

1975년의 제6판은 외부 대학과 연구기관으로 소스가 널리 확산된 대표 판본이며 초기 BSD 확장의 기반이 됐다. 제7판(1979년)은 Bourne shell·UUCP, 새로운 C 라이브러리와 다양한 유틸리티를 포함해 현대 UNIX의 사용자 공간을 이루는 중요한 기초가 됐다. 제7판의 코드 계열에서 VAX 이식인 UNIX/32V가 나오고, 이식·개조 작업이 System III·System V와 3BSD 등으로 이어졌다.[8]

후기 V8·V9·V10은 초기 판본의 단순 유지보수판이라기보다 Bell Labs 내부 연구를 위한 새로운 기술 실험을 포함했다. 특히 V8은 4.1cBSD 등 BSD 소스를 바탕으로 재구성되어 네트워크·스트림과 분산 시스템 연구가 이어졌다. 따라서 후기 연구판을 V7에서 코드 한 줄도 달라지지 않은 직접 복제판으로 취급해서는 안 된다. 다만 후기 판본은 V6·V7처럼 광범위하게 외부에 배포된 공통 상용 플랫폼은 아니었다.[9]

시스템 구조

Research UNIX의 실행 모델은 커널과 사용자 공간을 나누는 구조를 중심으로 한다. 커널은 프로세스 관리·파일 시스템·입출력과 장치 제어를 수행하고, 셸·편집기·컴파일러와 명령어는 사용자 프로그램으로 실행된다. 하나의 계층형 파일 경로 안에 일반 파일·디렉터리와 장치 파일을 표현하는 전통은 UNIX의 중요한 특징이다. fork로 프로세스를 복제하고 이후 실행 인터페이스로 다른 프로그램을 시작하는 방식은 명령줄 도구의 조합을 가능하게 했다.

텍스트 도구와 프로세스의 표준 입력·출력, 그리고 1970년대 초 도입된 파이프는 한 프로그램의 출력을 다른 프로그램의 입력으로 직접 연결하는 실행 모델을 형성했다. 이러한 인터페이스는 C 언어의 이식성 및 비교적 작은 시스템 호출 집합과 결합하여 UNIX 소프트웨어가 다른 컴퓨터로 이동하기 쉽도록 했다. 다만 초기 메모리 관리·프로세스 실행과 장치 드라이버는 컴퓨터 구조에 강하게 의존했고, 현대의 가상 메모리·스레드·네트워크 기능을 모든 초기 판본에 소급할 수는 없다.[10]

구현 언어와 이식성

PDP-7과 첫 PDP-11 시스템은 어셈블리어로 작성됐으며, 언어 개발과 커널 구현은 병행하여 진행됐다. 톰프슨의 B 언어와 리치의 C 언어가 발전한 뒤 커널의 대부분이 C로 옮겨졌다. 남아 있는 저수준 인터럽트·문맥 전환 코드는 CPU 전용 어셈블리어를 사용했다. 이 전환은 단일 바이너리가 CPU 사이에서 그대로 작동한다는 뜻이 아니라, 소스를 다른 아키텍처용 컴파일러로 번역하고 기계 의존 부분을 다시 구현하는 소스 수준의 이식성을 뜻한다.[11]

이후 UNIX/32V와 Interdata 이식 작업은 VAX·Interdata 등의 새로운 프로세서에서 UNIX를 실행하는 계기를 마련했다. 이식 과정에서는 워드 크기·주소 지정·장치 제어와 컴파일러·ABI의 차이를 해결해야 했으며, 시스템 호출과 표준 C 라이브러리의 인터페이스를 안정적으로 유지하는 일이 중요했다. Research UNIX의 소스 기반 배포는 이러한 개선 사항이 대학·기업에서 연구되는 기반이 됐다.[12]

배포·라이선스와 보존

초기 UNIX는 Bell Labs 내부의 연구 시스템으로 출발했다. 이후 AT&T·Western Electric의 계약에 따라 대학과 연구기관·상업 고객에게 판본별 라이선스가 제공됐으며, 소스 코드가 함께 배포됐다고 해서 당시 UNIX가 현대의 BSD·GPL 등 공개 라이선스로 배포된 것은 아니다. 특히 당시에는 소스 사용·공개와 재배포에 계약상 제한이 존재했다.

현대의 연구자는 The Unix Heritage Society의 Unix Archive·Unix Tree, 1970년대 매뉴얼과 복원된 컴퓨터 에뮬레이터를 통해 초기 UNIX의 구조를 조사할 수 있다. 소스 보존 자료 가운데는 일부 누락되거나 후대에 수작업으로 복원된 코드도 있으므로 특정 리포지터리의 파일 묶음을 역사적인 원본 릴리스의 완전한 복제라고 단정해서는 안 된다.[13][14]

영향

Research UNIX에서 발전한 파일·프로세스·셸·파이프 모델과 C 프로그래밍 환경은 BSD·System V, 이후 상용 UNIX, POSIX 표준과 여러 독립 구현 Unix-like 운영체제에 영향을 미쳤다. 각 후손은 독자적인 커널 구조와 네트워크·파일 시스템을 발전시켰지만 초기 UNIX의 소프트웨어 조합과 프로그램 인터페이스는 계속 중요한 공통 기반으로 남았다.

  1. Computer History Museum: 초기 UNIX 원본 코드 ↩
  2. Dennis Ritchie: Evolution of the Unix Time-sharing System ↩
  3. The Unix Heritage Society: Unix Tree ↩
  4. The Open Group: UNIX 역사 ↩
  5. Computer History Museum: PDP-7 소스 기록 ↩
  6. The Open Group: 1971년 First Edition ↩
  7. The Unix Heritage Society: 판본별 매뉴얼·소스 ↩
  8. The Open Group: UNIX 주요 버전의 역사 ↩
  9. TUHS: Eighth~Tenth Edition 자료 ↩
  10. Dennis Ritchie: UNIX의 발전사 ↩
  11. Dennis Ritchie: The Development of the C Language ↩
  12. The Unix Heritage Society: 연구판·초기 이식판 목록 ↩
  13. TUHS: Unix Tree ↩
  14. Computer History Museum: 초기 UNIX 소스 보존 ↩