리뷰 - 유닉스의 탄생 - 세상을 바꾼 운영체제를 만든 천재들의 숨은 이야기

Share

Last Updated on 10월 1, 2023 by Jade(정현호)

 

유닉스의 탄생

세상을 바꾼 운영체제를 만든 천재들의 숨은 이야기

서적 정보

원제 : Unix: A History and a Memoir
출판사 : 한빛미디어
저자명 : 브라이언 커니핸
역자명 : 하성창
출간일 : 2020년 08월 03일
ISBN13 : 9791162243282
ISBN10 : 1162243287
    


안녕하세요
이번에 리뷰해볼 책은 유닉스의 탄생 입니다.

저는 아주 예전부터 유닉스(Unix)를 좋아했고, 예전에는 더 많이 사용도 했고 오라클 데이터베이스 테스트 환경 구성도 유닉스로 했던 적도 많이 있었습니다.

지금은 오라클로 인수된 썬 마이크로시스템즈 라는 회사도 좋아했고, 일반 PC(x86-64)에 설치 가능한 여러 유닉스 중에서 썬 마이크로시스템즈의 Solaris를 좋아했기도 하고 가장 오래 많이 사용하기도 했었습니다. 

여담으로 썬 마이크로시스템즈의 유닉스는 SUNOS 와 Solaris 2개로 구분되는데 이 책 "유닉스의 탄생" 에서도 설명되는 내용으로 SUNOS 는 BSD(Berkeley Software Distribution) 계열의 유닉스이고, Solaris 는 책 배경이 되는 AT&T의 벨 연구소에서 만든 Unix System V 계열입니다. 

썬 마이크로시스템즈에서는 초기에 BSD 기반으로 SUNOS 를 개발하여 사용하였으며 SUNOS 1.0 버전 부터 4.1.4 버전 까지를 지칭하며, 그 이후로 5.0 버전부터는 Unix System V 의 Release 4를 기반으로 제작되면서 Solaris 라는 이름으로 리브랜딩 되게 됩니다.


이 책은 유닉스를 처음 개발한 AT&T 벨 연구소에서 근무한 브라이언 커니핸이 지필한 AT&T 벨 연구소, 연구소에서 유닉스를 또는 유닉스와 관련된 일은 한 다양한 인물들 그리고 그와 관련된 개발언어, 도구 등에 대한 역사적인 부분에 대한 내용과 회고 내용이 담겨 있는 책입니다.

저자 브라이언 커니핸은 벨 연구소에서 30년간 근무하면서 유닉스 개발에 참여하였고, AWK,AMPL 개발에 참여하였으며 그 외 문서 조판용 도구나 유닉스에서 사용되는 도구 등을 개발하였습니다. 그리고 C언에 초기에 유닉스 핵심 개발자 중 한명인 데니스 리치와 공동 지필 한 The C Programming Language(1978) 을 비롯한 여러 책을 지필 하기도 하였습니다.

이 책은 크게 4 부분으로 나눠볼 수 있습니다. 

  • 첫 번째는 벨 연구소에 관한 내용과 저자 브라이언 커니핸이 벨 연구소에 들어오게 된 계기와 스토리
  • 두 번째는 2장 부터 3장까지 유닉스 개발 초기의 유닉스에 관한 내용과 C언어 탄생에 관한 내용
  • 세 번째는 4장 부터 5장까지 초기 유닉스에서 완성적인 유닉스로 발돋움하게 되는 유닉스 6판 과 7판의 내용과 6판 7판에서 포함되어 있는 많은 유틸리티 도구 및 개발 언어
  • 네 번째 6장~9장까지는 대학교와 벨 연구소 밖으로 뻗어 나가는 유니스와 유닉스 간의 새로운 계열의 탄생, AT&T 와 벨 연구소의 변화, 유닉스의 후손 그리고 플랜 9 등의 내용

                        


벨 연구소

