Research UNIX V7

Research UNIX V7은 Bell Labs가 1979년 발표한 Research UNIX 제7판(Seventh Edition UNIX)이다. Research UNIX V6에서 프로그램·라이브러리·커널과 도구 체계를 광범위하게 발전시킨 판본으로, Bourne shell, C 표준 입...

공식 판본Seventh Edition UNIX
약칭V7 UNIX, UNIX Version 7
분류Research UNIX 제7판 연구용 운영체제
개발 기관Bell Labs
발행 시기1979년 1월
초기 대상DEC PDP-11, 여러 후속 이식
구현 언어C·어셈블리어
주요 셸Bourne shell
대표 유틸리티awk, make, sed, tar, uucp 등
개발 도구C 컴파일러·pcc·lex·lint·f77 등
하위 판본Research UNIX V6
후기 판본Research UNIX V8
직접 이식UNIX/32V(VAX)
후속 코드 계보System III·System V, BSD 관련 분기
주요 사료TUHS Unix Tree: Seventh Edition

Research UNIX V7은 Bell Labs가 1979년 발표한 Research UNIX 제7판(Seventh Edition UNIX)이다. Research UNIX V6에서 프로그램·라이브러리·커널과 도구 체계를 광범위하게 발전시킨 판본으로, Bourne shell, C 표준 입출력 라이브러리, awk·make·sed·tar·uucp 등의 여러 기능이 대표적이다. V7은 이후 UNIX System III·System V·UNIX/32V와 여러 BSD 개발의 역사에서 중요한 공통 기반이다.[1][2]

V7의 역사적 중요성은 단순히 판번호가 바뀐 데 있지 않다. 사용자 공간의 명령과 셸·개발 도구가 크게 확충되면서 시스템 프로그래밍과 명령줄 자동화를 위한 공통 환경이 성숙했다. 다만 V7의 모든 기능이 모든 상용 UNIX에 한 번에 그대로 이식된 것은 아니며, 후손들은 V7 코드를 기반으로 서로 다른 네트워크·파일 시스템·하드웨어 지원과 시스템 관리 체계를 추가했다.

당시의 UNIX는 PDP-11 등 제한적인 물리 메모리와 장치 환경을 대상으로 했지만 C 언어 기반 구현은 새로운 프로세서와 시스템에 대한 이식성을 높였다. VAX를 대상으로 UNIX/32V라는 후속 이식판이 등장했고 버클리에서는 32V와 기존 BSD 기술을 결합해 3BSD를 발전시켰다. 한편 Bell Labs의 후속 V8~V10은 연구용 UNIX를 계속 개선했지만 V7과 다른 BSD 코드의 합류도 포함했다.[3]

개발 배경

V6를 대학과 연구기관에서 사용하면서 운영체제 내부 기능과 사용자 공간 도구를 개선할 요구가 커졌다. Bell Labs는 C 컴파일러·라이브러리와 텍스트 처리 도구, 파일 시스템 및 프로세스 기능을 확장했고 이를 제7판으로 문서화했다. V7은 공식 UNIX 인증 프로그램이 출범하기 이전의 시스템이므로 후대 UNIX 95·UNIX 03 인증과 혼동해서는 안 된다.

V7 계열에서는 Bell Labs 내부에서 발전한 프로그램과 PWB/UNIX 등 다른 연구·업무용 UNIX의 도구가 일부 합류했다. 이는 'UNIX V7에 포함된 모든 유틸리티가 오직 한 개발자가 한 번에 발명한 것'이라는 식으로 설명하면 안 되는 이유이기도 하다.[4]

셸과 사용자 공간

Bourne shell(sh)은 명령 호출과 입출력 재지정·파이프를 처리하고 스크립트에서 변수·조건문·반복문을 사용할 수 있도록 했다. 초기 UNIX 셸과 달리 명령 언어로서의 표현력과 프로그램 자동화 구조가 개선됐으며 이후 POSIX 셸의 중요한 선행 모델이 됐다. 다만 POSIX 표준의 모든 현대 확장이 V7의 원래 Bourne shell에서 그대로 지원된 것은 아니다.

