---------------------------------------------------------------------
유닉스 시스템의 역사
---------------------------------------------------------------------

글쓴이 : 라키시스 (hwicool1@hanmail.net)

이 문서는 유닉스 계열의 운영체제를 처음 접하는 분들을 위해 유닉스 시스템이 
어떻게 해서 만들어지게 되었으며, 어떤 형태로 발전해 왔는지에 대해 서술했다.
또한, 많고 많은 유닉스 시스템들 사이에서 초보자가 겪는 일을 조금이라도 덜어 
보고자 (필자는 처음 유닉스를 공부하려고 할 때 종류가 너무 많아서 매우 당황했던
경험이 있습니다. :-(.... ) 만들게 되었다.

주의 : 문서에서 부족한 부분이나, 잘못된 부분 등은 메일로 따끔하게 알려 주시면
       바로 고치도록 하겠습니다. (사실, 잘 모르는 부분은 다음에 더 공부해서 
       넣기로 하고, 얼버무렸거든요 ^^;)
       모쪼록, 이 문서가 처음 유닉스의 세계에 발을 들여놓는 초보자분들이 
       유닉스와 좀 더 친숙해 질 수 있는 발판이 되었으면 한다.

문서 버젼 : 0.1.0 (글쓴날 : 2000. 10. 23)

--------------------------------------------------------------------
순   서
--------------------------------------------------------------------
1. 유닉스 시스템의 탄생
2. 널리 퍼지는 유닉스 시스템
3. BSD
4. BSD 유닉스에 4.X 대 버젼만 있는 이유 :-)
5. 상업용 유닉스 시스템들의 출현과 SVR4
6. 그 이후의 이야기
7. 결론
8. 참고문헌 및 사족 :-P

--------------------------------------------------------------------
1. 유닉스 시스템의 탄생
--------------------------------------------------------------------
유닉스의 역사는 1960년대 중반으로 거슬러올라간다.
당시 AT&T 와 General Electric 사, Honeywell 사, MIT 공과대학에서 MULTICS 라는
프로젝트를 미 국방성(ARPA)으로부터 자금 지원을 받아서 수행하게 된다.
멀틱스 프로젝트의 목적은 끊이지 않고 돌아갈 수 있는 다중 사용자, 다중 프로세서,
다중 프로세스 기반의 시스템을 만드는 것이었다.
물론, 이 프로젝트에는 군사적인 목적도 있어서, 보안과 관련해서도 다중 레벨
보안의 개념도 지원할 계획이었다. 즉.. 그 당시로써, 이상적인 시스템으로 
계획되었고, 디자인되었던 시스템이었다. (결과적으로, 이 멀틱스 시스템을 모델로 
만들어진 유닉스 시스템에서도 비슷한 것을 볼 수 있다.)

1969년쯤, 멀틱스 프로젝트는 일정에 상당한 차질을 빚게 되었다. 너무 완벽한 
프로젝트를 만들어 내려고 했던 데다가 뭐.. 여러가지 이유가 있었던 모양이다.
어쨌든 이 멀틱스 프로젝트는 그 이후로도 캠브리지 대학 등에서 계속 수행되었던
모양이다. 거의 15년간이나 마무리 짓지 못하고 계속 수행되었던 모양이다.

그해(1969년), 유닉스 사용자라면 누구나 존경(?)하는 인물인 켄 톰슨(Ken Thompson)
이라는 사람이 당시 그는 AT&T 사의 연구원으로 있으면서, 멀틱스 프로젝트에 참가하고
있었는데, 사무실에 안쓰는 PDP-7 컴퓨터가 있는 것을 보고는, 이 컴퓨터에다가 
멀틱스와 비슷한 개념을 가진 운영체제를 한번 구현해 보게되었다. 여기에 재미를 
느끼게 된 동료들 중 함께 멀틱스 프로젝트에서 일했던 데니스 리치(Dennis Ritchie)와 
피터 뉴만(Peter Neumann) 이라는 사람도 같이 켄의 프로젝트에 동참하게 되고,
장난삼아 그 운영체제의 이름을 유닉스(Unix) 라고 지었다. 자세히 보면 Multi + ics가 
멀틱스 라면, Uni + ics 가 유닉스이다. :-)

