유닉스 역사 두번째 이야기

 

[32비트로 도약]

이 당시 중요한 사건으로 32비트 프로세서를 사용하는 VAX가 등장했다. 앞서 PDP-11을 만든 DEC은 VAX-11을
32비트 프로세서를 사용해 생산하기 시작했다. 그 당시 대부분의 개발자는 32비트가 불필요하다고 생각하고 있었으며
리치나 톰슨 등도 DEC의 개발 제안을 무시했다. 그러나 벨연구소의 일부에서 32비트를 위한 코드가 개발되고
유닉스/32V라는 이름으로 불렸다. 그 후 이 코드는 버클리로 넘어가 3BSD의 모체가 됐다. 버클리의 빌 조이
(Bill Joy) 같은 사람들은 이 당시에 이미 유닉스의 미래가 32비트로 넘어가고 있다는 것을 깨닫고 있었다고 한다.


[ BSD 이야기 ]

1974 년부터 버클리 대학교에서는 PDP-11/45에 유닉스 버전 4를 설치하기 시작했고 곧이어 유닉스 버전 5를
수행하는 마이클 스톤브레이커 팀의 인그레스(INGRESS - 아마 독자들은 PostgreSQL을 통해 이 그룹을 알고
있을 것이다)를 실행하기 위해 서버를 추가로 구입했다. INGRESS는 성공적으로 설치, 가동됐다.

1975 년에 몇 대의 서버가 충원됐고 켄 톰슨은 모교인 버클리에서 방문 교수로 안식년을 보내게 됐다. 그리고 버전
6 유닉스를 설치하기 시작했다. 빌 조이는 척 핼리(Chuck Halley)와 함께 1975년 버클리에 대학원생으로 입학해
켄 톰슨과 함께 파스칼 시스템을 작업하기 시작했다. 이 작업은 성공적이었다. 빌 조이는 1976년경부터 커널을 이해
하고 변경하며 개선점을 제안할 수 있게 됐다고 한다.

 

빌 조이의 파스칼 시스템이 성공하자 다른 사람들이 시스템 복사본을 요청하는 일이 잦아지자 빌 조이는 1977년초에
BSD(Berkeley Software Distribution)라는 배포판을 만들게 됐다. 이것이 BSD라는 이름의 시작이다.  이 BSD는 유틸리티

수준의 배포판으로 아직 커널을 수정한 것은 아니었다. 같은 해에 빌 조이는 터미널에서 화면 커서의 위치를 조정해 작업을

쉽게 할 수 있도록 그 이전에 만든 ex를 개조해  vi 편집기를 만들었다. 그리고 터미널 간의 상이한 동작을 보정하기 위한

작업은 termcap이 됐다. 빌 조이의 초기 구현 중 하나는 C 쉘(csh)을 구현한 것이다.

 

1978 년에는 배포판의 성능이 개선됐으며 두 번째 배포판이라는 이름으로 2BSD라는 이름이 붙었다. 그 해 VAX 11
머신이 버클리로 들어왔으며 벨연구소에서 만든 유닉스 버전 7의 32비트 버전을 입수했다(뉴저지주의 홈델이라는
벨연구소의 한 지부에서 만듦). 새로 입수된 32/V 유닉스는 32비트 환경에서 동작하기는 했으나 VAX의 가상 메모리
기능을 제대로 지원하지 못했다. 버클리의 다른 대학원생이었던 Babaoglu는 워킹셋 페이징을 구현하는 방법을 찾아내게
됐고 빌 조이와 함께 이 코드를 32./V에 이식했다.

 

빌 조이는 장래에 32비트 VAX가 16비트 PDP-11을 대체할 수밖에 없다는 것을 알았으며 1979년 말 3BSD를 발표했다.
비슷한 시기에 벨연구소의 마지막 릴리즈가 32/V이고 이후의 시스템 Ⅲ과 시스템 Ⅴ는 AT&T 내의 다른 그룹으로
넘어가게 된다. 이후 유닉스는 상업화의 길을 걷는다. 이 시점 이후 유닉스의 역사는 다소 복잡하게 됐는데 버클리가 주도한

대학 공동체가 BSD라는 변종을 개발한 반면 AT&T는 시스템 Ⅲ와 나중에는 시스템 Ⅳ라는 이름으로 계속 유닉스를 개발했다.