하나의 정책, 하나의 시스템, 범용적인 서비스
- AT&T의 사명(Mission) 선언, 1970년

유닉스가 어떻게 만들어졌는지를 이해하려면 벨 연구소 알아야 한다고 책 도입부에 기술되어 있으며, 그만큼 이 책은 큰 키워드는 유닉스 이외에도 벨 연구소 그리고 AT&T 등이 있습니다.

AT&T(American Telephone & Telegraph Company)는 미국 전역에서 많은 지역 전화 회사를 합병하면서 생겨나게 되었고, 운영 초기부터 전국적인 전화 시스템을 제공하려고 노력하면서 맞닥뜨린 과학적, 공학적 문제를 체계적으로 다룰 연구 기관이 필요하다는 것을 깨닫게 되었다고 합니다.

이러한 이유로 연구 개발 자회사인 벨 전화 연구소가 1925년도에 만들어졌습니다. 처음에는 뉴욕시 웨스트가 463번지에 있었지만 2차 세계대전이 발발하면서 뉴저지 머리 힐(Murray Hill) 로 옮기게 되고, 1966년에는 웨스트가를 완전히 떠나서 대부분이 뉴저지 머리 힐 벨 연구소에서 근무하였다고 합니다. 1960년대 머리 힐에는 직원이 3천 명이었고 그중 1천 명 이상이 물리학, 화학, 수학 및 다양한 공학 기술 분야를 전공한 박사 인력이었다고 합니다.

벨 연구소는 세상을 바꾼 과학적, 기술적 진보를 많이 이끌어 냈으며, 그 중 가장 유명한 업적은 트랜지스터 발명이며, 발명한 공로로 1956년에 노벨 물리학상을 받았다고 하며, 받은 노벨상 9개 중 하나였다고 합니다.

1960년대부터 1980년대 까지 벨 연구소(주로 머리 힐)의 연구 부서에는 약 3천 명의 연구원이 있었고, 연구 결과를 활용하여 벨 시스템을 위한 장비와 시스템을 설계하는 개발 그룹에는 1만5천~2만5천명 가량이 근무 하였다고 합니다.

이렇게 많은 직원이 일하는데 이러한 필요한 자금은 AT&T는 미국 대부분의 지역에 전화 서비스를 제공했으므로 사실상 독점이었지만, 전화 서비스를 제공하는 것과 직접 관련이 없는 사업에 진출하는 허용하지 않는다는 제약이 있었습니다.

AT&T는 물리적 거리나 수익성과 무관하게 모든 사용자에게 서비스(사명 선언에 따른 '범용적인 서비스')를 제공할 의무가 있었고, 그 대신에 그에 대한 보상이 안정적이고 예측 가능한 수익률을 보장받았고, 이러한 수익의 일부를 벨 연구소에 투자를 할 수 있었다고 합니다.

수익의 약 2.8%를 연구 개발에 투자했고, 약 0.3%는 기초 연구에 투자를 하였으며 수십년간 이러한 방식 덕분에 전화 시스템이 꾸준히 발전했고 기초 과학 분야에서도 많은 발견이 이루어졌다고 합니다. 이러한 안정적인 지원 덕분에 벨 연구소는 자유롭게 탐구와 연구를 할 수 있는 환경이었다고 설명하고 있습니다.

책의 저자 브라이언 커니핸은 1967년 인턴으로 시작해서 2000년에 퇴직하였으며, 퇴직할 때까지 머리 힐 벨 연구소의 빌딩 2에서 30년 넘게 지냈습니다. 그 오랜 세월 동안 복도 건너편의 이웃으로 켄 톰프슨, 데니스 리치, 로버트 모리스, 조 오산나, 제라드 홀즈먼 등 벨 연구소 그리고 유닉스에 기여한 수많은 사람과 함께 근무하였다고 합니다.
                 


유닉스 프로토타입과 제 1판 그리고 C언어

