2004년 9월 1일 수요일

[기사]윈도우에 숨어 있는 VMS 기술 유전자






윈도우에 숨어 있는「VMS 기술 유전자」




안윤호 (아마추어 커널 해커)







2004/08/30










"윈도우 NT의 핵심 개발 인력들은 VMS에 관계했을 뿐만 아니라 VMS 개발자인 커틀러와도 같이 일한 적이 있다. 윈도우 NT 기술은 VMS와 막연하게 비슷할 것이라는 추측을 넘어 놀랄 만큼 흡사하다."(Russinovich)

아폴로 11호가 처음 달에 착륙했을 때 아폴로 계획의 총 책임자이던 베르너 폰 브라운 박사는 일약 영웅으로 부각됐다. 브라운 박사는 2차 대전 당시 런坪?공습하던 V2 로켓의 책임자이기도 했다. V2의 V는 ‘Vergeltungswaffe’라는 의미의 독일어로 ‘진보된 무기’를 뜻한다. 미국의 맨해튼 프로젝트의 목표가 핵무기의 개발이었다면, 독일은 로켓으로 적국을 초토화하는 것이 목표였다. 달에 착륙한 아폴로의 아키텍트는 런던에 수백 킬로미터 짜리 미사일을 퍼붓던 V2의 개발자와 같은 사람이었다.

독일이 전쟁에 패하자 미군은 서둘러 로켓연구소의 연구진들을 미국으로 데려왔으며 이들은 미국의 우주계획과 대륙간 탄도탄의 개발 초기 단계에 결정적인 역할을 했다. 미국은 실제로 로켓 추진기를 만들 능력이 없었다. 당시는 냉전의 초기 상황으로 개발진들의 과거가 어떠했건 이들의 능력이 절대적으로 필요하다고 판단했다. 초기의 대륙간 탄도탄은 V2 로켓을 그대로 사용하거나 몇 개를 묶어서 추진했고, 1950년대가 되어서야 독자적인 로켓 추진기를 갖출 수 있게 됐다.

독일의 V2 역시 전쟁의 광기가 아니면 이루어질 수 없는 인재와 자원의 총결집으로 전쟁의 광풍 속에서 갑작스러운 V2의 설계가 가능했다. 당시의 기술로서는 그만큼 로켓의 설계라는 일이 어려운 작업이었다. 로켓을 만들 수 있는 인재의 풀 역시 한정되어 있었다. 소련에 끌려간 독일의 로켓 기술자들 역시 소련의 우주계획과 탄도탄 계획에 동원됐다. 소련 역시 이들의 기술적 유전자가 필요했던 것이다.

V2는 실험적인 로켓이 아니라 전쟁에 배치되어 도시를 폭격하기 위한 무기로, 수백 Kg의 폭탄을 싣고 대기권까지 올라가서 사용하는 실용적인 로켓이었다. 역사적으로 오늘날의 모든 액체 추진 로켓은 V2의 유전자를 물려받았다. 기술에도 일종의 유전자가 있다고 볼 수 있다.

로켓의 유전자, 운영체제의 유전자
로켓이나 핵무기와는 다르지만 컴퓨터의 역사에서 운영체제는, 특히 일정 규모 이상의 운영체제는 만들 수 있는 사람이 극히 제한되어 있으며 한번 성공적으로 개발된 운영체제의 유전자는 쉽게 바뀌지 않는다. 우리가 알고 있는 운영체제 말고도 수많은 운영체제가 나타났다 사라지곤 했으며, 일부는 연구자들 사이에서 매우 중요하게 취급되곤 했으나 오늘날 그 운영체제의 후손이나 사용자는 찾아보기 힘들다. 요즘에도 마이크로 커널이나 진보적인 개념의 실험적인 운영체제들이 많이 있으나 이들 중 앞으로도 살아남을 운영체제는 1%도 채 되지 않을 것이다.

경쟁이 치열해지고 체계화될수록 새로이 등장한 운영체제의 생존 가능성은 그만큼 낮다고 할 수 있다. 초기의 구현 개념 설정부터 실제 구현까지는 기술적으로 성공적이라 하더라도 사용자 층의 확보라든가 기술의 지속적인 발전에는 개발회사의 규모나 명성 같은 것이 필요하며 기술적인 전통도 필요하다. 개발자와 함께 기술적 전통이 지속적으로 필요한 것이다. 또 운영체제는 적어도 일정기간 동안 사용자들의 요구와 비판을 수용하며 살아남을 수 있는 일종의 영속성(persistancy)이 필요하다. 이들을 생물체에 비교한다면 하나의 기술적 유전자의 보존이라고 할 수 있겠다.

처음에 IBM의 후광을 입어 등장한 MS-DOS가 마지막 버전까지도 개리 킬달의 CP/M 유전자로부터 자유로울 수 없었던 것처럼 NT와 윈도우의 후손들 역시 선조들인 DEC와 매킨토시의 유전자로부터 자유로울 수 없었다. MS는 원래부터 운영체제가 없었기 때문에 모든 기술적 유전자를 외부에서 들여와야 했다.