1980년대 후반에서 1990년대 초반에 이러한 두 가지 중요한 변형 간의 전쟁은 최고조에 달했지만 여러 해가 지난 후에는 각

 변형이 다른 변형의 중요 특징 중 많은 부분을 채택했다. 그래서 서로 비슷해지게 됐다. 상업적으로 시스템 Ⅴ는 인터페이스의

대부분이 정식 표준에 채택됨으로써 표준 전쟁에서 이겼으며 대부분의 하드웨어 벤더는 AT&T의 시스템 Ⅴ로 전환했다.

그러나 시스템 Ⅴ도 결국 많은 부분에서 BSD의 혁신들을 받아들이게 됐으며 그 결과로 나온 이후의 시스템은 두 시스템의 합병

 이상이었다.


BSD 시스템도 사라지지 않았으며 대신 연구, PC 하드웨어와 단일 목적 서버(예, 많은 웹 서버는 BSD에서 파생된
시스템을 사용한다)용으로 널리 사용되게 됐다. 그리고 같은 시기에 CMU(Carnegie Mellon University)에서는
Mach 커널이 개발되고 있었다.

 


[DARPA와 4BSD]

1979 년 말 3BSD를 기준으로 제안된 문서는 DARPA에서 여러 컴퓨터를 통합하는 운영체제로 적합함을 입증했다.
DARPA는 버클리와 계약을 맺고 버클리의 책임자 봅 패브리 교수는 CSRG(Computer Science Research Group)를
만들었다. CSRG는 AT&T와 버클리 대학의 라이선스 조항을 만족시키면서 빌 조이를 프로젝트 리더로 삼아 더 많은
기능을 만족하는 4BSD를 1980년에 릴리즈했다. 그 이듬해인 1981년에는 4.1BSD가 발매됐다. 5BSD가 되는 대신
소수점이 붙은 이유는 AT&T의 시스템 Ⅴ와 혼동을 줄 수 있다는 이유 때문이었다(사실 유닉스 32/V로부터 파생된
VAX 릴리즈로부터 보면 2-3년밖에 걸리지 않았다).

 

1981 년에 DARPA의 요구사항이 4.1BSD에서 만족스럽게 이행되자 새로운 계약이 성립됐으며 CSRG는 새로운 DARPA의
요구 조건을 수용해야 했다. 이 요구 사항은 빠른 파일 시스템, 수GB의 프로세스 공간, 안정된 IPC와 네트워크 지원을
통합해 ARPAnetd으로 시스템들을 연결해 작업할 수 있도록 하는 것이었다. McKusick은 1981년에 CSRG에 합류했다
1982년에 빌 조이는 썬 마이크로 시스템즈에 합류한다.

TCP/IP 등의 통합을 완벽하게 이루기 위해 시스템 자체를 재설계하고 인터페이스도 세분화했으며 시스템은 4.1a와
4.1b를 거쳐 여러 가지 테스트와 피드백을 받았다. 1983년 발표된 4.2BSD는 그때까지의 릴리즈 중 가장
성공적이었다고 한다. BSD는 이때 잠시 상업적으로도 성공했지만 시스템 Ⅴ가 네트워크와 다른 개선 사항을 통합해
다시 시장 주도권을 장악한다.

 

1980 년대 말 Taeho와 Reno라는 이름으로 나온 4.3BSD의 네트워킹 릴리즈는 AT&T의 소스 라이선스로부터 네트워크
코드를 분리했다. 네트워크 코드는 버클리에서 개발한 것이 분명하고 V/32 유닉스에는 없는 것이었기 때문에 그 당시
PC에서 네트워크 코드를 이용하고 싶어하던 TCP/IP 이용 제품의 벤더들은 BSD에서 네트워킹 코드와 지원 유틸리티를
버클리의 저작권 문구를 유지하기만 하면 무상으로 이용할 수 있었다.

1990 년에 발표된 Reno에 이르면 BSD에 중대한 변화가 있었다. 첫 번째는 가상 메모리 시스템의 변화가 온 것이며
두 번째는 NFS가 추가된 것이다. 가상 메모리 시스템의 변화는 커다란 변화였으며 4.2BSD 사용자 매뉴얼에서 설명된
가상 메모리 인터페이스를 구현할 수 있게 됐다(이 문제에 대한 자세한 논의는 찰스 크래너(Charles Cranor)의 박사
학위 논문을 읽어보면 솔직담백하게 적혀있다).

 