어느 순간 저는 3주 더 작업하면 운영체제가 만들어지리라는 걸 깨달았습니다.
 - 켄 톰프슨, 미 동부 빈티지 컴퓨터 축제 발표에서, 2019년 5월 4일


책을 크게 나눴을때 두번 째 내용으로 2장~3장에 관한 내용으로 유닉스의 탄생과 초기 개발에 대한 내용이 다루어지고 있습니다.

1960년대 초 당시에 가장 혁신적인 운영체제는 MIT에서 만든 CTS 였다고 합니다. 그 시대 대부분의 운영 체제는 '일괄 처리 방식' 이었다고 합니다. 즉 batch processing 이라는 것이지요.

프로그래머는 자신의 프로그램을 천공카드에 입력하고 그 다음 결과가 나올 때까지 몇시간부터 며칠을 기다려야 했고, 일괄 처리 방식이었기 때문에 하나의 자원이 계속 점유해서 사용하는 방식이었습니다.

CTSS는 타자기 처럼 생긴 텔레타이프 모델을 사용하였으며 CTSS는 로그인 된 사용자에 대한 처리를 나눠서 관리했고, 사용자 한 명에서 다음 사용자로 재빨리 프로세스를 전환함으로써 각 사용자가 컴퓨터 전체를 혼자서 마음대로 사용하는 착각이 들게 하였는데, 이 방식은 '시분할' 방식이라고 불렀습니다.

이런 CTSS가 너무나 생산적인 프로그래밍 환경이었기 때문에 MIT에서는 훨씬 더 나은 버전을 만들기로 하였고 1964년 멀틱스(Multics, Multiplexed Information and Computing Service) 라는 운영체제를 설계하기 시작했다고 합니다.

멀틱스는 대형 프로젝트가 될 예정으로 MIT 에서는 다른 두 조직에 개발 협력을 요청하였고 그 중 하나는 컴퓨터를 생산하던 제네럴 일렉트리(GE) 였고 또 하나가 벨 연구소였습니다.

멀틱스는 본질적으로 어려운 과제가 될 전망이었고 곧 문제를 맞닥뜨렸다고 합니다.
샘 모건은 멀틱스를 "너무 많은 나무에 한꺼번에 오르려는 시도" 라고 표현했다고 합니다. 게다가 조직 관리 측면에서도 미국 내 세 지역이 떨어져 있어서 프로젝트에 문제가 생길 가능성이 어느정도 예측도 되었다고 합니다.

벨 연구소는 1966년부터 1969년까지 대여섯 명 이상의 연구원을 멀틱스 개발에 참여하였으며, 더글러스 매클로이, 데니스 리치, 켄 톰프슨, 피터 노이만이 포함 되어있었다고 합니다. 

벨 연구소가 멀틱스 프로젝트에서 빠져나왔을 때, 켄 톰프슨은 여전히 운영체제를 개발하고 싶었지만 벨 연구소의 경영진은 멀틱스의 경험 때문에 또 다른 운영체제 프로젝트를 위한 하드웨어 구매나 지원에 대해서 관심이 없었다고 합니다.

이때 쯤 켄 톰프슨은 사용되지 않은 DEC PDP-7을 발견하였고, PDP-7에는 특이한 주변기기가 있었는데 세로로 아주 긴 드라이브 였다고 합니다. 디스크의 작동 속도가 그 컴퓨터에 비해 너무 빨랐기 때문에 이 문제를 해결하고자 켄은 디스크 스케줄링 알고리즘을 작성하게 됩니다.

그런데 문제는 이 알고리즘을 어떻게 실험할 것인가? 였다고 합니다. 시험을 하려면 디스크에 데이터를 적재해야 했고, 켄은 디스크에 대량의 데이터를 넣을 프로그램이 필요하다고 결정하게 되었다고 합니다.

어느 순간 저는 3주 더 작업하면 운영체제가 만들어지리라는걸 깨달았습니다.