오늘날 유닉스는 30년 이상의 생존성을, 지금도 간혹 쓰이는 MS-DOS는 초기의 CP/M부터 고려한다면 역시 30년 이상의 운용 경험을, 그리고 윈도우 NT 역시 VMS부터 고려한다면 30년 가까운 세월이 흘렀다. 만약 아무리 개념적으로 좋은 운영체제가 있어도 초기부터 사용자 층이 너무 엷거나 한정된 수의 특수한 기계에서만 구동된다면 이런 장구한 세월 동안 개선되고 유지?발전이 지속되어야 하는 당위성을 갖기가 힘들다. 아니면 운이 좋아 초창기부터 사용되어 왔던가(리눅스 역시 유닉스의 클론으로부터 시작된 것이다. 만약 전혀 새로운 운영체제였다면 몇 사람의 관심으로 끝나고 말았을 가능성도 없지 않다).

반대로 생각하면 한 운영체제가 널리 쓰이기만 한다면 최선의 성능이 아니더라도 그 존재의 당연함과 영원히 끝나지 않을 것 같은 지루한 업그레이드와 변경에 대한 당연한 존재이유를 확보할 수 있다. 대표적으로 MS의 운영체제들이 그러한 예라고 할 수 있을 것이다.

사용자들은 80년도부터 지금까지 도스와 윈도우의 버전업을 몇 십 번 이상 반복해왔다. 데스크탑 운영체제의 거의 전부와 서버 운영체제에서 상당한 부분이 이미 MS로 기울어졌다. 컴퓨터의 성능이 좋아진 것도 하나의 이유겠지만 MS의 제품을 사용해도 다른 회사나 단체에서 주장하는 것처럼 커다란 재앙은 일어나지 않았고 이른바 커널 패닉 상태인 ‘공포의 블루스크린’이 보여도 운영자가 리셋을 눌러주면 그만일 수도 있다.

무엇보다도 절대 다수라는, 또는 오랫동안 익숙하다는 그 사실 자체만으로도 최고의 마케팅을 구사하고 있는 MS의 서버 운영체제는 오늘날 NT가 근간이다. 흔하니까 더 많이 쓰게 되는 점유의 포지티브 피드백은 NT가 우수하다기보다는 일상적인 용도에 NT가 크게 부적합하진 않다는 사실을 반영한다.

인터넷 서버나 적당한 규모의 데이터베이스(MS에 따르면 커다란 데이터베이스나 애플리케이션도 수행 가능하다고 한다)에는 별 문제 없이 사용이 가능하다는 것이며, 비슷한 규모에서는 다른 운영체제가 절대적인 성능상의 우위를 점하지 않고 있다는 가정도 아마 맞을 것이다. 보안 취약성 문제가 일어날 때마다 보안 패치를 적용하거나 알려져 있는 보안상의 결함들을 그때그때 패치로 때울 수 있는 것도 워낙 많은 수를 차지하고 있기 때문일 것이다. 다수라는 조건은 경쟁자에게는 무서운 장벽이기도 하다.

요즘 사용하는 윈도우 XP나 2000은 윈도우 NT에 기반한 기술이다. NT는 80년대부터 개발됐다. NT는 MS의 입장에서 보면 보물이자 당분간 운영체제 시장을 지배하는 중요한 수단이다. NT의 성공은 기술적이라기보다는 마케팅과 시장점유율의 승리하고 보는 편이 맞을 것이다.

NT는 1988년부터 개발되어 1993년 버전 3.1이 발표됐다. 너무나 짧은 시기에 성공적인 시장 점령을 마친 NT는 사실 ‘NT(New Technology)’라는 이름에 걸맞지 않게 긴 개발 역사를 숨기고 있었다. NT는 역사적으로 보면 70년대부터 개발됐다고 보는 편이 맞을 것이다. 70년대부터 유닉스와 경쟁하던 VMS가 NT의 조상인데, 유닉스와 NT는 시작부터 다른 운명을 타고 태어났다. 그리고 두 운영체제는 16비트, 32비트 그리고 이제 64비트 시장에서도 경쟁을 해야 하는 30년간의 맞수관계를 유지하고 있다.

둘 다 대기업에서 태어나긴 했지만 출발부터가 매우 달랐다. 유닉스의 개발 동기가 취미활동에 가까운 켄 톰슨과 리치의 작업이었다면 NT의 조상인 VMS는 처음부터 32비트 시장을 바라보고 만든 제품이었다. 그 개발은 DEC(Digital Equipment Corporation, 그냥 디지털이라고 표현하기도 한다)라는 대단한 회사로부터 시작됐다(DEC와 그 창업자인 올슨을 다룬 책도 있다. 책의 제목은 『The Ultimate Entrepreneur: The Story of Ken Olsen and Digital Equipment Corporation』)