멀틱스 프로젝트에서는 너무 많은 것을 구현하려고 했던 반면, 켄의 유닉스 
시스템에서는 단지, 프로그램을 실행시키는 데만 중점을 두었었다. 강력한 보안 시스템
등은 유닉스의 목표가 아니었던 것이다.
어쩌면, 이처럼 간단한 목표를 처음에 설정했던 것이 유닉스가 이토록 많이 사용되고,
널리 알려지는 데 일조를 한 것인지도 모른다. :-)

최초의 유닉스 버젼은 이처럼 단순한(?) 프로젝트 목표로 인해서 멀틱스보다 훨씬
일찍 사용가능하게 되었고, 켄과, 데니스, 그리고, 동료들은 유닉스를 Digital 의 신형
컴퓨터인 PDP-11 용으로 포팅(?)하게 된다.

--------------------------------------------------------------------
2. 널리 퍼지는 유닉스 시스템
--------------------------------------------------------------------
1970년대, AT&T 사의 연구진들은 자신들의 유닉스 시스템에 장난(^^;)을 치면서,
유닉스 시스템은 차츰 프로그래머의 꿈의 시스템(?)으로 발전해 나가게 된다.
하나의 기능만 하는 자그마한 프로그램들을 함께 사용함으로써 엄청난 일을 수행할 
수 있게 만드는 유닉스 시스템의 철학은 그때 당시 정립(?)되었다고도 볼 수 있다.
어쨌든, 그때 당시 사용자들(AT&T사의 개발자들)은 시스템을 잘 활용하기 위해서
이러한 작은 프로그램들의 사용을 극대화 했고, 또, 프로그램의 소스 코드도 수정해
가면서, 계속 유닉스를 발전시키게 된다.

그러던 중 1973년에 데니스 리치가 C 라는 프로그래밍 언어를 고안한 C 프로그래밍
언어를 사용해서 대부분의 유닉스 시스템의 코드를 다시 쓰게 된다.
이것은 유닉스 시스템에서 매우 중요한 의미를 가지는데, 바로, 다른 기계로 포팅이
매우 쉬운 C 언어로 만들어졌기 때문에, 처음 제작된 PDP-11 에서 뿐만 아니라 다른
기계에서도 돌아가도록 마치 산불처럼 번져나가게 된 계기가 된다.
(일설에는 데니스 리치, 켄 톰슨, 브라이언 커니건 등의 고안물인 C 언어와 유닉스
 시스템이 단지 만우절 장난(?)이었다고도 하는데... 믿을건 못됩니다 ^^;)

어쨌든, 1970년대에 유닉스는 계속 다른 기종의 컴퓨터들로 포팅되어 갔으며, 어느새
여러 대학들에서 널리 사용되는 운영체제가 되었다. 그리고, 그에 따라 자연스레 여러
대규모 컴퓨터 벤더들에서도 유닉스를 주목하기 시작했다. 실제로, 1977년경에 인터넷의
500개 가량의 사이트에서 유닉스를 운용하고 있다는 통계가 있으며, 그 중 125개는 
대학에서 운용되었다.

하지만 그 당시 유닉스가 운용되는 대부분의 기계들은 실험실 등에 위치해 있었는데,
당시의 네트워크 환경도 그랬지만, 대부분, 격리된 장소에서, 네트워크로의 접근 등이
허용되지 않는 환경이었다. 따라서 보안과 같은 요소가 거의 필요하지 않았다. 단지
몇명의 허가된 사용자들만이 시스템에 접근할 수 있었다. 그러면서, 유닉스의 사용자들은
계속적으로, 툴과 유틸리티들을 개발하고, 보다 나은 성능을 가지도록 향상시키고 
있었다.

--------------------------------------------------------------------
3. BSD
--------------------------------------------------------------------
지금처럼 유닉스에 네트워크 기능과 같은 요소가 포함되게 된 것은 1978년경이었다.
버클리대학이라고 많이 들어 보았을 것이다. University of California at Berkeley...
캘리포니아 주립대학... 리눅스에 관심을 가지고 있는 여러분이라면, BSD 라는 유닉스
운영체제에 관해서도 많이 들어 보았을 것이다. 이제, BSD 에 대한 이야기를 해 보겠다.