켄은 세 가지 프로그램을 한 주에 하나씩 개발하였습니다. 코드를 작성하기 위한 편집기, 코드를 PDP-7에서 실행 가능한 기계어로 변환하기 위한 어셈블러, 마지막으로 커널 오버레이였고 켄은 커널 오버레이를 운영체제라고 불렀다고 합니다.

이렇게 해서 만들어지게 된 것이 유닉스의 시초이며 첫 번째 버전은 1969년 중후반이라고 합니다.

이렇게 개발된 시스템은 대형 중앙 집중식 컴퓨터보다 더 재미있고 생산적이라는 것을 알게 된 사람들로부터 인기를 끌기 시작했고 더 많은 사용자를 지원하고 더 흥미로운 연구를 할 수 있게 해줄 더 나은 컴퓨터를 구하려고 노력을 시작하였다고 합니다.
다만 문제는 새로운 컴퓨터를 구매하는 게 쉽지는 않았다고 합니다.(금전적 지원관련)

그 당시 벨 연구소에서는 평균적으로 거의 후라에 하나씩 특허권을 승인받았다고 하며, 특허출원서는 텍스트 문서였지만 장마다 행 별로 번호를 매기는등의 형식상 엄격한 요구사항이 있었다고 합니다. 다만 기존의 컴퓨터 중에서 이런 요구 사항을 처리할 수 있는 기종이 없었다고 합니다.

이때 조 오산나가 방법을 제시하게 되는데요 특허 부서는 특허출원서를 작성하는데 PDP-11을 사용하고, 유닉스 개발팀이 특허 그룹에서 필요한 소프트웨어를 개발한다는 방법이었지요 이 방안은 경영진에게 남아있던 일말의 반대 의견조차 막을 수 있었다고 합니다.

조 오산나는 새로운 형식에 맞게 출력해주는 Nroff 라는 프로그램을 작성하였고, 이 프로그램을 이용해서 온종일 유닉스로 특허출원서를 작성하게 되었다고 합니다. 그래서 낮에는 특허 그룹에서 사용하고, 밤에는 켄, 데니스와 다른 팀원들이 PDP-11에서 소프트웨어를 개발하였다고 합니다.

이렇게 일한 결과 아주 성공적이어서 특허 부서가 유닉스 개발팀이 쓸 PDP-11을 한 대 더 구매해줬고, 덕분에 개발팀은 시간에 구애받지 않고 유닉스를 개발할 수 있게 되었다고 합니다. 이 버전이 유닉스 제 1판이 되었다고 합니다.

C 프로그래밍 언어는 1970년대 초에 만들어졌고 멀틱스 구현용 고수준 언어를 다뤘던 데니스의 경험을 바탕으로 개발되었습니다. C 언어가 등장하면서 운영체제 전체를 고수준언어로 작성할 수 있게 되었다고 하며 1973년에는 유닉스를 원래 어셈블리어 형태에서 C 언어로 바꿔서 작성하는 작업이 완료 되었다고 합니다.

이 덕분에 시스템 유지 보수는 물론 다양한 아키텍처 기반의 다른 컴퓨터로 이식(porting)이 가능 해졌다고 하고요 그럼 그전에는 그 어려운 어셈블리어로 작성 되어있었다는 놀라운 사실을 알 수 있는 부분입니다.
         


유닉스 6판 7판

1975년 5월에 나온 제 6판은 처음으로 벨 연구소 밖에서 의미 있게 활용된 버전으로, 세상에 중대한 영향을 끼쳤다고 합니다.

4장의 6판에 대한 내용은 6판에 관련 및 포함된 여러 개발 도구 및 언어에 대한 개발되는 내용과 그 도구에 대한 설명이 주를 이룹니다. 

파일 시스템, 시스템 호출, 쉘(Shell), 파이프(Pipe, |) , grep , 정규표현식, C언어 등 지금도 들어보고 사용하고 있는 도구와 언어가 이 때 유닉스와 같이 개발되었다고 합니다.
    