미니 컴퓨터 기술의 인큐베이터, DEC
DEC에 대해 알파칩과 알타비스타(altavista.com)를 만든 회사 정도로만 알고 있는 사람이 많지만 DEC는 정말 탁월한 회사였다. DEC의 창시자 켄 올슨은 컴퓨터 업계의 영웅이었다. 빌 게이츠 역시 어린 시절 켄 올슨을 자신의 영웅으로 여겼을 정도로 컴퓨터 업계에 대한 결정적인 영향력을 행사했다. 흔히 ‘디지털(Digital)’로 불리는 DEC는 사실상 모든 마이크로 컴퓨터와 미니 컴퓨터의 기술 유전자 내지는 인큐베이터 역할을 했다. 1957년부터 1997년까지 40년간 존속하며 수없이 많은 영향을 주었다.

초기의 MS를 포함해 컴퓨터에 관여한 사람들은 예외 없이 DEC의 PDP 시리즈 컴퓨터의 영향으로부터 자유로울 수 없었다. 유닉스 역시 PDP 시리즈에서 개발됐다. 유닉스의 32비트화도 PDP가 32비트의 가능성을 열어주었기 때문에 가능했다. 그리고 모든 임베디드 컴퓨터 컨트롤러의 시작도 DEC에서 비롯됐다. 마이크로프로세서의 탄생 자체가 PDP-8에서 영감을 얻은 인텔의 엔지니어 테드 호프의 설계로부터 시작됐다.

1957년 MIT의 링컨연구소의 TX-2 프로젝트에 염증을 느낀 켄 올슨은 자신의 동료와 함께 DEC를 설립했다. TX-2는 당시로서는 새로운 개념인 트랜지스터를 사용한 대형 컴퓨터였다. 올슨이 TX-2에 사용되던 모듈들을 모아서 연구실에 필요한 컴퓨터를 셋팅하는 것으로 출발한 작업은 1961년 PDP-1이라는 제품을 출시하면서 ‘미니 컴퓨터’의 세계를 열었다.

이 제품을 가장 먼저 구입한 회사는 BBN(www.bbn.com)으로 PDP-1을 이용하여 Interrupt Priority Controller를 만들었다. 요즘 하드웨어의 기준으로 보면 황당한 일이겠지만 당시의 기계는 트랜지스터 모듈을 프린트 기판에 조립한 것으로 레지스터 값들은 작은 콘솔에 있는 림프들을 통해 확인할 수 있었다.








<그림1> DEC의 PDP-8. 최초의 마이크로 컴퓨터인 알테어 8800과 거의 흡사한 모습이다.

CPU라는 개념이 하나의 칩이 아니라 ALU와 레지스터 모듈들을 전선(버스)으로 묶어 놓은 형태였다. 당연히 콘솔에 있는 스위치들을 눌러서 레지스터 값을 바꾼 후 시스템을 재가동할 수도 있었다. 운영 요원이 디버거인 셈이었다.

IBM을 포함한 다른 업체들이 초고가의 대형 컴퓨터들을 만들었다면 저렴하며 성능이 나쁘지 않은 DEC의 컴퓨터는 예측하지 못한 다양한 수요를 창출하게 됐다. DEC는 여러 가지 컴퓨터를 만들었으나 초기의 성공적인 제품은 1964년의 PDP-8이었으며 12비트 컴퓨터였다. 가격은 1만 2000달러로 당시로서는 매우 저렴한 편이었다. 이 컴퓨터가 나오자 사람들이 컴퓨터를 이용한 작업들을 과감하게 이것저것 시도해볼 수 있었다고 한다. PDP-8은 명령어가 적었고 메모리 보호가 되지 않았지만 사람들은 PDP-8로 그전에는 불가능했던 여러 가지 일들을 할 수 있었다.

그 다음에 나온 PDP-11은 시장을 석권했다. PDP-8보다 크게 복잡하지는 않았으나 DEC가 집적회로의 개발에 신경을 쓴 관계로 이 작은 시스템은 요즘의 PC보다 조금 큰 정도였다. PDP에서는 RTSS와 유닉스를 포함해 다양한 운영체제가 수행되었으며, 1960년대와 1970년대에는 컴퓨터 학계의 표준 시스템이나 마찬가지였다. PDP-10 시리즈 컴퓨터는 전산센터용으로 개발되었고 36비트 아키텍처를 가지고 있었다. PDP-10은 AI나 LISP 개발에도 널리 사용됐다. 당시의 DEC에는 Gordon Bell이나 Allen Newell 같은 쟁쟁한 사람들이 근무했다.

