Unix의 역사
공학을 전공한 사람이라면 에니악(ENIAC)이라는 이름을 들어본 적은 있을 것이다. ENIAC은 Electronic Numerical Integrator and Computer의 약자로, 1940년대 중반 개발되었으며 1955년까지 사용되었다.
ENIAC은 초기 전자식 범용 컴퓨터로 큰 의미가 있었지만, 프로그램을 바꾸려면 배선과 스위치를 조정해야 하는 등 사용 방식이 번거로웠고 한 번에 하나의 작업을 수행하는 구조라 오늘날 기준으로는 효율적이지 못했다. 참고로 “최초의 상용 컴퓨터”로는 보통 UNIVAC I을 든다.
1960년대 말, Dennis Ritchie(1941~2011)는 Multics라는 새로운 개념의 운영체제를 개발하기 위한 프로젝트에 투입되었다. 그러나 Bell 연구소가 이 프로젝트에서 철수하면서 그는 다시 연구소로 복귀하게 된다.
1969년.
Bell 연구소의 Dennis Ritchie는 Ken Thompson(1943~)과 함께 Multics의 개념을 참고하여 UNIX를 개발하게 된다.
UNIX는 DEC PDP-7 컴퓨터에서 Space Travel이라는 게임을 실행해 보려는 과정에서 시작되었으며, 당시 이름은 UNIX가 아니라 UNICS(UNiplexed Information and Computer System)였다.
기본 개념에는 계층적인 파일 시스템 구성, command 인터프리터(사용자가 명령을 내려 실행하는 프로그램), command가 새로운 process를 생성하여 실행하는 방식 등이 포함되었다.
참고로 PDP-7 컴퓨터는 DEC사의 Flip Chip 기술을 이용한 초기 컴퓨터 중 하나로, 1965년 72,000달러의 가격에 출시되었다.
어셈블리에서 C언어로
초기의 UNIX는 PDP-7 컴퓨터에 맞게 어셈블리어로 작성되었다. 따라서 다른 컴퓨터에서 이 UNIX를 사용하기 위해서는 해당 컴퓨터의 어셈블리어로 다시 작성해야 했다. 이후 UNIX는 이기종 머신에 이식하기 쉽도록 C언어로 다시 작성되었다. 보통 이 전환은 1970년대 초, 특히 1973년 무렵의 중요한 변화로 설명된다. 미국의 컴퓨터 과학자인 Dennis Ritchie는 C언어의 창시자이기도 하다.
이로써 UNIX는 하드웨어 의존성을 크게 낮춘 운영체제, 그리고 고급 언어로 작성된 대표적인 운영체제가 되었다.
1974년에는 Ken Thompson과 Dennis Ritchie가 UNIX에 대한 논문을 발표하면서 본격적으로 세상에 이름을 알리게 되었다.
BSD와 여러 UNIX 계열
UNIX는 대학과 연구기관으로 확산되었고, 그중 버클리 캘리포니아 대학교에서 배포한 BSD(Berkeley Software Distribution)가 큰 영향을 주었다. BSD 계열에서는 vi, C shell(csh) 같은 도구가 널리 쓰이게 되었고, 이후의 UNIX 문화에도 큰 흔적을 남겼다.
이후 Sun Microsystems가 설립되었고, BSD의 영향을 받은 SunOS가 개발되었다. SunOS 4.x 버전이나 Solaris 1.x 버전은 BSD 계열의 UNIX였는데, Solaris 2.x부터는 System V 계열로 전환되었다.
1977년에는 UNIX가 PDP 머신이 아닌 IBM S/370에 이식되었으며, 이후 IBM의 AIX, DEC의 Ultrix, HP의 HP-UX 등이 자리를 잡게 된다.
1980년에는 Microsoft로부터 PC용 UNIX 혹은 미니 UNIX라고 할 수 있는 XENIX가 발표되었다.
1983년에는 AT&T System V R1이 발표되었다. 이후 System V는 R4까지 발표되었다.
Linux의 등장
헬싱키 대학 전산과 대학원생이던 리누스 토발즈는 UNIX의 교육용 버전이라고 할 수 있는 MINIX를 이용하여 프로그래밍 수업을 받던 중 그 성능과 제약에 아쉬움을 느꼈고, 아예 무료 OS를 만들기 시작하였다.
그렇게 1991년 9월 17일 공개된 Linux 최초 버전은 아직 매우 미약한 수준의 커널이었다. 이후 0.02 버전이 등장하였으며 bash, GNU make, gcc, compress 등을 실행할 수 있게 되면서 점차 실제 개발 환경으로 성장하기 시작하였다.
여기서 UNIX와 Linux의 관계를 구분해 두면 이해가 쉽다. Linux는 UNIX의 소스 코드를 그대로 이어받은 운영체제는 아니지만, UNIX의 설계 철학과 사용 환경을 강하게 참고한 UNIX-like 운영체제다. 그래서 명령어, 파일 시스템 구조, 프로세스 모델 등에서 UNIX와 비슷한 면이 많다.
현재 Linux는 인류 역사상 가장 큰 규모의 협업 소프트웨어 프로젝트 중 하나가 되어 있다.
만일 Linux를 한 사람이 만들었다면 60,000년 동안 8,000,000,000달러(80억 달러)의 개발비가 들었을 것이라는 과거 추정도 있다. 정확한 산정 방식에는 차이가 있을 수 있지만, 그만큼 Linux 생태계가 방대한 협업의 결과물이라는 점은 분명하다.
오늘날의 UNIX와 Linux
요즘은 어떨까?
http://w3techs.com/technologies/details/os-unix/all/all에서 보니 2014년 5월 기준으로 UNIX를 사용하고 있는 사이트의 57%가 Linux라고 한다.
Linux를 UNIX의 하나라고 볼 수도 있고, 물론 서로 구별할 수도 있다. 엄밀히 말하면 Linux는 UNIX 인증을 받은 전통적인 UNIX라기보다는 UNIX-like 운영체제로 보는 편이 더 정확하다.
http://en.wikipedia.org/wiki/Usage_share_of_operating_systems에서는 서버용, 개인용 구별 없이 OS 마켓 쉐어를 볼 수 있다. 물론 전체적으로는 아직 Windows가 압도적이다. 다만 서버, 클라우드, 모바일, 임베디드처럼 영역을 나누어 보면 Linux와 UNIX 계열의 영향력은 여전히 매우 크다.