유닉스가 비로소 날개를 펴고 연구소라는 둥지를 벗어난 것은 제7판부터였습니다.
제 7판은 이식성 있는 첫 버전이었고, 무수히 다양한 하드웨어로 폭발적으로 퍼져나간 후계의 마지막 공통 조상이었습니다. 따라서 제 7판의 역사는 모든 유닉스 시스템의 공통 유산의 일부입니다."
 - 더글러스 맥클로이,1986년


유닉스 6판은 소프트웨어 개발을 위한 훌륭한 기반이 되었고 마련된 도구는 프로그래밍을 재미있고 생산적으로 할 수 있게 했다고 합니다. 제 7판은 6판보다 거의 4년 후인 1979년 1월에 발표 하였습니다.

유닉스와 이 5장의 주요 테마 중 하나는 영향력 있는 언어와 도구들이 전성기를 맞이하는 내용이 기술되어 있습니다.

5장 제 7판에서는 4장 유닉스 제 6판 과 유사하게 여러 도구나 언어에 대한 내용이 나오고 있습니다.

유닉스라는 운영체제 위에서 소프트웨어 개발과 운영체제를 더 잘 사용하기 위한 여러 내용이 나오고 있으며 그와 관련되어 여러 도구 와 언어에 대해서 소개하고 있습니다.

본쉘, Yacc,Lex, C언어 와 Make, 문서 생성과 관련한 Roff, Troff , 지금도 많이 사용하는 Sed, Awk 등의 내용이 있습니다.
지금도 많이 사용하는 도구들에 대한 개발 과정과 내용을 설명하고 있으므로 4장,5장에 대해서 읽어본다면 현재 사용하고 있는 운영체제의 명령어에 대해서도 더 이해하는데 도움이 될 것입니다.

아주 다양한 후계 유닉스 시스템의 공통 조상인 만큼 그 아주 잘 만들어졌고, 여러 노력이 있었음을 알 수 있는 부분입니다.
                 

유닉스와 벨 연구소 그리고 그 후손

마지막 부분인 6~9장은 유닉스가 대학교 및 기업으로 사용되면서 상업적으로 활용되는 과정과 그 당시 대학교용 라이선스에 관련된 내용 , 그 이후 BSD 계열의 유닉스 탄생과 관련 내용, 리눅스와 다른 후손들이 생겨나게 되었는지에 대한 과정의 내용이 담겨 있습니다.

1973년에 AT&T는 명목상의 수수료만 받고 대학교에 유닉스 라이선스를 주기 시작했으며, 라이선스 대부분은 1975년도에 이용 가능해진 제 6판용으로 부여되었다고 합니다.

라이선스를 취득한 단체 중 가장 적극적으로 활동한 곳은 캘리포니아 대학교 버클리(이하 UC 버클리)였고, UC 버클리에서는 여러 명의 대학원생이 시스템 코드에 중요한 아비지를 하였고, 결국 버클리 소프트웨어 배포판 BSD(Berkeley Software Distribution) 이 만들어지게 되었다고 합니다.

이 BSD는 원조 연구용 유닉스에서 발전한 두가지 주요 갈래중에 하나가 되게 되며, 나머지 하나는 AT&T가 주도로 개발한 Unix System V 입니다.

켄 톰프슨은 1975년~1976년에 UC 버클리에서 안식년을 보내면서 운영체제에 관한 과목을 가르쳤고 그 당시 대학원생이었던 빌 조이는 BSD의 개발에도 참여하였고, 프로그램 몇 개를 추가하게 되었는데 그 중에서 아직도 가장 유명한 것은 vi 편집기이며, 또 다른 유명한 프로그램으로 csh(C쉘)이 있습니다.

빌은 나중에 유닉스용 TCP/IP 네트워킹 인터페이스를 설계하였는데 이 인터페이스는 지금도 이용되고 있으며, 그 후에 빌 조이는 썬 마이크로시스템즈로 영입되면서 4명의 공동창업자중 한명이 되게 됩니다.