1970년대 말, 그때 당시의 많은 대학들에서 그랬던 것처럼 캘리포니아 주립대학에서도
유닉스 소스코드가 담겨 있는 테이프를 400달러에 구입하게 된다. (그 당시엔 테이프가
주된 보조기억장치였었나 보군요 (-: )
그런데, (다음에 나오는 이름들을 켄 톰슨, 데니스 리치의 이름과 함께 기억해 두기
바랍니다 ^^) 빌 조이(Bill Joy) 라는 학생과 척 핼리(Chuck Haley)라는 학생이 그 
소스 코드에 조금씩 수정을 가하기 시작했다. 1978년에 자기들이 수정한 코드로 만든
유닉스와 유틸리티들을 포함하는 배포판(?)을 만들어서 50$의 가격으로 30장(?)을 
출판하게 된다. 이것이 최초의 BSD 버젼의 유닉스 시스템이라고 할 수 있다.

빌이 만든(M$의 빌 게이츠가 아닙니다. -_-) BSD 시스템이 기존의 AT&T 의 유닉스와 
다른 점은 동시에 실행되고 있는 여러개의 프로그램간에 작업 전환을 하는 기능 -- 
요즘의 멀티 태스킹이죠? -- 255자까지의 파일이름의 지원이라든지, 하는 특징들이 
있었다. 하지만, 가장 중요한, 괄목할 만한 BSD 유닉스의 업적으로는 4.2 버젼부터 
나타나기 시작한 네트워킹 소프트웨어의 개발입니다.
BSD 에서 만든 (BSD : Berkeley Software Distribution) 유닉스의 네트워킹 프로그램들로
인해 유닉스를 사용하여 근거리 통신망(LAN)을 구축하는 것이 매우 수월해 졌으며,
급기야는 요즘에 이르러서는 '컴퓨터는 네트워크다' 라는 말까지 나오게 되었으며,
실제로, 필자도 네트워크에 연결되지 않은 컴퓨터는 상상도 못할 정도까지 이르게 
되었다.

어쨌든, 이러한 이유로 인해서, 버클리에서 개발된 유닉스의 버젼은 각종 연구소라든지
대학들에서 매우 광범위하게 사용되게 되었다.

--------------------------------------------------------------------
4. BSD 유닉스의 버젼에 5.x 대가 없고 4.x 대인 이유? :-)
--------------------------------------------------------------------
위에서 이야기한 것처럼 BSD 시스템이 영향력을 점점 늘려갈 무렵과 때를 같이해서
AT&T 사의 법적 제재(1956년에 미 연방 정부는 AT&T 가 컴퓨터 소프트웨어의 광고,
마케팅, 지원등을 하는 행위를 제한하는 규정(?)을 통과시켰다. 그래서 당시에는 AT&T가
전화와 관련된 사업만을 할 수 있었다. -_-; 제가 영어가 딸리는군여.. 저는 이런 뜻으로
이해했습니다.)가 효력을 잃게 되었고, 경영자들은 자사의 유닉스가 가지고 있는 
상당히 엄청난 시장의 포텐셜에 주목했다. 그리고는, 보다 나은, 세련된 운영체제로
유닉스를 발전시킬 것을 결정했다.
이것때문에 버클리 유닉스의 버젼번호에 재미있는 일이 벌어지게 된다.

버클리의 BSD 4.2 유닉스는 사실 5.0 으로 버젼번호가 매겨져야 했었다.
그러나, 4.2 버젼의 BSD 가 출시될 무렵, AT&T 의 컴퓨터와 관련된 법률적 제약이 
풀리게 되었고, AT&T 는 자신들의 UNIX 에 대한 상표권과 권리를 주장할 수 있게
되었다.
유닉스 운영체제가 매우 많은 곳에서 사용하는 운영체제가 되어감에 따라, AT&T 사의
경영진들은 BSD 유닉스의 영향력에 대해 우려하기 시작했고, 급기야, 유닉스에 대한
AT&T 의 권리를 유지하기 위해서 Unix Support Group(USG)이란 것을 설립해서 유닉스의
개발과 마케팅을 담당하도록 했다. USG 는 자신들의 새로운 버젼의 유닉스를 
AT&T System V 라고 명명하고는, "표준"으로 제정했다. AT&T 의 관계자들은 BSD 의 
유닉스를 "비표준" 이라고 이야기하곤 했다.