Taeho 와 Reno를 발표한 후 네트워킹 릴리즈를 수정한 네트워킹 릴리즈 2가 발표됐으며 32/V와의 커널 소스 문제를
해결했다. 이 때 윌리엄 졸리츠(William Jolitzs)는 32/V에서 파생된 여섯 개의 커널을 약 6개월 동안 작업해
AT&T와 BSD 커널 소스 문제를 해결했다. 얼마 후 졸리츠가 만든 버전은 386/BSD라는 이름으로 릴리즈됐다.
이 386/BSD 릴리즈 후 NetBSD 그룹이 결성되어 NetBSD 배포판을 릴리즈하기 시작했다. 이 그룹의 특징은 기술
중심적이며 가급적이면 다양한 플랫폼을 지원하려 했다. 이 그룹에서 사용자 중심의 FreeBSD가 갈려 나왔으며 다시
NetBSD에서 OpenBSD가 독립했다.

 

 

[불행한 소송의 시작]

BSD 네트워크 릴리즈 2가 4.4BSD로 진행되는 동안 4.4BSD를 상업화하고 판매하기 위한 BSDI(Berkeley Software
Design Inc.)라는 회사가 만들어졌다. 원래 유닉스 시스템 소스 코드의 대부분은 버클리에서 개발한 소스 코드이기
때문에 BSDI는 AT&T의 코드로부터는 자유롭다고 주장했다. AT&T의 자회사인 USL은 저작권 위반, 계약 위반, 거래
비밀 남용으로 BSDI와 University California의 평의원들을 상대로 소송을 제기했다. 고소와 맞고소로 이어진
소송으로 인해 결과적으로 4.4BSD 발표는 연기됐으며 1994년에 양측이 모두 소송을 취하했다. 그 후 BSDI는
4.4BSD-Lite에서 문제가 되는 코드를 모두 걷어냈고 현재 이 코드와 함께 자신의 배포판을 판매하고 있다(BSDI는
최근에 VxWorks를 만드는 임베디드 운영체제 회사인 윈드리버에 합병됐다). 아울러 4.4BSD-Lite를 이용해 NetBSD,
OpenBSD, FreeBSD 모두 다시 소스 코드를 4.4BSD-Lite에 동기화했다. 1993년 4.4BSD가 4.4BSD-Lite라는
이름으로 발표됐고 최종 버전인 4.4BSD-Lite2를 마지막으로 CSRG는 해체됐다. 맥퀴식은 해체 이유를 다음과 같이
설명했다.

 

“거 의 20년간 BSD를 이끌어왔던 우리는 이제 신선한 아이디어와 끝없는 열정을 지닌 사름들에게 이일을 맡길 때라고
느꼈다. 시스템 전체를 살펴볼 수 있는 하나의 중심적인 권위가 가장 좋아 보이기는 했지만 여러 목표를 가진 여러
그룹의 아이디어는 서로 다른 많은 접근 방법이 시도될 수 있도록 보장해준다. 시스템은 소스 형태로 릴리즈되므로
가장 좋은 아이디어를 다른 그룹이 쉽게 채택할 수 있다. 그 중 한 그룹이 특별히 유력해진다면 그들이 결국 지배적인
시스템이 될 것이다.”


CSRG 는 많은 중요한 기술적 성과를 만들어 냈다. 가상 메모리 공간과 TCP/IP 통합, FFS라는 파일 시스템, 소켓
기능을 구현했다. 4.4BSD에서는 Mach의 방식으로 가상 기억 공간을 변경했고 LFS 같은 중요한 개선도 추가했다.

CSRG 는 처음부터 만들기보다는 기존 코드를 찾아 통합하려 했다. 커널은 원래 벨연구소의 것이었다. 굳이 따지자면
TCP/IP 역시 원래 BBN의 코드라고 할 수 있고 VM은 Mach의 것을 이용했다. 이러한 점들은 정도의 차이는 있으나
다른 유닉스도 마찬가지다. Mach는 BSD의 API를 이용하며 썬의 NFS와 호환적인 코드 역시 Rick Macklem의
코드를 원용했다.

이러한 조용한 코드 통합을 바탕으로 BSD의 역사는 20년 이상 이어져 오고 있는 것이다. 그 뒤에는 BSD에 익숙한
수많은 노련한 개발자가 있다.

 


