Research UNIX V2

Research UNIX V2는 Bell Labs가 1972년 6월에 정리한 Research UNIX 제2판으로, Second Edition UNIX라는 명칭과 《UNIX Programmer's Manual》 제2판을 기준으로 구분된다. Research UNIX V1에서 발전한 독립적인...

정식 명칭Second Edition UNIX
분류Research UNIX의 제2판
개발 기관Bell Labs
주요 개발자켄 톰프슨, 데니스 리치 등
판본 기준1972년 6월
기반 하드웨어DEC PDP-11/20
커널 구현PDP-11 어셈블리어
개발 언어초기 C 컴파일러 및 어셈블리어
대표 특징추가 명령·시스템 호출, C 언어 도입 초기
기록 매뉴얼1972년 6월 12일 제2판 《UNIX Programmer's Manual》
소스 보존 상태컴파일러·일부 명령·라이브러리 단편
기술 문서TUHS Unix Tree: V2
전신Research UNIX V1
후속 판본Research UNIX V3
상태역사적 연구용 UNIX 판본

Research UNIX V2는 Bell Labs가 1972년 6월에 정리한 Research UNIX 제2판으로, Second Edition UNIX라는 명칭과 《UNIX Programmer's Manual》 제2판을 기준으로 구분된다. Research UNIX V1에서 발전한 독립적인 판본으로, DEC PDP-11/20에서 계층형 파일 시스템·시분할 프로세스·셸과 사용자 도구를 제공했다. 새로운 명령과 시스템 호출이 추가됐으며 당시 진행 중이던 C 언어 구현의 흔적이 남아 있다는 점에서 초기 UNIX 발전을 이해하는 중요한 자료다.[1][2]

제2판은 1969년 PDP-7에서 만든 UNIX를 처음부터 새로 개발한 운영체제가 아니다. UNIX는 1970~1971년 PDP-11/20으로 이식됐고 Research UNIX V1에서 셸·편집기·프로세스 제어가 문서화됐다. V2는 이 실행 환경을 보완하면서, 시스템 프로그램과 명령어를 계속 추가해 Bell Labs 내부 사용자들이 실제 문서 처리와 개발 업무를 수행하도록 했다. 매뉴얼 제2판은 1972년 6월 12일에 해당하며, 판 번호는 현대 제품의 의미에서 단순한 패치 레벨이 아니라 당시에 문서화된 시스템 상태의 구분이다.[3]

커널은 아직 C로 전면 재작성되지 않았다. UNIX V2의 주요 커널 부분은 PDP-11 어셈블리어 기반이었고, C 컴파일러와 C 라이브러리는 언어 개발 및 사용자 공간 프로그램에 활용되기 시작했다. TUHS에 보존된 V2/c와 V2/lib 자료에는 당시의 작동 가능한 초기 C 컴파일러·라이브러리 관련 코드가 있고, V2/cmd에는 일부 명령의 복원 소스가 있다. 이것을 근거로 V2 전체 커널이 이미 C였다고 기술하는 것은 잘못이다.[4]

프로세스와 파일 시스템은 현대 UNIX에서 친숙한 많은 개념을 이미 보여준다. 사용자 프로그램은 파일을 열고 읽거나 쓰며 셸에서 명령을 실행하지만, 당시 CPU·메모리 한계 때문에 완성된 가상 메모리·네트워크 계층을 갖춘 후대 운영체제처럼 동작한 것은 아니다. 제2판에 사용된 셸은 Bourne shell 이전의 명령 해석기였고, 파이프 기능의 본격적인 도입은 후속 Research UNIX V3 시대에 해당한다. V2에 현대 UNIX의 모든 인터페이스나 명령 옵션을 소급해서 설명해서는 안 된다.[5]

현대에 접근할 수 있는 V2 자료는 완전한 당시 배포 디스크가 아닌 일부 복원 코드·라이브러리와 매뉴얼이다. 원본 저장 매체에서 읽어낸 단편, 개발자가 보존한 테이프 자료 및 종이 기록이 서로 다른 출처에서 모였다. 연구자는 보존 소스의 날짜와 판본을 대조해 실제 당시의 구현 상태를 추정해야 한다. 정식 라이선스가 당시 연구소 내부 UNIX를 현대의 자유 소프트웨어로 만든 것은 아니며, 소스의 보존·재현과 역사적인 배포권은 서로 다른 문제다.[6]

V2의 다음 판은 1973년 2월의 Research UNIX V3다. 제3판은 PDP-11/45에 맞춘 변화와 파이프 등 프로그램 조합 기능을 갖췄고, 그 다음 Research UNIX V4는 1973년 후반 커널을 C로 재작성한 첫 판본이다. V2는 어셈블리어 기반 UNIX의 실무적 발전과 C 기반 운영체제로 넘어가는 과도기를 연결한다.