사람들은 단순한 구조의 PDP-8을 너무나 좋아했고 PDP-8에 집착했다. 사진에 나오는 PDP-8의 모양은 최초의 마이크로 컴퓨터인 알테어 8800과 너무나 닮았다. 인텔의 마이크로 컴퓨터가 나왔을 때 어떤 사람들은 “PDP-8 wanna be”라며 환영했다. PDP-8이 이렇게 변했으면 하던 바램이 칩으로 탄생한 것이다, 인텔의 초기 4비트와 8비트 프로세서는 PDP-8의 애호가였던 테드 호프가 설계한 것이었다. 당연한 일이었다. 초기부터 8비트의 마이크로프로세서가 빠르게 수요자층 을 넓할 수 있던 이유 중에는 개발자들이 미니 컴퓨터에서 이미 충분한 경험 곡선을 갖고 잇던 이유도 있었다. 결코 하루 아침에 컴퓨터의 대가들이 만들어진 것이 아니었다.

VMS와 유닉스의 대결
1976년이 되자 DEC는 점차 고성능의 컴퓨터(super-mini라고 한다)로 이행하기로 하고 1978년 VAX 11/780을 발표했다. DEC는 VAX로 미니 컴퓨터의 시장을 장악하게 되었으나 하위 기종에서는 점차 점유율이 떨어지게 되었는데, 마이크로 컴퓨터들과 워크스테이션들이 등장하면서 점차 DEC의 시장점유율이 떨어진 것이다. DEC는 PDP-10의 후속 기종이나 다른 모델을 포기하고 점차 VAX를 주 기종으로 밀게 됐다. VAX의 운영체제로는 VMS와 유닉스가 있었고, 당연히 DEC에서는 유닉스보다 VMS가 훨씬 좋은 운영체제라고 평가했다.

사용자들이 유닉스를 사용하는 것에도 공공연히 반대했던 켄 올슨은 주저없이 유닉스를 ‘엉터리(snake oil)’라고 혹평했다고 한다(DARPA는 그 전까지 인터넷을 관리하는 데 사용했던 PDP-10이 노후화되었고, DEC가 더 이상 PDP-10 시리즈를 생산하지 않을 것임을 알게 되자 DEC와 접촉하여 VAX/VMS에서 TCP/IP를 구현해 주도록 요청했으나, 곧바로 거절당한 적이 있다. DEC가 고유의 VMS 운영체제를 변경할 이유가 없다는 것이 그 이유였다. 그래서 인터넷의 구현은 유닉스 쪽으로 넘어가게 됐다. 결국 VAX에서 수행되는 유닉스에서 TCP/IP 스택이 구현됐다).

1980년대 후반이 되자 DEC는 IBM의 뒤를 이어 두 번째로 큰 컴퓨터 회사가 되었는데, 전 세계에 걸쳐 10만 명을 고용하고 있었다, DEC는 당시에는 하드웨어 외에도 거의 모든 분야에 진출해 있었다. DECnet과 같은 독자적인 네트워크 시스템과 파일/프린터 공유 시스템, 수없이 많은 소프트웨어들, 그리고 자체적인 관계형 데이터베이스 시스템도 갖추고 있었다.

이들은 모두 잘 만들어진 제품들이었으나 DEC에서만 수행되거나 DEC 중심적으로 만들어진 것들로, 고객들은 점차 다른 서드파티 제품들을 찾게 됐다. 올슨은 잘 만들어진 제품들은 저절로 팔린다는 믿음을 가지고 있었다. 그러나 32비트 기종의 시장에서도 RISC들과 386 같은 경쟁자들이 나타나면서 상황은 점차 악화됐다. 1990년대 초가 되자 매출이 급격히 떨어졌고 DEC는 최초로 감원에 들어갔다.

DEC는 하나의 대책으로 그 전까지의 CISC 구조인 VAX의 구조를 버리고 64비트 RISC 아키텍처인 ‘알파’ 프로세서를 개발하기 시작했다. 알파는 1990년대 말까지 가장 빠른 CPU로, VMS와 유닉스를 수행할 수 있었으며 MS의 윈도우 NT도 실행할 수 있었다. DEC는 Open VMS라는 새로운 VMS 개념의 제품으로 유닉스 업계와 경쟁하는 한편 자체적인 유닉스 시스템(나중에 OSF/1에서 True 64라는 이름으로 바뀌는)도 출시했다. 광고에도 점차 집착하게 됐다. 어찌된 일인지 이미 시장이 형성된 (그리고 과당경쟁에 돌입한) 유닉스로부터 점유율을 뺏어 올 수도 없었고, NT가 점유하는 저급 서버 시장에서도 실패했다. DEC의 모든 서버 제품들은 그 이전의 PDP 시절처럼 시장을 점유하지 못했다.

올슨은 회사를 그만두게 되었고 로버트 파머가 CEO로 영입되었으나 상황은 더욱 악화됐다. 적자가 계속되어 대량의 감원이 계속되었고 일부 제품은 오라클로, 어떤 프로세서(예를 들어 Strong Arm 같은)들은 인텔로 팔려나갔다. 결국 1998년 12월 DEC는 컴팩에 매각되기에 이르렀다. 그리고 컴팩은 다시 0000년 HP에 합병됐다.

