3. OS이야기

Linux의 역사, 탄생 배경

OSSW(Open Source System SoftWare 2014. 5. 28. 11:17

Linux(LinuxIsNotUnix)

Linux의 이름에도 담겨있듯이 Linux의 역사를 알기위해선 Unix의 이야기를 빼놓을 수 없습니다.

 

 

[UNIX의 탄생]

 1965

MIT, AT&T벨 연구소, General Electric에서는 Multics라는 실험적인 운영체제를 공동으로 개발하는 프로젝트를 진행하였습니다.이 프로젝트는 멀티태스킹, 멀티유저를 지원하는 초기 형태의 시분할 운영체제를 만들고자 했던 것이었습니다.그러나, Multics는 초기의 설계 목표와는 다르게 비대해지고 쓸모없는 운영체제로 개발되어갔고, 프로젝트는 좌초되기에 이르렀죠.

 

그러나,이 프로젝트에 참여했던, 켄 톰슨(Ken Thompson)과 몇몇 연구원들은 프로그래밍에 관한 연구를 효과적으로 수행하기에 적합한 환경을 만들어 보자는 의도에서 계속하여 운영체계 개발에 몰두 하였고,그래서 탄생한 것이 초기 형태의 UNIX였습니다.

 

당시에는 하드웨어를 운영하는 프로그램을 그 하드웨어의 어셈블러로 작성하여 사용했는데, 유닉스 역시 미니 컴퓨터인PDP-7에서 돌아가도록 만들어진 것이었으며, 어셈블리어로 작성 되어 있었습니다. 그러니 다른 기종에 이식하려면 그 기종에 맞는 어셈블리어로 다시 작성해야만 하는 불편을 겪어야 했죠. 이렇게 초기의 UNIX는 기계 의존적이며, 기종간에 호환성이 없는 그런 운영체제였습니다. 그리고 UNIX를 운영체제로 사용하던 PDP-7또한, 많은 소프트웨어를 제공하지 못하는 상황이었습니다.

 

 1973

이러한 상황에서 데니스 리치(Dennis Ritchie) C언어를 개발함으로써,어셈블리 언어로 되어 있던 UNIX 80%의 C언어와 20%의 어셈블리어로 제작되어 다시 태어나게 됩니다. 이제 UNIX는 이식성과 호환성있는 시스템으로서 사용자들로부터 큰 반향을 일으켰고,벨 연구소를 중심으로 유닉스 사용자 그룹이 형성되며 빠르게 버전업 되면서 퍼져 나가게 되었습니다. Source프로그램이 공개되어 있었던 UNIX는 많은 대학들과 연구원들에 의해 연구되어 마침내 상업 시장에 진출하기에 이르렀고, Berkeley Unix(BSD), SYSV와 같은 계열로 분화되고, SunOS, OSF/1,AIX, HP-UX, Solaris, IRIX, SCOUNIX등과 같은 다양한 버전의 유닉스 운영체제들을 탄생시키는 모체가 되었습니다.

 

 

 

리눅스와 오픈소스 운동을 이야기하기 위해서는 반드시 언급하고 넘어가야 하는 인물이 하나 있는데, 괴짜 천재로도 불리는 리처드 스톨만(Richard Stallman)입니다.

 

[Ricahrd Stollman과 GNU프로젝트의 시작]

 1984 1

MIT인공지능 연구소의 연구원으로 ITS프로젝트에 참여하였던 리차드 스톨만(Richard Stollman), 소스를 공개하지 못하도록 하는 분위기와 기술을 상업화 하려는 조류에 반감을 갖게 되었습니다. 그래서, 그는 새로운 시스템을 구상하게 되었죠. 그 모델이 된 것은 UNIX였습니다. 그는 C로 작성된, 그리고 모두에게 공개된 UNIX시스템을 위해 GNU(GNU is Not Unix) 프로젝트를 시작하게 되었습니다. 그는 GNU 프로젝트의 결과물들이, 자신이 몸담았던 MIT로부터 저작권과 관련한 어떤 제약을 받게 될 것을 우려하여, MIT연구원 직을 사직할 만큼, 완전히 자유로운 운영체제를 원하고 있었습니다.

 

 1985

GNU프로젝트로 개발된 에디터인 Emacs에 대한 사용자들의 관심이 높아지면서, 스톨만은 GNU프로젝트 운영을 위해 FSF(Free Software Foundation,자유 소프트웨어재단)을 설립하였습니다. 개발이 진행된 프로그램들은GNU프로그램들의 배포 라이센스인GPL하에서 판매되었으며, 판매 수익은 프로젝트를 운영하는데 사용되었습니다. 모든 GNU프로젝트는 FSF를 중심으로 진행되어 갔습니다.

 

 1990

GNU프로젝트는 거의 완성단계에 이르렀으나, 운영체제에서 핵심이 되는 커널이 빠져 있는 상태였습니다. 스톨먼은 Mach를 기반으로 한 커널인 'Hurd'라는 이름의 커널을 개발하기 시작하였으나, 이미 공개된 프로그램들에 대한 지원 등 여러 가지 이유로 GNU 커널의 개발은 좀처럼 진척되지 않았습니다.

 

 

 

[Linus Torvalds 와 리눅스의 등장]

 1991

핀란드의 헬싱키라는 곳에서는 한 대학생에 의해GNU시스템에 적합한 커널이 개발되고 있었는데, 이것이 바로 리누스 토발즈(Linus Torvalds)의 리눅스였습니다. 당시 21살의 대학생이었던 리누스는, 교수가 학생들의 학습을 주 목적으로 개발한 미닉스(MINIX)를 사용하던 중, 유닉스와 호환되는 공개된 운영체제의 개발 계획을MINIX사용자 모임에 발표하였습니다. 그는 개발 할 운영체제가"단지 취미이며 GNU처럼 거대하거나 전문적인 것은 아니다"라고 프로젝트 초기의 의도를 밝혔습니다.

 

그래서 초기의 리눅스는 이식성이 고려되지 않은, 다만 i386계열에서 운영되는 유닉스 호환 운영체제를 목표로 하는 프로젝트였습니다. 초기 버전 0.01은 가장 기본적인 커널만을 포함하고 있었으며, 실행조차 되지 않는 수준이었습니다. 얼마 후 리눅스 공식 버전인0.02가 발표 되었는데, bash(GNU Bourne Again Shell) gcc(GNU C컴파일러)정도가 실행될 수 있는 수준이었습니다.

 

 

 

[GNU와 함께 하는 리눅스]

 1992

3월 리눅스는 0.95로 버전업 되었고,인텔 x86칩에서 사용할 수 있었고, 그래픽 사용자 인터페이스가 추가 된 것이었습니다.

 

GNU커널로 개발 중이던 Hurd의 개발이 순조롭지 않았던 스톨먼과 FSF는 유닉스 커널과 호환 가능한 커널인 리눅스를GNU시스템의 커널로 채택하기로 하였습니다. 리눅스는 강력한 GNU C 컴파일러인 gcc로 컴파일된 많은 응용프로그램들을 가지게 되었고, 둘의 결합으로 GNU시스템은 완전한 구조를 갖추게 되었습니다.

 

리눅스의 커널부분은 리누스 주도 하에 계속 개발되었는데, 리누스는 최대한 확장 가능한, 즉 사용자에게 제어권이 있으며, 어떠한 인터페이스에도 종속되지 않도록 개발을 이끌고자 하는 의지가 있었습니다. 리누스는 리눅스의 성공은 훌륭한 설계원칙과 좋은 개발 모델 때문이라고 밝히고 있습니다.

 

 Posted by 김소령