개발 배경과 UNIX 제2판

V2의 기준이 되는 제2판 매뉴얼은 1972년 6월 12일 작성됐다. UNIX가 PDP-7에서 PDP-11/20으로 옮겨간 뒤 특허 부서의 문서 편집 업무와 연구소 내부 개발을 처리하며 빠르게 확장하던 시기다. 매뉴얼은 명령어·시스템 호출·라이브러리·장치 파일·파일 형식 등으로 구성됐고, 제1판에 비해 도구와 설명이 늘어났다. 제2판 매뉴얼에는 운영체제 전반의 변경 사항을 소개하는 서문도 추가됐다.[7]

초기 C 언어와 컴파일러

이 시대의 C는 1989년 ANSI C나 오늘날의 ISO C와 같은 언어가 아니었다. UNIX 개발진은 B를 바탕으로 PDP-11의 바이트 단위 데이터와 자료형을 다루기 쉽게 하는 언어를 발전시키고 있었다. V2용으로 보존된 C 컴파일러와 관련 라이브러리 소스는 UNIX와 C가 함께 진화했다는 구체적인 증거다. 컴파일러의 존재와 OS 커널의 구현 언어는 서로 다른 문제이므로 제2판 커널을 C로 작성된 것으로 오해해서는 안 된다.[8][9]

커널·프로세스·파일 시스템

V2는 제한된 PDP-11/20 하드웨어 위에서 프로세스의 실행과 종료, 저장 장치로의 입출력, 파일 경로와 디렉터리 탐색을 제공했다. 사용자 프로그램이 커널의 기능을 시스템 호출로 요청하는 구조와 셸을 통한 명령 실행은 훗날의 UNIX에서도 이어진다. 다만 장치 드라이버·프로세스 스케줄링과 기억장치 관리의 세부 구현은 당시 컴퓨터의 작은 메모리와 하드웨어 보호 기능의 한계를 반영했다. 후대 VAX용 가상 메모리나 BSD 네트워킹을 V2의 원래 기능으로 기재해서는 안 된다.

명령어와 사용자 환경

개발자는 셸에서 파일을 편집하고 프로그램을 컴파일하거나 어셈블하여 실행했다. ed와 조판 도구는 Bell Labs의 문서 처리 업무에 직접 연결됐으며 파일·계정과 명령 실행 도구도 확대됐다. 매뉴얼을 터미널에서 참조하는 man 명령이 제2판에 나타나는 등, 시스템에서 스스로 사용법을 확인하고 개발하는 문화가 자리 잡기 시작했다. 그러나 grep, 현대 awk, Bourne shell과 같이 후대에 정착한 프로그램이 처음부터 모두 포함됐던 것은 아니다.[10]

매뉴얼과 소스 보존

TUHS의 V2 소스 트리에는 c·cmd·lib 디렉터리가 남아 있지만 완전한 당시 시스템 디스크 이미지 전체를 의미하지 않는다. 일부 명령 코드는 남아 있던 자기 테이프와 파일 단편을 바탕으로 복원됐고 C 컴파일러와 라이브러리 자료는 별도의 보존 경로를 거쳐 수집됐다. 1972년의 명령과 커널 기능을 설명할 때에는 매뉴얼에 기록된 설명과 실제 남아 있는 소스, 후대 재구현을 구별하는 것이 중요하다.[11]

후속 판본과 영향

Research UNIX V3는 다음 판본으로, PDP-11/45에 대응하고 프로세스 간 파이프와 초기 C 컴파일러를 발전시킨 시기를 나타낸다. Research UNIX V4는 이어서 커널 대부분을 C로 재작성한 첫 정식판으로 기록된다. 따라서 V2는 완성된 C 커널이 아니라 UNIX식 파일·프로세스 모델과 C 언어 개발이 만나는 초기 단계라는 데 의미가 있다.

  1. TUHS: Second Edition UNIX ↩
  2. TUHS: Research UNIX 판본과 시기 ↩
  3. TUHS Research Manuals: First and Second Editions ↩
  4. TUHS Unix Tree: V2의 C·lib·cmd 파일 ↩
  5. Dennis Ritchie: The Evolution of the Unix Time-sharing System ↩
  6. TUHS: Second Edition 소스 보존 설명 ↩
  7. TUHS: 제1·2판 매뉴얼의 구성 ↩
  8. TUHS: V2의 초기 C 컴파일러 ↩
  9. Dennis Ritchie: C 언어의 발전 ↩
  10. TUHS: Research UNIX 제2판 매뉴얼 ↩
  11. TUHS Unix Tree: V2 유물 ↩