DEC가 미니 컴퓨터 회사로 출발하면서 40년간 지속되는 동안 대형 컴퓨터들이 사람들에게 해줄 수 없는 많은 영향력과 업적들이 추구됐다. ASCII 문자 셋은 DEC에서 개발된 것이며, ISO-8859와 유니코드(unicode)는 DEC의 다국적 문자 셋으로부터 영향을 받았다.

사실 DEC의 기기들은 컴퓨터 개발에 있어 하나의 요람이었다. 또한 대형 컴퓨터와 마이크로 컴퓨터의 사이를 잇는 교량이었다. PDP 기종에서 수없이 많은 프로그래머가 교육을 받았고, 또 많은 애플리케이션과 시스템들이 PDP에서 개발됐다. PDP 시리즈가 존속되는 동안 초기의 모든 마이크로 컴퓨터 개발자들이 DEC를 모태로, 또는 DEC에서 수행되는 프로그램에서 영감을 얻어 애플리케이션을 개발하곤 했다.

미니 컴퓨터에서 8080을 에뮬레이트하는 작업들도 PDP 상에서 이루어진 것이 많았다. 유닉스 역시 PDP에서 개발되었고 최초의 C 언어도 PDP에서 태어났다. 초기 마이크로 컴퓨터 개발자의 요람인 홈브루 컴퓨터 클럽(atari, apple, osborne 그리고 doctor dobb‘s journal 등이 이 클럽에서 탄생했다)의 구성원들 역시 PDP-8과 PDP-11의 신세를 졌으며, 나중에 이들은 마이크로 컴퓨터 시대를 여는 주역이 됐다.

VMS에서 NT로!
David A.Solomon과 함께 『Inside Microsoft Windows 2000(3판, Microsoft Press)』이라는 책을 쓴 Mark Russinovich는 그의 컬럼에서 윈도우 NT와 VMS에 대해 자세히 적은 적이 있다. 상당히 유명한 컬럼이라 필자도 몇 번씩 재미있게 읽었고 이전의 유닉스의 역사에서도 소개한 적이 있다. 컬럼에서 Mark Russinovich는 NT와 VMS의 유사성을 심도 있게 다루었다. 보다 초기의 자료인 1993년 『Inside Windows NT』의 서문에서는 NT의 주 개발자인 데이비드 커틀러가 VMS와의 유사성에 대해 적은 바 있다.

CP/M이 QDOS를 통해 표절에 가까운 클론의 형태로 MS-DOS로 구현됐다면 NT는 VMS의 개발팀을 통째로 스카웃하여 몇 년 동안에 윈도우의 API를 입혀놓은 형태이다. 기술의 유전자는 이러한 방법으로 DEC에서 MS로 넘어가게 됐다.

VMS를 개발한 사람은 데이비드 커틀러(David Cutler)로, 1942년생이며 현재 MS의 Distnuished Engineer로 근무하고 있다. 비교적 일찍 업계에서 두각을 나타낸 사람이며 묘한 유머감각을 가지고 있다고 전해진다. 일설에 의하면 커틀러의 에러 메시지는 언제나 두 가지 이상의 의미를 가지고 있다고 한다. 단어를 갖고 장난치는 일에도 대가였다. 이를테면 WNT(Windows NT)라는 이름은 커틀러가 지었는데 VMS에서 한 글자씩 뒤로 옮긴 이름이라는 식이다. 또 HAL(Hardware Abstraction Layer)은 IBM에서 한 글자씩 앞당겨서 만들었다고 하는 전설도 있다.

처음에는 듀퐁에서 컴퓨터 관리를 담당하다가 운영체제에 관심이 생겨서 결국 디지털(DEC)에 근무하게 됐다. 커틀러는 첫 작품으로 RSX-11이라는 운영체제를 만들었다. RSX-11은 주로 공장자동화와 산업에 쓰인 운영체제로 DEC의 PDP-11을 위한 운영체제였다. 회사의 기술 담당 부사장이던 고든 벨은 1975년이 되자 32비트 프로세서가 있어야 다른 회사들과 경쟁할 수 있다고 판단하여 32비트 프로세서를 개발하기 시작했고, 이 프로세서는 나중에 VAX로 발전했다.

회사 내에서 RSX-11로 유명해진 커틀러는 이 32비트 프로세서를 개발하는 초기 구성원으로 합류했다. 얼마 후 Dick Hustvedt와 Peter Lipman과 함께 새로운 VAX를 위한 운영체제인 VMS를 개발하게 됐다. DEC에서 결정한 VAX와 VMS의 설계는 약간 특이한 것으로, 구형 기종과의 호환성을 최대한 살리라는 주문이 내려졌다. 즉 VAX는 과거의 PDP-11과 하위 호환성을 가질 수 있어야 하며, 데스크탑 워크스테이션뿐만 아니라 엔터프라이즈 서버에서도 사용할 수 있어야 한다는 것이다.

