운영체제: 설계와 구현을 읽다

  • 운영체제: 설계와 구현

그가 리눅스 개발의 길로 접어들게 만든 구체적인 사건을 들라면, 1990년 여름에 구입한 책을 지목해야 한다. "운영체제: 설계와 구현(Operating Systems: Design and Implementation)"이라는 이 책은 네덜란드에서 컴퓨터 과학 교수를 하고 있던 미국 출신의 앤드루 S. 타넨바움이 1987년에 펴낸 책이었다. 토르발스에 따르면 그 책은 그에게 "유닉스 뒤에 숨은 철학과 함께, 강력하고 깔끔하고 아름다운 운영체제가 무슨 일을 할 수 있는지"를 보여주었고 그의 인생을 바꿨으며 "훌쩍 성장하게 만들었다"고 한다. 1

  • 토발즈의 인생에 막대한 영향을 미친 책

나의 삶에 중대한 영향을 미친 책은 앤드류 타넨바움의 "운영체제: 디자인 및 실행"이었다.
나는 이미 가을 학기에 수강할 과목들을 신청한 상태였다. 그 중 내가 특히 고대한 수업은 C 언어 및 유닉스 운영체제 수업이었다. 한 발 먼저 시작하고 싶다는 바람에서 나는 가을 학기가 시작되기도 전에 미리 교재, 즉 앤드류 타넨바움의 "운영체제: 디자인 및 실행"을 구입했다. 그 책에서 암스테르담에 있는 한 대학교의 교수, 앤드류 타넨바움은 유닉스를 위해 그가 만든 운영체제, 미닉스를 거론했다. 미닉스는 한 마디로 유닉스 축소 복제품이었다. 그 책의 서문을 읽고, 유닉스 이면에 자리한 철학을, 그 운영체제가 얼마나 강력하고, 간결하고, 아름다운지를 깨달은 나는 유닉스를 사용할 수 있는 컴퓨터를 사기로 결심했다. 2

  • 그 해 여름

그 해 여름 나는 단 두 가지 일만 했다. '아무것도 하지 않는다.'와 '719 페이지 분량의 "운영체제: 디자인 및 실행"을 읽는다.' 이 두 가지 말이다. 그러므로 여름 내내 붉은색의 부드러운 커버가 달린 그 텍스트는 내 침대 곁을 떠날 줄 몰랐다. 3

토발즈의 배경

  • 심지어 그는 학부도 졸업하지 않은 상태였다.

여러 가지 점에서 보았을 때 토르발스가 버클리나 GNU 진영에 속한 노장 유닉스 해커들을 피해서 커널을 만들어 냈다는 점은 놀랍지 않다. 지리적으로 그리고 기술적으로 토르발스는 앞선 프로그래머 세대들과는 아주 다른 세상에서 자랐다. 오래된 프로그래밍 쟁점들을 새로운 방식으로 생각하게 된 데에는 그의 배경이 도움이 되었다.
토르발스의 경험 중 한 가지 중요한 요소는 그가 리눅스 커널 작업을 시작할 즈음에 스톨먼이나 BSD 개발자 같은 프로그래머들과는 대조적으로 컴퓨터 과학 연구 학계와의 접촉이 거의 없었다는 점이다. 그는 1996년이 되어서야 컴퓨터 과학 석사 학위를 끝낼 수 있었다. 그가 1991년 여름에 리눅스를 세상에 선보였을 때 심지어 그는 아직 학부도 졸업하지 않은 상태였다.
GNU를 시작했을 때 이미 세계 정상의 기술 분야 대학교에서 프로그래머로 일한 경험이 거의 10년에 달했던 스톨먼과 비교해 보면 토르발스의 차이점은 충격적이다. 4

  • 토발즈에게 없었던 것들.