[BSD 가족의 등장]

1990 년에 윌리엄 졸리츠는 BSD를 386으로 포팅했고, Dr.Dobb's Journal(ddj.com)에 이 과정을 기고했다.
386/BSD라는 이 배포판에서 다른 BSD 시리즈가 탄생하기 시작한다. 우리가 사용하는 BSD 계열의 공개 유닉스는
모두 이 386/BSD에서 비롯된 것이다.가장 널리 알려진 BSD 배포판인 FreeBSD는 국내에도 사용자가 많다.

1992 년과 1993년, Jordan K. Hubbard, Rod Grimes와 Nate Williams는 386BSD 작업과 ‘Unofficial
386BSD Patchkit’으로 알려진 수정본의 릴리즈 작업을 했다. Patchkit 유지보수 작업량이 점점 늘어났기 때문에
세 사람은 실제 운영체제의 모든 기능과 버그를 수정하는 386BSD 0.5라는 새로운 프로젝트를 시작했다. 그러나
졸리츠는 1993년 초 이 프로젝트에 대한 공식적인 승인을 취소했고 그 당시 월넛 크릭(Walnut Creek)에서
근무하던 David Greenman은 FreeBSD라는 새 이름으로 patchkit에 근간을 둔 새로운 운영체제를 개발하자고
제안했다. Hubbard는 CD-ROM 배포 채널을 준비하기 위해 월넛 크릭과 협력했다. CD-ROM 릴리즈인 1.0은 1993년
12월 출시됐고 앞서 언급한 소송 문제로 Net/2에서 4.4BSD로 FreeBSD의 코드 기반을 옮겼다. 이를 바탕으로
중점적으로 업그레이드한 FreeBSD 2.0은 1994년 11월 출시됐으며 현재 FreeBSD 4.4가 공식 릴리즈다.

FreeBSD 관리와 개발 모델은 매우 안정되고 사용하기에 편한 시스템을 지향한다. x86 플랫폼으로 가장 믿을만한
운영시스템 중 하나로서 FreeBSD의 특징은 간결함과 안정성이다. 몇 개의 중요한 사이트가 FreeBSD로 운영된다.
FreeBSD의 강력한 애플리케이션 설치 도구인 포트 컬렉션은 다른 BSD 계열 운영체제인 NetBSD와 OpenBSD의
모델이 되기도 했다.

 

FreeBSD 의 개발 모델은 커미터(Committers)라는 200명이 넘는 프로그래머 그룹이 주축을 이룬다. 커미터들은
언제든 필요하면 공식적인 FreeBSD 소스 베이스에 수정을 할 수 있다. 커미터 선출과 논쟁의 결과 판정은 FreeBSD
코어팀이 담당한다. 2000년 10월, 커미터들 중에서 후보자와 투표자를 정해 코어팀을 선출했으며, 선출은 2년마다
있다. 최근의 FreeBSD 팀의 일부는 애플의 Mac OS Ⅹ 에 관련된 공동 작업을 하고 있다.
졸리츠나 어떤 사람들은 386BSD에 중점을 두었던 반면 또 다른 사람들은 이 작업의 행보에 불만을 나타내고 다른
개발에 들어갔다. 버지니아 테크에 근무하던 사람들은 386BSD와 막 릴리즈됐던 Net/2를 산업 현장에 적용해 BSD를
매킨토시로 포팅하기 시작했다. 이러한 개발 노력은 곧 Atari ST, Amiga, PC 플랫폼에까지 확대됐다. 최근의
NetBSD는 거의 모든 플랫폼에 이식할 수 있다. NetBSD의 이식성은 그 어떤 운영체제에도 뒤지지 않을 만큼 뛰어나다.
최신 서버 장비뿐만 아니라 DEC의 VAX 등의 구식 하드웨어도 지원한다.

NetBSD 가 많은 컴퓨터 장비에 이식되어 사용된다는 것은 매우 훌륭하게 디자인된 운영체제라는 증거다. 최근에는
중요한 임베디드 시스템 중 하나로 지목받고 있다. 다른 BSD의 장점에 대해 NetBSD는 몇 가지 장점이 더 있다.
당연한 말이지만 이식성과 보편성을 위주로 만들어진 NetBSD의 코드는 매우 간결하고 깔끔하게 유지된다.