또 VMS는 RSX-11을 포함한 과거의 운영체제와 호환성을 포함해 다양한 하급 기종에서도 싫ㅇ되어야 한다는 주문이었다. DEC는 VAX와 VMS에 큰 도박을 했는데 결과는 성공적이었다. DEC에서는 VAX와 VMS의 개발을 ‘betting the business’라고 표현했는데 나중에 MS 역시 NT 5.0의 개발 시점에 ”betting the business”라고 표현했다.

DEC에서 MS로 명함 바꾼 커틀러
DEC는 1977년 VAX와 VMS 1.0을 발표하고 1978년 출시했다. 커틀러는 그 다음의 VMS의 개발에도 프로젝트 리더와 핵심 아키텍트로 계속 참여했다. 1981년이 되자 커틀러는 DEC를 떠나겠다고 선언했다. DEC는 간판 스타를 잃지 않기 위해 더 200명의 하드웨어와 소프트웨어 엔지니어를 커틀러에게 지원했다. 커틀러는 연구소를 시애틀로 옮겼다. 이 그룹의 목표는 디지털이 1990년대를 이끌 CPU 구조와 운영체제를 만드는것이었다. DEC에서는 하드웨어 프로젝트를 PRISM으로 운영체제는 MICA라고 불렀다.

1988년이 되자 DEC는 커틀러의 프로젝트를 취소하고 팀원들을 해고했다. 커틀러는 때마침 MS로부터 좋은 제안을 받았기 때문에 DEC를 그만두고 팀원들과 함께 MS로 이적했다. 커틀러의 제안은 20명의 개발자들과 함께 MS로 이적하겠다는 것이었고 이중에는 하드웨어 개발자도 끼어 있었다. MS로서는 커틀러를 영입하는 것이 대단한 일이었으며 이만한 개발자는 흔치 않았다.

빌 게이츠는 유닉스에 대항할 수 있는 새로운 운영체제의 개발이 회사의 미래에 중요한 사건임을 느꼈다고 했다(MS는 초기에 유닉스의 일종인 XENIX를 만들어 시장에 진입하려 한 적이 있으나 별로 재미를 보지 못했다. 1980년대 초반의 MS가 XENIX를 처음부터 개발한 것도 아니며 AT&T로부터 라이선스한 유닉스의 클론이었다. MS가 유닉스에서 바로 손을 떼면서 XENIX의 판권은 요즘 리눅스를 제소중인 SCO로 넘어갔다). 사실 MS는 32비트에 대한 특별한 준비가 전혀 되어 있지 않은 상태였다.

처음에 VMS의 팀이 MS에 오기는 했으나 이 때의 운영체제 이름은 OS/2 NT였다. MS는 아직 윈도우를 개발하지 못한 채 IBM과 OS/2를 개발하고 있던 상태로, 새로운 운영체제가 OS/2의 뒤를 잇기를 희망했으며 API는 OS/2의 일차적 API를 사용하기를 원했다. 그러나 1990년 MS가 윈도우 3.0 개발에 성공하자 MS의 생각이 바뀌었고 IBM과의 관계도 바뀌었다.

OS/2 NT는 6주 만에 ‘윈도우(Windows) NT’로 이름이 바뀌게 됐다. Win32가 NT의 공식적인 API로 바뀌게 된 것이다. MS에서는 3.1에 대한 호환성과 16비트 애플리케이션을 NT에서 그대로 실행할 수 있는 것을 중요한 목표로 잡고 DOS와 OS/2 그리고 POSIX도 부분적으로라도 호환성을 갖도록 만들었다. 1990년부터 1993년까지 커틀러의 팀은 NT를 완성하기 위해 거의 광적으로 매달렸다.

NT의 핵심 개발 인력들이 VMS에 관계했으며 커틀러와 같이 일한 적이 있기 때문에 NT가 VMS와 막연하게 비슷할 것이라는 추측을 넘어 NT와 VMS는 놀랄 만큼 비슷하다고 한다. Russinovich에 따르면(Windows NT and VMS: The Rest of the Story) NT 역시 다른 운영체제처럼 유저 모드와 커널 모드로 구성되었으나 POSIX, DOS, OS/2의 층은 커널 모드가 아니라 유저 모드에서 수행된다. 커널이 지원하지 않으면 이들이 export하는 API는 아무 것도 수행되지 않는다. NT의 native API는 유저 모드의 애플리케이션들이 커널과 소통하는 것을 규정하는 API지만 많은 부분이 문서화되어 있지 않았다. 운영체제는 이들 어플리케이션 관점에서의 요구를 적절히 처리한다.

너무나 닮은 VMS와 NT
NT의 커널이 디지털의 커널을 그대로 카피했다는 평을 받을까 염려되어 NTFS나 새로운 Win32 API 같은 여러 가지 부분을 새로 개발함으로써 이러한 사실을 희석하려 했으나 NT는 VMS 코어의 개작이라는 의혹이 계속 뒤따랐다. 내부적으로 NT와 VMS의 커널이 너무나 비슷했기 때문에 DEC의 엔지니어들은 몇 주도 되지 않아 이들의 유사성을 파악할 수 있었다고 한다. VMS 5.0과 초기 NT는 너무나 비슷했다.