하지만 미닉스 터미널 에뮬레이터를 몇 달 사이에 완전한 커널로 변모시킨 토르발스의 능력은 대단한 업적이다. 토르발스가 혼자서 커널을 작성한 최초의 프로그래머는 아니지만 그보다 앞서 이런 일을 했던 이들은 전문 개발자이거나 컴퓨터 과학과 교수들이었다. 그에 비해서 토르발스는 리눅스가 처음 모습을 드러냈을 때 아직 대학교도 일 년을 채우지 않은 상태였다. 게다가 앞에 언급한 사람들은 토르발스가 접근하지 못한 많은 자원을 가졌다. 강력한 하드웨어, 복잡한 디버깅 도구, 생각을 나눌 수 있는 현장 동료들이 토르발스에게는 없었다. 오히려 토르발스는 헬싱키에 있는 그의 아파트에서 저가 386 컴퓨터로 작업을 시작했다. 그리고 사용한 코딩 도구들도 미닉스에 포함되어 있던 것뿐이었다. 많은 GNU 유틸리티들이 들어 있기는 했지만 벨 연구소, MIT, 버클리와 같은 기관에서 쓰던 광범위한 소프트웨어 자원과는 견줄 수 없었다. 이런 측면에서 보면 완전하게 동작하는 커널을 만들어낸 토르발스의 능력은 진정 놀랄 만하다. 다음 장에서 설명하겠지만, 2000년대 초에 마이크로소프트의 자금 지원을 받은 일부 연구자들은 토르발스가 혼자서 그 커널을 만들어내기란 불가능하다고 주장하며 토르발스가 리눅스 코드를 다른 것에서 베껴왔을 것이라고 비난할 정도였다. 5

왜 어셈블리어로 터미널 에뮬레이터를 만들었는가?

리눅스 커널의 처음은 미닉스를 위한 터미널 에뮬레이터를 작성하려는 노력에서 시작되었다. 앞에서 언급했듯이 타넨바움의 미닉스에는 이런 종류의 프로그램이 들어 있지 않아서 토르발스는 집에 있는 컴퓨터로 대학교의 유닉스 서버에 원격 접속할 수가 없었다. 터미널 에뮬레이터를 직접 작성하기 위해서 토르발스는 386 프로세서의 로우 레벨 기능까지 파고들어야만 했다. 열심히 하기는 했지만 작업은 지루했다. 그런데 토르발스에게 이 일은 기대 이상의 효과를 가져왔다. 왜냐하면 터미널 에뮬레이터를 만드는 작업은 그가 가지고 있던 컴퓨터의 하드웨어를 샅샅이 탐색하게 해 주었기 때문이다. 그는 어셈블리어로 에뮬레이터를 작성했다. 고급 프로그래밍 언어를 쓰는 것보다 훨씬 더 복잡한 방법이었지만 "그저 CPU에 관해서 공부하고 싶은 목적으로" 그렇게 했다. 6

Linux 라는 이름을 붙인 사람은 Ari Lemke

내가 만든 운영체제를 FTP 사이트에 올릴 수 있도록 배려해 준 아리 렘케는 '프릭스(Freax)'라는 이름을 마음에 들어하지 않았다. 그러므로 그는 나의 운영체제를 '오픈OS/Linux' 라는 이름으로 배포하길 원했다. 그 문제를 놓고 내가 그와 큰 다툼을 벌인 적은 없었다. 하지만 분명한 것은 운영체제에 리눅스라는 이름을 붙인 사람은 내가 아니라 그였다는 점이다. 그러므로 나는 내가 자기 본위적인 사람이 아니라는 사실을 전하고 싶다. 물론 내가 리눅스라는 이름을 좋아했던 것은 사실이다. 7

참고문헌

  • 프리-오픈소스 소프트웨어 혁명의 역사 / 크리스토퍼 토찌 저/이재범 역 / 지식함지 / 초판 1쇄 2019년 12월 12일
  • 리눅스 그냥 재미로 / 리누스 토발즈 저 / 안진환 역 / 한겨레신문사 / 1쇄 발행 2001년 4월 20일

주석

  1. 프리-오픈소스 소프트웨어 혁명의 역사. 3장. 142쪽. 

  2. 그냥 재미로. 2부. 92쪽. 

  3. 그냥 재미로. 2부. 94쪽. 

  4. 프리-오픈소스 소프트웨어 혁명의 역사. 3장. 138쪽. 

  5. 프리-오픈소스 소프트웨어 혁명의 역사. 3장. 160쪽. 

  6. 프리-오픈소스 소프트웨어 혁명의 역사. 3장. 152쪽. 

  7. 그냥 재미로. 2부. 141쪽.