Research UNIX V4

Research UNIX V4는 Bell Labs에서 개발한 Research UNIX의 제4판(1973년 11월)으로, 커널의 대부분을 C로 작성한 최초의 UNIX 판본이라는 점에서 이전 V1~V3와 뚜렷하게 구별된다. 초기 UNIX는 PDP-7과 PDP-11에서 어셈블리어로 구현됐으며...

공식 판본Fourth Edition UNIX
분류Research UNIX의 제4판 연구용 운영체제
개발 기관Bell Labs
주요 개발자켄 톰프슨, 데니스 리치 등
판본 기준1973년 11월 매뉴얼 제4판
주요 대상DEC PDP-11
기술 전환커널 대부분을 C로 재작성
초기 언어 계보PDP-11 어셈블리어와 B·C 언어
중요 기능시분할·프로세스·파일·파이프
전신Research UNIX V3
후속 판본Research UNIX V5
후속 주요 판본Research UNIX V6
소스 보존Unix Archive의 V4 스냅샷, 앞선 nsys 커널 자료
사료TUHS: Fourth Edition UNIX

Research UNIX V4는 Bell Labs에서 개발한 Research UNIX의 제4판(1973년 11월)으로, 커널의 대부분을 C로 작성한 최초의 UNIX 판본이라는 점에서 이전 V1~V3와 뚜렷하게 구별된다. 초기 UNIX는 PDP-7과 PDP-11에서 어셈블리어로 구현됐으며, C의 확립과 함께 커널을 고수준 언어로 옮기는 작업이 진행됐다. 이 변화는 다른 프로세서로 UNIX를 이식하는 장기적인 기술적 기반을 마련했다.[1][2]

제4판의 C 재작성이 UNIX를 처음으로 만든 사건은 아니다. 최초의 시스템은 1969년 PDP-7에서 개발됐고, 1971년 Research UNIX V1은 PDP-11 어셈블리어 기반으로 업무에 사용됐다. 제3판 시기에는 C 컴파일러와 파이프가 등장했으며, 제4판에서는 운영체제 내부 코드의 언어가 본격적으로 C로 전환됐다. 따라서 'C 컴파일러의 최초 등장'과 '커널의 C 재작성'은 별개의 시점이다.[3]

C로 작성된 커널도 완전히 하드웨어 독립적인 것은 아니었다. 인터럽트·문맥 전환과 일부 장치 제어는 여전히 PDP-11의 명령어·메모리 구조를 직접 다루어야 했다. 다만 시스템 기능의 상당 부분을 CPU별 어셈블리어가 아닌 C 코드로 표현하면서 UNIX는 코드 검토·유지보수와 새로운 기계로의 포팅이 가능한 구조에 가까워졌다.

C 언어로의 전환

톰프슨의 B 언어는 BCPL의 영향을 받았으며, 리치는 PDP-11의 바이트 주소 지정과 자료형·포인터 기능에 대응하는 언어를 발전시켜 C를 만들었다. 초기 C 컴파일러와 UNIX 커널은 상호 영향을 주며 변화했다. 시스템 코드에 필요한 구조체·문자와 포인터 연산을 고수준 언어에서 표현할 수 있게 된 점은 전체 커널을 작성하는 방법을 바꾸는 계기가 됐다.[4]

TUHS의 보존 자료에는 1973년 제4판에 가까운 nsys 커널 스냅샷이 포함된다. 이 자료는 실제 제4판보다 조금 앞선 상태의 C 커널로 설명되며 당시의 개발 과정을 추적하는 데 중요하다. 보존된 nsys가 제4판의 완전한 최종 코드와 일치하는 것은 아니고, 특히 파이프 도입 여부와 자료의 시점에 차이가 있다.[5]

커널과 시스템 호출

제4판의 커널은 프로세스와 메모리·파일 시스템, 장치 입출력 및 시스템 호출을 처리한다. 사용자 공간에는 셸과 컴파일러·편집기·파일 명령이 존재하며, 시스템 호출을 통해 커널의 기능을 요청한다. 초기 UNIX 특유의 파일 디스크립터와 계층형 파일 시스템·프로세스 생성 인터페이스가 유지됐다. 당시 메모리 관리와 드라이버 제약은 후대의 V6·V7 및 현대 UNIX와 같지 않다.

파이프는 한 프로세스의 출력을 다른 프로세스의 입력으로 연결하는 기능으로, 텍스트 처리 도구들을 셸에서 조합하는 기반이 됐다. 리치의 역사 기록은 1973년 파이프 도입이 기존 명령의 동작을 바꾸고 UNIX 사용 방식을 확장했다고 설명한다. 단일한 대규모 프로그램 대신 작은 도구를 연결하는 방식은 오늘날까지 이어지는 UNIX 설계의 대표적인 특징이다.[6]

이식성과 후속 개발

제4판은 C를 통해 커널의 기계 의존 부분을 축소했지만 실제 새로운 CPU로 이식하려면 시작 코드·인터럽트·장치 드라이버와 컴파일러·링커를 별도로 준비해야 했다. 따라서 소스 코드의 이식성과 바이너리 호환성은 구별한다. 후속 V5·V6에서 구현·라이브러리와 시스템 도구가 계속 개선되고, V7 이후 UNIX/32V·BSD·System V 계통으로 발전했다.

제4판은 당시의 대학·기업 고객에게 널리 공급된 V6와 달리 주로 Bell Labs 내부의 연구·개발 시점을 보여주는 판본이다. 원본 자료는 전통적인 AT&T 라이선스에서 관리됐고 현대 공개 아카이브에 올라온 소스·매뉴얼을 이용할 때도 배포 당시의 권리와 보존 목적을 구분해야 한다.

  1. TUHS: Fourth Edition UNIX ↩
  2. The Open Group: 1973년 제4판 ↩
  3. Dennis Ritchie: Evolution of UNIX ↩
  4. Dennis Ritchie: The Development of the C Language ↩
  5. TUHS: Fourth Edition 및 nsys 기록 ↩
  6. Dennis Ritchie: 파이프와 입출력 흐름 ↩