우선 프로세스 구조가 같았다. 프로세스의 우선순위가 둘 다 32레벨이며 상위 16레벨은 시스템에서 고정되어 있었고, 이들의 처리 방식도 같았다. VMS와 NT 3.1과의 프로세스 구조에서 큰 차이라면 NT가 쓰레드를 지원하는 것이었으며 스케줄러가 프로세스가 아닌 쓰레드에 실행 시간을 할당하는 것이었는데, 디지털도 얼마 후인 1995년에는 VMS 7.0에서 같은 방식으로 커널 쓰레드를 처리하기 시작했다.

NT 4.0에서는 유저 쓰레드를 구현했는데 이는 VMS의 영향을 받은 것이었다. 물론 프로세스 매니저도 비슷했으며 메모리 관리자도 구조가 유사했다. I/O에 이르러서는 상당히 비슷해서 약간의 차이만 있을 뿐이었다. 오브젝트 매니저마저도 비슷했다. 앞에서 소개한 컬럼에 따르면 이들의 유사성은 책을 한 권 쓸 수 있을 정도라고 한다.

NT가 VMS와 심각할 정도로 유사하다는 것을 DEC의 엔지니어들이 알아차리고 상급자에게 보고했을 때 DEC에서는 MS를 제소하지 않았다. 대신 1995년이 되자 DEC는 Open VMS라는 프로그램을 들고 나왔고, 이 제품은 NT와 함께 사용할 수 있는 제품이었다. 뿐만 아니라 DEC는 알파칩에 대한 NT 지원을 약속하기까지 했다. MS는 DEC에 1억 달러 가량을 지불했다고 한다. 그 후로도 몇 년 동안 VMS는 NT를, NT는 VMS의 개념을 차용했다. 얼마 후 DEC는 컴팩에 흡수되었고 그 후로 알파칩과 VMS는 그 전처럼 메인스트림으로 존재하지 못했다. 1980년대 중반까지도 DEC는 MS보다 훨씬 큰 회사였다.








<그림 2> VAX 시리즈의 하나였던 Micro Vax

미니 컴퓨터를 발전시킨 대단한 안목과 기술에도 불구하고 DEC는 마이크로 컴퓨터 시대에 잘 대응하지 못했다는 평을 받았다. 초기의 마이크로 컴퓨터를 이용한 PC 시장을 무시했다. 퍼스널 컴퓨터가 시장이 커져 가자 LSI-11이라는 PDP-11 호환 마이크로 프로세서를 만들어 시장에 뛰어 들었으나 적극적으로 밀어붙이지 않았다. LSI -11과 당시의 주종인 8080 또는 Z80은 비교할 수 없는 성능이었다(80286에 버금가는 성능이다).

LSI-11이 자리를 잡으면 DEC의 방대한 소프트웨어들이 시장에 나올 수도 있었다.
DEC는 또 VMS가 인터넷의 중추적 OS가 될 수 있는 기회 역시 거부하였다. 결국 유닉스에서 TCP/IP가 구현되었고, 유닉스의 빈약한 통신 기반을 확충할 기회를 주었다(유닉스는 그 이전까지 네트워크 부분이 매우 취약했다). 그 이후로 워크스테이션의 중요한 부분을 인터넷이 가능한 유닉스에게 내어 주었다.

결국 'Betting the Business'에 성공한 팀은 MS가 됐다. DEC에서 VAX와 VMS를 기획했던 전설적인 엔지니어 고든 벨과 데이비드 커틀러는 현재 MS 소속의 연구원이다. 운영체제 교과서에서는 항상 다루던 VMS가 어느 날인가 부터 사라지고 대신 NT가 등장했다. 나중에 데이비드 커틀러는 한 사람이 성공적인 운영체제를 개발하는 것도 큰 행운인데, 자신은 여러 번 성공적인 운영체제 개발에 참여할 수 있었던 행운을 누릴 수 있었다고 언급했다.

새로운 기술, 새로운 유전자
합당한 제품에 대한 끊임없는 투자와 개발 노력은 매우 중요하다. 사실 88년 MS의 32비트로의 이행은 매우 중요한 문제였으며, 자신들의 힘으로 도저히 개발할 수 없는 경우에 다른 유전자를 가져오는 것이 정말 중요한 개발 방법이라는 것을 다시 한 번 보여 주었다. 만약 VMS의 유전자를 물려받은 NT가 없었으면 MS로서는 운영체제를 처음부터 개발하며 유닉스와 대결을 벌여야 했을 것이고 어쩌면 오늘날의 서버 시장 지배는 없을 것이다. 정말로 MS는 운이 좋았다고 볼 수 있다(빌 게이츠가 말했다고 전해지는 “IT 업계에서 6개월은 영겁이다”라는 말이 있지 않은가).