◆ 이식성 : NetBSD의 장점을 이야기할 때 가장 먼저 거론되는 것이 뛰어난 이식성이다.

◆ 간결한 디자인 : 우수한 이식성과 더불어 NetBSD의 장점으로 빼놓을 수 없는 것이 바로 간결하고 깨끗한
디자인 구조다. 칩셋 관련 코드와 버스 관련 코드를 분리함으로써 이들의 조합에 따라 다양한 장치를 서로 다른
플랫폼에서 사용할 수 있다. 이 같은 구조는 확장성과 유연성 면에서 큰 이점을 갖는데, 개발자는 새로운 하드웨어
지원 코드를 기존 코드 기반과 쉽게 결합할 수 있어 개발 시간과 비용을 낮출 수 있고, 모듈화한 각 부분은 유지
보수가 용이해 사용자 측면에서도 더 높은 신뢰성을 기대할 수 있다.

◆ 우수한 성능 : NetBSD는 비교적 뛰어난 성능을 제공한다(자세한 내용은 http://www.netbsd.org 참고).

◆ UVM : NetBSD는 버전 1.4부터 모든 플랫폼에 걸쳐 오래된 Mach 스타일의 가상 메모리 시스템을 완전히
대체한 UVM을 사용하고 있다. UVM의 구조는 솔라리스와 Mach의 장점을 섞어 놓은 구조와 진보적 메모리 사용
계획을 갖추고 있다. UVM은 찰스 크래너가 설계한 것으로 그의 박사 논문 주제이기도 하다.
http://www.netbsd.org/Documentation/kernel/uvm.html에 가면 크래너의 위업을 찾아볼 수 있다.
크래너의 논문을 잘 살펴보면 효율적인 메모리 공간 관리에 대한 통찰력을 얻을 수 있다. 이 논문과 몇 개의
중요한 다른 글들을 http://www.linux-mm.org에서도 찾을 수 있다. FreeBSD의 Matt Dillon의 말처럼
리눅스는 역사로부터 배워가고 있다.

 

 

[뚫을 테면 뚫어봐, OpenBSD]

1990 년대 초, Theo de Raadt은 NetBSD의 SPARC 포팅을 책임지고 있었는데 Theo와 NetBSD 코어팀과의
NetBSD 개발 방향에 대한 이견 때문에 Theo는 그 일을 그만두고 OpenBSD를 만들게 됐다. OpenBSD는 1995년
11월에 릴리즈된 NetBSD 1.1부터 갈라져 나왔다. OpenBSD의 첫 릴리즈는 그 뒤 1년 후 1996년 10월에 나온
OpenBSD 2.0이었다.

 

OpenBSD 는 재빨리 가장 안전한 운영체제를 만드는 데 주력했다. Theo는 그가 캐나다에 산다는 점을 이용해 미
국방 수출법에 방해받지 않고 RSA, Blowfish와 다른 어떤 진보된 알고리즘을 운영체제에 탑재하기 시작했다
(현재 Blowfish 알고리즘의 수정된 버전은 사용자 패스워드를 암호화하는 용도로 기본적으로 사용된다).
그 외에도 OpenBSD의 개발자들은 안전한 통신을 위해 널리 사용되는 프로토콜인 OpenSSH 개발 방향을 잡아주었다고
한다.

 

OpenBSD 는 코드 감사 단계까지 발전했다. 1996년 초, OpenBSD 팀은 보안이 허술한 허점이나 잠재된 버그
등을 찾아 전체 운영 시스템을 한줄 한줄 분석하기 시작했다. 유닉스 시스템은 수십 년간 고정된 크기의 버퍼 사용
때문에 곤란을 겪어 왔다. 이것은 프로그래머에게 불편한 것은 물론이고 4.2BSD에서 지적된 것 같은 수많은 보안
허점을 야기했다. 임시 파일들을 잘못 다루어 생기는 보안 허점들도 쉽게 발견됐다.

OpenBSD 의 철저한 감사를 통해 FreeBSD, NetBSD, 시스템 Ⅴ에서 파생된 것들을 포함해 다른 운영체제와
관련된 보안 관련 버그들도 발견할 수 있었다. 어쨌든 이 과정을 통해 보안과 관련 없는 일반적인 코딩 실수도
찾아서 고칠 수 있었고 포트와 써드파티 응용 프로그램의 많은 버그가 이 과정을 통해 발견됐다. OpenBSD의
주요 목표는 안전과 보안인 것이다. 하지만 보안은 조금 불편한 것일 수도 있다.

 


[시스템 Ⅴ 이야기]

AT&T 와 미국 법무부의 법정 투쟁으로 1982년에 AT&T는 다시 컴퓨터 사업에 진출할 수 있게 됐다. 벨연구소에
있는 그룹은 유닉스 시스템에 대한 연구를 계속하고 외부 발매에 관한 관리는 AT&T 내의 다른 부서에서 맡게 됐다.
1982년에는 시스템 Ⅲ가, 1983년에는 시스템 Ⅴ가 발매됐다. 1984년에는 System Ⅴ Release 2(SVR2)가
발표됐다. 1989년에는 SVR3가, 1989년에는 SVR4가 발표됐다.

시스템 Ⅴ는 새로운 기능과 특징을 많이 갖췄다. 시스템 Ⅴ의 Region 영역 구조는 BSD의 가상 메모리 구조와
달랐으며 이른바 시스템 Ⅴ IPC도 구현됐다. 공유 라이브러리, 네트워크 프로토콜과 스트림 구조도 갖추게 됐다.

모든 상용 유닉스 중 가장 널리 퍼진 것은 시스템 Ⅴ다. 그리고 상업적으로 많은 벤더가 시스템 Ⅴ를 채택하기도
했다. 운영체제에 관심이 있는 사람들이 가장 많이 보는 책 중 하나인 M.Bach의 책은 SVR2를 기준으로 쓰였다.
이 때까지만 해도 유닉스는 아직 복잡하지 않았다. 그래서 독자들은 그 간명한 구조에 감탄을 하기도 하고 명료한
설명을 들을 수도 있었다. 아깝게도 M.Bach의 책은 SVR3를 거쳐 SVR4에 이르는 결정적인 과정을 서술할 수
없었다. 책을 쓸 당시에는 아직 SVR4가 발표되기 전이었다. 그리고 SVR2에서 SVR3와 SVR4로 이행하면서
유닉스의 진화 가지는 매우 복잡하게 뒤엉키기 시작하면서 AT&T가 아닌 다른 유닉스의 가지들도 복잡해지기
시작한다(<그림 8>). 아무튼 1985년까지는 BSD와 UNIX를 제외하고는 다른 계통이 없다.

 

AT&T 는 썬과 연합해 새로운 개념을 더 많이 도입한다. 이러한 변화는 SVR4에 잘 나타나 있다. 썬은 빌 조이를
필두로 무척 중요한 연구를 수행한다. 썬의 연구진들은 1980년대 중반에서부터 4.1BSD와 4.2BSD를 기본으로
했던 자사의 시스템을 과감하게 고쳐 나가면서 혁신적인 기능을 도입한다. SVR4 역시 이러한 SunOS의 피를 수혈
받으면서 새로운 진화를 거듭한다.

이 당시에 발표된 논문들을 보면 가장 극적인 논문들이 썬 마이크로 시스템과 Mach 팀을 중심으로 나타난다.
먼저 썬 마이크로 시스템의 업적들을 살펴보자. 이들은 솔라리스를 중심으로 발표된다.

 

[솔라리스라는 새로운 강자]

썬 의 시작은 1980년대 네 명의 팀으로 거슬러 올라간다. 썬이 현재의 입지에 오르게 된 것은 공동 설립자인 안드레아
벡톨샤임(Andreas Bechtolsheim), 비노드 코슬러(Vinod Khosla), 스콧 맥닐리(Scott McNealy), 빌 조이
등 네 명의 야심찬 첫 출발이 있었기 때문이다.

 

스탠포드 공대 대학원생이었던 앤디 벡톨샤임은 ‘스탠포드 대학 네트워크(Stanford University Network)’의
머리글자를 따서 ‘썬(SUN)’이라는 컴퓨터를 개발했다. 이 제품은 기성 부품으로 만들어졌으므로 성능은 매우 좋으면서
가격은 저렴했다. 나중에 빌 조이가 R&D 책임자로 합류하면서 더 좋은 결과를 얻을 수 있었다(앞서 설명했듯이 빌
조이는 버클리 대학에서 엄청난 인기를 얻은 BSD를 개발해 유명해진 사람이다).

 

썬은 설립 초기부터 매우 신속하게 움직였다. 1982년 봄 미국 캘리포니아 주 산타 클라라에 위치한 ‘특대형 차고’에서
제조를 시작했다. 공동 설립자들과 몇 명 되지 않던 썬의 직원들이 최초의 몇백 대분의 시스템을 대부분 손으로 직접
조립했다. 썬-1과 그에 이은 썬-2는 출시와 동시에 성공을 거두었으며 출시 첫해 올린 800만 달러라는 매출의 80%는
대학 시장에서 거둔 것이었다. 썬 제품에 대한 열광적인 반응 덕분에 썬은 우수한 인력들을 채용할 수 있게 됐다.

빌 조이는 BSD에서 이룩한 혁신을 썬에서도 계속 이어나간다. 썬의 엔지니어들은 기존 BSD를 포기하고 1984년
SunOS를 만든다. 운영체제 분야에서 이들은 유닉스에 혁신적인 변화를 만들어내는데, 대표적인 예들은 다음과
같다(다음에 나오는 자료들은 거의 고전이 된 논문이다. 관심이 있는 독자들은 참고하기 바란다).


◆ VFS와 vnode 인터페이스 : 여러 타입의 파일 시스템을 동시에 지원하도록 설계됐다.
유닉스 파일 시스템이나(UFS, s5fs) 다른 운영체제 파일 시스템도 지원한다. 이들은 일단 마운트되면 기존 파일
시스템과 동질적인 인터페이스를 제공해야 한다. NFS도 지원할 수 있어야 하고 중요한 파일 시스템의 통합적
인터페이스를 제공해야 한다. 이 시스템은 썬의 Kleiman에 의해 구현됐다. 설계에는 객체 지향 개념을 도입했다.
C 자체는 객체 지향이 아니지만 장치 드라이버의 구현 개념을 바탕으로 객체 지향적으로 구현했다.
이 구현은 유즈닉스에서 1986년에 발표됐다
(S. R. Kleiman. Vnodes: An Architecture for Multiple File System Types in Sun UNIX.
In USENIX Summer Conference Proceedings. USENIX Association, 1986).

◆ 가상 메모리 시스템의 혁신적인 발전이 Moran과 Gingell에 의해 이루어졌다
(R. Gingell, J. Moran, and W. Shannon. Virtual memory architecture in SunOS.
In Proceedings of USENIX Summer Conference, pages 81--94. USENIX, June 1987, J. Moran.
SunOS virtual memory implementation. In Proceedings of the Spring 1988 European
UNIX Users Group Conference, April 1988).

◆ NFS가 개발됐다. 또한 이를 위한 RPC들도 개발됐다(Sandberg, R., Goldberg, D., Kleiman, S.,
 Walsh, D. and Lyon, B., "Design and Implementation of the Sun Network Filesystem",
Proceedings of the Summer 1985 USENIX Conference, Portland, OR, June 1985, 119-130).

◆ 경량 프로세스(Light Weight Process)라는 이름으로 쓰레드를 구체화시켰다(J. Kepecs. Lightweight
Processes for UNIX Implementation and Applications. Proceedings of the USENIX Summer
Conference, pp. 299-308, Portland, Oregon, June 1985).


그 외에도 많은 혁신이 있었으며 이들 혁신적인 변화들은 SVR4로 통합된다. 사실 유닉스 역사상 고성능 서버를
만들기 위해 필요한 가장 근본적인 변화들은 이 당시에 창안된 것들이 많다. 불과 2-3년 남짓한 시기에 이러한
변화를 일으킬 수 있었던 썬의 저력은 지금 보아도 놀랍기만 하다. 그들이 지금도 가장 중요한 유닉스 개발사라는
사실은 당연한 것이다(후에 USL은 노벨로 매각되고 다시 칼데라로 넘어갔다. 썬은 노벨로부터 자신의 코드를 다시
사들였다).

 

이 들과 비슷한 시기에 마찬가지로 혁신적인 변화를 주도한 팀은 CMU에서 Mach 커널을 만들던 팀이었다. 이들의
접근은 전혀 달랐지만 유효한 것들이었으며 부분적인 성공과 실패를 뛰어넘어 BSD와 함께 Mach 기반의 커널들은
지금도 남아있다.

 

 

To be continued ...