텍스트·문서·데이터 처리 명령의 확장은 작은 프로그램을 파이프로 연결하는 UNIX 실행 모델을 강화했다. awk는 패턴과 필드 기반 텍스트 처리를, sed는 스트림 편집을, make는 프로그램 빌드의 종속성과 명령 실행을, tar는 파일 묶음의 보관을, uucp는 기계 간 파일·명령 교환을 지원했다. 당시 도구들의 기능·옵션은 현대 GNU·BSD 구현과 다를 수 있다.[5]

프로그램과 C 환경

V7에는 C 컴파일러와 새 라이브러리·헤더, pcc 컴파일러와 소스 분석·어휘 분석 도구 등 개발자 환경이 포함됐다. C 함수·파일·프로세스 인터페이스는 컴파일러를 바꿔 소프트웨어를 다른 CPU로 가져가는 작업에 도움을 줬다. 그러나 C로 작성된 소스의 이식성과 동일 실행 파일이 서로 다른 CPU에서 실행된다는 바이너리 호환성은 구분해야 한다.

커널은 파일·프로세스·메모리와 장치 처리 기능을 제공하며 사용자 프로그램은 시스템 호출과 라이브러리를 통해 접근한다. 프로세스 간의 파이프와 파일 디스크립터, 권한 기반 다중 사용자 환경의 기본 구조가 유지됐다. 네트워크와 프로세서별 드라이버는 후손의 플랫폼과 추가 소프트웨어에 따라 달라진다.[6]

UNIX/32V와 BSD·System V

UNIX/32V는 V7의 주요 코드를 VAX 32비트 컴퓨터로 이식한 판본으로, 버클리의 3BSD 개발에 중요한 출발점을 제공했다. 32V를 기반으로 작성된 BSD 시스템은 가상 메모리와 프로세스·파일 시스템 기술을 확대하면서 연구용 UNIX와 다른 분기로 발전했다. 여기서 소스 코드를 함께 사용하거나 합류하는 사례가 있었으므로 한 가지 나무의 간선만으로 모든 파일의 계승을 설명할 수는 없다.[7]

AT&T의 상용 UNIX 조직에서 발전한 System III·System V도 V7 등 연구용 UNIX의 코드·인터페이스를 기반으로 구성됐다. 후대 System V Release 4는 BSD와 SunOS 등 여러 계열의 기술을 다시 통합했다. V7의 영향은 특정 후손 운영체제 이름보다 C·셸·파일 및 프로세스 인터페이스가 여러 제품군의 공통 기초가 됐다는 점에서 중요하다.[8]

라이선스와 역사 자료

V7은 당대 AT&T 라이선스에 따라 외부 기관에 소스와 매뉴얼이 공급됐다. 소스를 읽고 수정할 수 있었더라도 오늘날의 오픈 소스 라이선스와 같지 않으며 재배포에 별도 계약이 적용될 수 있었다. 현재 보존된 아카이브와 복원 이미지는 과거 판본의 코드를 연구하는 데 유용하지만 실제 배포 매체·특정 기관의 개조판·보존 시점의 변경 사항을 구분해야 한다.

The Unix Heritage Society의 소스 트리에는 V7과 이후 연구용·상용 UNIX 변형의 파일·문서 관계를 비교할 수 있는 자료가 있다. UNIX 계통의 복잡한 연결을 이해할 때 매뉴얼의 판 번호뿐 아니라 소스 코드 및 이식 기기·기능별 변경 내용도 확인할 필요가 있다.[9]

  1. The Open Group: Seventh Edition ↩
  2. TUHS Unix Tree: Seventh Edition ↩
  3. The Unix Heritage Society: Research Unix·32V ↩
  4. UNIX History Research V7: 도구 목록 ↩
  5. TUHS: V7 명령어 아카이브 ↩
  6. The Open Group: UNIX V7 역사 ↩
  7. TUHS: V7·32V 및 BSD 자료 ↩
  8. The Open Group: System V 계보 ↩
  9. TUHS Unix Tree ↩