우연하게도 NT가 발매될 시점에 유닉스 업계들이 자신들의 이해관계를 둘러싸고 소모적인 경쟁을 벌일 때였고 가격도 인하하지 않은 상태였다. NT는 대대적인 홍보와 함께 유닉스들에 비해 저렴한 가격으로 시장을 파고들었다. 아직 리눅스나 FreeBSD 같은 공개형 유닉스 운영체제는 별로 홍보가 이루어지지 않은 상태였다. NT로서는 다행한 일이었다.

새로운 기술의 개발에는 돈뿐만 아니라 시간이 엄청나게 들기 때문에 업체들은 개발에 전념하든가 아니면 기술 유전자를 찾아 새로운 피를 수혈해야 한다. 기술을 개발하는 도중에 다른 업체들이 비슷한 기술을 만들어낼 수도 있기 때문에 자신의 기술 유전자를 보호하기 위해 수단과 방법을 가리지 않았던 IT 기업들의 행태는 역사적으로 그들의 성장 과정에서 얼마나 많은 다른 기술 유전자를 수혈받았는가를 완전히 망각한 처사라고 볼 수도 있다.

2004년 2월 18일자 뉴스위크에는 스티븐 레비가 빌 게이츠를 인터뷰하는 내용이 나온다. 인터뷰에서 빌 게이츠는 컴퓨터 기술이 기로에 처해 있다고 보고 있지만 잠재적인 영향력은 그 어느 때보다 커졌다고 확신했다. 소프트웨어의 점진적 진보와 비약적 진보에 대해 설명하면서 비약적인 진보라는 것은 “이제 그것 없이는 살 수 없다”고 느끼는 것들을 예로 들어 설명했다. 비약적인 진보는 업체들에게 중요한 의미를 가지며, 그것이 없으면 돈을 벌 수 없다. 소비자가 일단 소프트웨어를 구입하면 새로운 제품이 나오지 않는 이상 다시 구입하려 하지 않을 것이기 때문이라는 것이다.

만약 지금 진보가 없다고 느낀다면 그것은 진보가 느린 것이 아니라 90년대의 IT 거품이 너무나 컸으며 그것은 바로 인터넷 때문이라고 지적했다. 인터넷이 팽창하던 90년대에 MS는 다른 경쟁업체들을 압도하는 대도약을 했고 그 주력이 바로 윈도우와 NT였다. 그리고 NT는 다른 회사의, 그것도 주력 운영체제였던 VMS의 재구현(re-implementation)일지도 모른다는 의혹이 제기되긴 했으나 정작 당사자인 DEC가 조용히 있었기 때문에 별로 문제를 일으킨 것이 아니었다. 나중에 윈도우가 룩앤필(look and feel)을 놓고 애플과 사투를 벌인 것에 비하면 정말 운이 좋았다고 볼 수도 있다.

인터뷰에서 빌 게이츠는 매년 69억 달러를 쓰면서 앞으로의 새로운 목표인 기계와 기계, 그리고 사람과 기계의 ‘경계(boundary)’ 문제들을 해결하기 위해 도전하고 있다고 했다. 만약 그 성과로 비약적 진보가 일어나지 않으면 주주들에게 사과해야 하며, 반대로 이런 기술들이 개발된다면 사용자들에게는 커다란 혜택이 주어지 것이라고 했다. 69억 달러의 개발비는 기술적 도약을 위해 위험을 감수한 MS의 노력의 징표라는 것이다.

MS의 다음 유전자는?
개발비를 떠나서 MS는 어떤 새로운 유전자를 내어놓을 것인가? 과연 MS 고유의 중요한 무언가가 나와서 세상을 뒤흔들어 놓을 수 있을 것인가? 만약 그렇다면 사용자뿐 아니라 주주들도 정말 좋아하게 될 것이다. 하지만 노력의 징표를 다른 회사들같이 쉽게 내어주지는 않을 것이고 보면 경쟁자들과의 거리는 더욱 멀어질 것이다. 어찌보면 세상은 공평하지 않은 것이다.

필자는 새로운 기술 유전자는 어디에서 나올까 진작부터 궁금해지기 시작했다. 만약 세상을 정글에 비유한다면 너무나 경쟁이 치열하고 혹독하며 감시가 심한 곳이라 작은 싹들은 초장에 잘려나가기가 십상이기 때문이다. 그러나 자연의 법칙을 따라서 어디에서인가 예측하지 못한 새로운 싹들이 나오고 이 싹들이 크면서 새로운 문화와 기술의 유전자를 만들 것이다. @

http://www.zdnet.co.kr/news/column/hotissue/0,39024748,39129985,00.htm


-----------------------------------------
기술만 있으면 회사가 시장에서 실패할 수는 있어도
엔지니어는 가진 기술을 들고 다른 회사로 옮겨가면 되는 듯..
회사의 성공이 엔지니어의 성공을 보장해주는 것이 아닌 것처럼
회사에 실패해도 엔지니어는 성공할 수 있다는..

댓글 없음:

댓글 쓰기