그런데, 옛날에 버클리가 AT&T 로부터 유닉스 소스 코드를 400달러에 구입할 당시에 
획득한 라이센스에 따르면, 버클리 대학은 AT&T 의 유닉스 코드에 수정을 가하고, 
수정판을 자유롭게 배포할 수 있었다.
그렇지만, 버클리에서 자신들이 수정한 버젼의 유닉스를 "5.0" 이라는 버젼 번호로
출시하게 되면, 그 버젼의 BSD 유닉스를 다른 대학이나 회사에 판매하기 위해서 AT&T 와
재계약해서 라이센스를 취득해야만 했었다.

그래서, 새로이 업그레이드된 BSD 의 운영체제 버젼이 "5.0" 이 아닌 "4.2" 로 번호가
매겨지게 되었다. (마치, 메이져 업그레이드가 아닌 마이너 업그레이드인양 위장(?)한
것이다)

--------------------------------------------------------------------
5. 상업용 유닉스 시스템들의 출현과 System V Release 4
--------------------------------------------------------------------
유닉스에 대한 관심도가 점점 증가함에 따라 유명 컴퓨터 벤더들이 속속 유닉스 시장에
뛰어들게 된다.
그 중 지금도 매우 유명한 업체로, Sun Microsystems 가 있는데, 썬은 버크리 대학의
전산과 졸업생 몇명이 모여 만든 업체이다. Sun 의 운영체제인 SunOS 는 버클리 유닉스
4.1c 를 기반으로 하여 개발되었다.
또다른 유명한 업체로써, Digital Equipment 사가 있는데, 그드은 BSD 4.2 에 기반한
유닉스 시스템 Ultrix 를 출시하게 된다.
그리고, 1980년대 중반 이후 유닉스 시스템들을 출시하게 된 업체들인 Data General 사,
IBM, HP, Silicon Graphics 등에서는 "표준"이었던 SysV 를 표준안으로 채택하여 유닉스
제품을 출시하게 된다.
또한, Santa Cruz Operation (SCO) 사에서 마이크로소프트와 함께 개발한 또다른 버젼의
유닉스인 Xenix 는 AT&T 의 System III 에 기반하고 있었다.

이처럼 유닉스 제품의 증가와 여러 벤더들의 참여로 인해 유닉스 버젼들 간의 호환성이
문제시되기 시작했고, 이에따라 벤드들은 자신들의 유닉스를 서로 통합하기도 했다.
예를 들면, Xenix 와 AT&T SysV 를 합쳐서, UNIX System V/386 등의 버젼이 1988년에
출시되기도 했다.
그러한 시도들 중 주목할 만한 것으로, 1988년 봄에 Sun Microsystems와 AT&T 가 서로
자사의 유닉스 버젼들을 통합하여 새로운 버젼인 System V Release 4 (SVR4)를 발표
했다. SVR4 는 기존의 System V 와 BSD 의 장점들을 합친데다가, 각각의 시스템 전용의
프로그램들도 수행할 수 있는 특징을 갖게 만들어졌다.
Sun 에서는 이처럼 SysV 와 BSD 의 장점이 결합된 새로운 버젼의 유닉스를 위해서
이제껏 개발해 오던 SunOS 를 버리고, Solaris 라는 이름으로 개발을 다헤 된다.

이와같은 AT&T 와 Sun 의 제휴에 위협을 느낀 다른 유닉스 벤더들은 SVR4 개발에서
제외되어서 불이익을 얻을까봐 1988년 5월에 IBM, Digital, HP 등이 주축이 되어서
OSF(Open software foundation)라는 것을 결성하게 된다.
OSF 의 산물로 나온 유닉스 시스템이 바로 OSF/1 이라는 시스템인데, 이 시스템의
커널은 처음에는 IBM 의 AIX 의 것에 기반했으며, (나중에는 카네기 멜론 대학의 MACH 
커널을 사용한다.) 유닉스 라이브러리와 유틸리티는 HP와 IBM, Digital 의 것들에
기반한 것이었다. 
그러나 이 OSF 는 개발의 완료가 늦어지게 되고, 그들중 몇몇 회사는 자기네 회사 고유의
제품을 생산하기도 한다. (예를 들면 IBM 의 AIX. 또한 다른 몇몇 회사는 SVR4 가 
나온 후에 SVR4 를 채택한다. 결국, AT&T 와 Sun 의 결별에 따라 OSF 가 만들어진
명분이 희미해지게 되었고.. 흐지부지되고 만다.)