그리고 책에서는 그 이후 AT&T와 벨 연구소의 여러가지 다사다난한 일들과 정책과 시대 상황등에 따라서 진행된 기업 분할 그에 따른 벨 연구소의 분할과 기업 매각 등의 여러 내용도 많이 담겨 있으며, 다시 한번 더 도약하기 위해서 새로운 프로젝트에 대한 내용도 담겨져 있습니다.

저도 이 책을 보고 알게된 플랜 9 인데요 유닉스는 연구용 버전 제 10판이 1989년에 개발이 완료되었지만 외부로 배포는 되지 않았다고 합니다. 당시 유닉스는 이미 성숙한 상업적 시스템이었으며, 더는 운영체제 연구에 적합한 수단이 아니라는 인식이 있었다고 합니다.

그래서 켄 톰프슨, 롭 파이크, 데이브 프레스토, 하워드 트리키까지 적은 인원이 뭉쳐서 새로운 운영체제를 개발하기 시작했고 플랜 9 이라고 불렀다고 합니다. 유닉스에서 좋은 아이디어를 가져와서 더 발전시키려는 시도였다고 합니다.

1992년 대학교에서 이용할 수 있게 제공되었고 몇 년 후 상업적인 용도로 공식 발표되었지만 소수의 애호가 커뮤니티를 제외하고는 많이 사용되지 못했다고 합니다. 즉 여러가지 면에서 흥행하지 못했다는 것이지요

하지만 플랜 9은 시대를 뛰어넘은 중요한 한 가지 기술을 세상에 기여하였고 그것은 바로 유니크도(Unicode) 의 UTF-8 인코딩 이라고 합니다. 플랜 9 개발 과정에서 유니코드 문자집합 처리에 문제를 해결하고자 UTF-8이라는 기반의 유니코드의 가변 길이 인코딩 방식을 만들어내게 되었다고 합니다.

6~9장은 7판 이후의 유닉스와 그 후손, AT&T 그리고 벨 연구소에 대한 내용이 담겨 있으므로 꼭 읽어봐야 할 부분입니다.
       


이 책은 전문적인 프로그래밍이나 특정 기술적인 서적이 아닌 회고록 기반의 교양서적이면서, 한편으로는 우리가 지금도 사용하고 있는 수많은 언어 와 기술, 운영체제 등에 대해서 조금 더 역사적으로나 조금 더 기술적으로 알 수 있게 되는 계기가 될 수 있는 책이라고 생각 합니다. 

내용에 따라서 어느 부분은 관련 지식이 일부 필요할 수는 있으나 많은 부분에서 그런 부분도 쉽게 설명하고 있으며, 많은 내용이 인물 기반으로 회고 형태로 작성되고 있어 유닉스 개발과 관련된 여러 인물에 대한 역사적, 회고 내용이 주를 이루고 있습니다.

그러면서도 생각하는 되는 것은 이런 연구 분야(R&D)에 대한 지원 방향성과 투자에 따라서 그 결과가 발전하고 기여함을 알게 되었으며, 그 때의 벨 연구소에서 연구한 수많은 것이 지금도 여전히 잘 사용되는 것을 보았을 때 장기적인 측면에서의 연구 및 기초과학의 투자 등이 필요함을 다시 한번 느낍니다.

IT와 관련된 일을 하다 보면 필연적으로 듣게 되는 유닉스 또는 리눅스, 그리고 C 언어 등과 관련하여 어떤 계기로 탄생되게 되었고 그 과정이 어떻게 되었는지 등을 상세하게 회고하는 이 책에 대해서 한 번쯤은 읽어보는 것도 여러모로 도움이 될 것이라고 생각 합니다.

해당 리뷰는 책을 직접 구매 후 읽고 난 소감을 주관적으로 작성하였습니다.

                 

0
글에 대한 당신의 생각을 기다립니다. 댓글 의견 주세요!x