아래에 각각의 유닉스 시스템이 영향을 받은 유닉스 정의(표준)을 적어 보겠다.

NEXTSTEP    - Mach, BSD
FreeBSD     - BSD
BSD/OS      - BSD
SunOS       - BSD
Linux       - BSD, System V.3
DEC OSF/1   - BSD, OSF/1
AIX         - BSD, OSF/1, System V.4
HP-UX 10    - BSD, OSF/1, System V.4
Solaris     - BSD, System V.4
IRIX        - BSD, System V.3, System V.4
SCO Unix    - System V.3


--------------------------------------------------------------------
6. 그 이후의 이야기
--------------------------------------------------------------------
이후에 AT&T 는 USL(Unix System Laboratories)을 노벨에 팔게 되고, 노벨은 또,
UNIX 의 상표권을 X/Open 컨소시엄에 넘기게 된다. 또, 유닉스의 소스코드는 SCO 에
1995년에 팔게 된다.

그러나 여전히 Digital Equipment 사는 Digital UNIX (이전에는 OSF/1)를 자사의 
워크스테이션드에 장착해서 판매해 왔으나... 디지탈의 주 분야는 서버/워크스테이션의
분야가 아니라 PC 분야이므로 크게 눈여겨보지 않아도 좋겠다.

또한, Solaris 도 지금은 엄청난 권위(?)를 가지고 있지만, 출시 초기에는 사용자들의
불만이 많았다고 한다. :-)

빌 조이 등이 졸업 후에 설립한 BSD Inc. 에서는 BSD 4.4 를 기반으로하여 BSD/OS 를
시장에 내놓았다. (방화벽 시스템으로 많이 사용된다.) 

또 PC 기반의 free 유닉스 운영체제인 Linux 가 1991년 버젼 0.1 을 시작으로 공개되기
시작하였고, BSD 4.3, 4.4 에 기반한 freeBSD 등도 출현하게 된다.

또한, 유닉스 계열의 운영체제들의 표준 (인터페이스, 라이브러리, 동작 특성을 정의한)
이 IEEE 에 의해 제정되고, ISO/IEC 9945 로 채택되게 된다. 이 표준을 POSIX 라고
한다.

--------------------------------------------------------------------
7. 결론
--------------------------------------------------------------------
오늘날의 유닉스 시스템은 위에서 언급한 매우 많은 표준들과 방식들에 기반해서 
발전해 왔고, 또한, 제안된 표준들에 의해서 비교적 비슷하고 공통적인 인터페이스를
가지게 되었으며, 여러가지 분야에서 common platform 으로써의 역할을 충실히 
수행하고 있다. 
오늘날 큰 의미가 있는 "Open systems" 운동의 리더로, 이러한 유닉스 해커들이
큰 공헌을 했음은 말할 필요도 없다. 물론 벤더들은 자신들의 이익 때문에 유닉스를
개발하고, 발전시켜 왔을 것이고, 그렇다 하더라도 그들이 유닉스를 발전시켜 왔음에는
틀림없다. 
만약 유닉스가 아니었다면, 지금 내가 즐겁게 사용하고 있는 리눅스 시스템도 없었을
것이다. (리눅스 시스템은 POSIX 를 철저히 준수한다. POSIX 또한 유닉스와 관련된
오픈 시스템 운동의 산물이다.) 

--------------------------------------------------------------------
8. 참고문헌 및 사족
--------------------------------------------------------------------
Practical UNIX & Internet Secyrity / Simson Garfinkel & Gene spafford / O'Reilly
천리안 리눅스 동호회 리눅스 공개강좌 자료집 / 안길성 외 / kldp

거의가 위에서 언급한 책에서 긁어오다시피 한 내용이군요 -_-;
혹시 이 글을 읽고 잘못된 점이나, 제가 잘못 알고 있는 점, 추가했으면 좋겠다 싶은
내용이 있으면, 제게 메일 주십시오.