Unix – Linux
1965년 MIT, AT&T 벨 연구소, General Electric에서는 Multics라는 실험적인 운영체제를 공동으로 개발하는 프로젝트를 진행하였습니다. 이 프로젝트는 멀티태스킹, 멀티유저를 지원하는 초기 형태의 *시분할 운영체제를 만들고자 했던 것이었습니다. 그러나, Multics는 초기의 설계 목표와는 다르게 비대해지고 쓸모없는 운영체제로 개발되어갔고, 프로젝트는 좌초되기에 이르렀다. 그러나, 이 프로젝트에 참여했던, 켄 톰슨과 몇몇 연구원들은 프로그래밍에 관한 연구를 효과적으로 수행하기에 적합한 환경을 만들어 보자는 의도에서 계속하여 운영체계 개발에 몰두 하였고, 그래서 탄생한 것이 초기 형태의 UNIX였습니다. **시분할 운영체제 많은 이용자가 동시에 단말기를 통해서 직접 컴퓨터와 대화하면서 각 이용자의 프로그램을 수행할 수 있게 하는 운영 체제
당시에는 하드웨어를 운영하는 프로그램을 그 하드웨어의 어셈블러로 작성하여 사용했는데, 유닉스 역시 미니 컴퓨터인 PDP-7에서 돌아가도록 만들어진 것이었으며, 어셈블리어로 작성 되어 있었습니다. 그러니 다른 기종에 이식하려면 그 기종에 맞는 어셈블리어로 다시 작성해야만 하는 불편을 겪어야 했죠. 이렇게 초기의 UNIX는 기계 의존적이며, 기종간에 호환성이 없는 그런 운영체제였습니다. 그리고 UNIX를 운영체제로 사용하던 PDP-7 또한, 많은 소프트웨어를 제공하지 못하는 상황이었습니다 최초의 유닉스가 이식되었던 DEC 사의 PDP-7
1973년 이러한 상황에서 데니스 리치(Dennis Ritchie)가 C언어를 개발함으로써, 어셈블리 언어로 되어 있던 UNIX는 C언어로 재 작성 되어 다시 태어나게 되었습니다. 이제 UNIX는 이식성과 호환성있는 시스템으로서 사용자들로부터 큰 반향을 일으켰고, 벨 연구소를 중심으로 유닉스 사용자 그룹이 형성되며 빠르게 버전업 되면서 퍼져 나가게 되었습니다. UNIX는 주로 연구와 학습을 목적으로 대학이나, 연구소등에 무료로 배포되었고, 이를 이용하는 프로그래머들 또한 자연스럽게 서로에게 필요한 프로그램을 공유하는 공동체 분위기가 조성되어 있었습니다. Source 프로그램이 공개되어 있었던 UNIX는 많은 대학들과 연구원들에 의해 연구되어 마침내 상업 시장에 진출하기에 이르렀고, Berkeley Unix(BSD), SYSV와 같은 계열로 분화되고, SunOS, OSF/1,AIX, HP-UX, Solaris, IRIX, SCOUNIX등과 같은 다양한 버전의 유닉스 운영체제들을 탄생시키는 모체가 되었습니다.
1980년 대 초반 UNIX는 당시 가장 인기 있는 기종인 DEC의 PDP-11과 VAX를 주축으로 발전되고 있었습니다. 한편, MIT의 인공지능 연구소에서는 PDP-10에 탑재하기 위한 시분할 운영체제인 ITS를 개발하였는데, 연구내용을 상업화 하려는 움직임이 있었고, 이로 인해 분열의 조짐이 보이면서, 몇몇 핵심 연구원들은 상업적인 것을 목적으로 하는 회사로 떠나 갔습니다. 때마침, DEC이 VAX와 PDP-11을 주력제품으로 삼으면서, PDP-10을 단종시킴으로써 더 이상 ITS의 개발은 이루어질 수 없었습니다.
켄 톰슨과 데니스 리치 & PDP-11
*GNU 프로젝트의 시작 1984년 1월 MIT 인공지능 연구소의 연구원으로 ITS 프로젝트에 참여하였던 리차드 스톨먼(Richard Stollman)은, 소스를 공개하지 못하도록 하는 분위기와 기술을 상업화 하려는 조류에 반감을 갖게 되었습니다. 그래서, 그는 새로운 시스템을 구상하게 되었습니다. 그 모델이 된 것은 UNIX였습니다. 그는 C로 작성된, 그리고 모두에게 공개된 UNIX 시스템을 위해 GNU(GNU is Not Unix) 프로젝트를 시작하게 되었습니다. 그는 GNU 프로젝트의 결과물들이, 자신이 몸담았던 MIT로부터 저작권과 관련한 어떤 제약을 받게 될 것을 우려하여, MIT 연구원 직을 사직할 만큼, 완전히 자유로운 운영체제를 원하고 있었습니다. *GNU’s Not UNIX [ GNU ] 무료 소프트웨어 재단(FSF)에서 개발하여 무료로 배포하고 있는 유닉스 운영 체계(OS) 호환 컴퓨터 프로그램의 총칭
1985년 GNU 프로젝트로 개발된 에디터인 Emacs에 대한 사용자들의 관심이 높아지면서 , 스톨먼은 GNU프로젝트 운영을 위해 FSF(Free Software Foundation,자유 소프트웨어재단)을 설립하였습니다. 개발이 진행된 프로그램들은 GNU프로그램들의 배포 라이센스인 GPL하에서 판매되었으며, 판매 수익은 프로젝트를 운영하는데 사용되었습니다. 모든 GNU프로젝트는 FSF를 중심으로 진행되어 갔습니다. 1990년 GNU 프로젝트는 거의 완성단계에 이르렀으나, 운영체제에서 핵심이 되는 커널이 빠져 있는 상태였습니다. 스톨먼은 Mach를 기반으로 한 커널인 'Hurd'라는 이름의 커널을 개발하기 시작하였으나, 이미 공개된 프로그램들에 대한 지원 등 여러 가지 이유로 GNU 커널의 개발은 좀처럼 진척되지 않았습니다.
리눅스의 등장 1991년 핀란드의 헬싱키라는 곳에서는 한 대학생에 의해 GNU시스템에 적합한 커널이 개발되고 있었는데, 이것이 바로 리누스 토발즈의 리눅스였습니다. 당시 21살의 대학생이었던 리누스는, 앤디 타넨바움(Andy Tanenbaum)교수가 학생들의 학습을 주 목적으로 개발한 미닉스(MINIX)를 사용하던 중, 유닉스와 호환되는 공개된 운영체제의 개발 계획을 MINIX사용자 모임에 발표하였습니다. 그는 개발 할 운영체제가 "단지 취미이며 GNU처럼 거대하거나 전문적인 것은 아니다"라고 프로젝트 초기의 의도를 밝혔습니다. 그래서, 초기의 리눅스는 이식성이 고려되지 않은, 다만 i386계열에서 운영되는 유닉스 호환 운영체제를 목표로 하는 프로젝트였습니다. 초기 버전 0.01은 가장 기본적인 커널만을 포함하고 있었으며, 실행조차 되지 않는 수준이었습니다. 얼마 후 리눅스 공식 버전인 0.02가 발표 되었는데, bash(GNU Bourne Again Shell)와 gcc(GNU C 컴파일러)정도가 실행될 수 있는 수준이었습니다. Shell - 사용자의 명령을 입력받아서 커널에 알려주는 역할을 수행한다
GNU와 함께 하는 리눅스 1992년 3월 리눅스는 0.95로 버전업 되었고, 인텔 x86칩에서 사용할 수 있었고, 그래픽 사용자 인터페이스가 추가 된 것이었습니다. GNU커널로 개발 중이던 Hurd의 개발이 순조롭지 않았던, 스톨먼과 FSF는 유닉스 커널과 호환 가능한 커널인 리눅스를 GNU시스템의 커널로 채택하기로 하였습니다. 리눅스는 강력한 GNU C 컴파일러인 gcc로 컴파일된 많은 응용프로그램들을 가지게 되었고, 둘의 결합으로 GNU시스템은 완전한 구조를 갖추게 되었습니다. 리눅스의 커널 부분은 리누스 주도 하에 계속 개발되었는데, 리누스는 최대한 확장 가능한, 즉 사용자에게 제어권이 있으며, 어떠한 인터페이스에도 종속되지 않도록 개발을 이끌고자 하는 의지가 있었습니다. 리누스는 그의 글을 통해서 리눅스의 성공의 원인을 다음과 같이 밝히고 있습니다. 리눅스의 성공은 훌륭한 설계 원칙과 좋은 개발 모델 때문이라고…
1994년 1년 6개월여 만에 버전 1.0 이 발표 되었고, 이 버전에는 네트워킹 기능 추가 되어 있었습니다. 이즈음, 리눅스에 확실한 수익모델이 있다고 판단한 밥 영과 마크유잉은 레드햇사를 설립하고, 최초로 자사에서 패키징한 레드햇의 최초 배포본을 발표하게 되었습니다. 1995년 리눅스는 더 이상 i386계열에서 돌아가는 학습용 운영체제가 아닌, 인텔, 디지털, 썬 스팍 프로세스에도 포팅됨으로 그 영역을 넓혔으며, 알파프로세서용의 64비트 리눅스도 등장하였습니다. 1996년 버전 2.0이 발표 되었는데, 여러 프로세서를 한 번에 사용할 수 있는 컴퓨팅 파워가 추가되었습니다.
1998년 1999년 2003년 ~ 현재.. 만여명의 프로그래머가 뉴스그룹에서 코드 향상과 테스팅에 참여하였습니다. SMP 기능의 공식 지원으로 최대 16개까지의 CPU장착 가능해지고, 최대 동시접속 사용자수 2048명까지 지원하는 시스템이 되었습니다. 2003년 ~ 현재.. 다양한 분야에 리눅스가 도입이 되고 있으며, IBM과 SUN이라는 거대 기업을 지원을 받으면서 Unix와 MS의 명성에 도전을 하고 있습니다. 국내 최초로 얼마 전 금융권에 리눅스를 도입하기 시작하는 등 국내에 다시 리눅스 열풍이 일어나지 않을까 하는 생각을 합니다. Smp - 대칭형 다중 처리라는 뜻의 컴퓨터 용어이다
리눅스의 특징 ① 진정한 다중 사용자, 다중 처리 시스템 ② 뛰어난 신뢰성, 동급 최고의 성능 ③ 폭넓은 하드웨어 지원 ① 진정한 다중 사용자, 다중 처리 시스템 ② 뛰어난 신뢰성, 동급 최고의 성능 ③ 폭넓은 하드웨어 지원 ④ 뛰어난 안전성과 보안성 ⑤ 다양한 배포판의 존재 ⑥ 다양한고 완벽한 네트워킹 기능 ⑦ 다양한 파일 시스템 지원 ⑧ 풍부한 응용 프로그램의 제공 ⑨ SMP와 NUMA지원 SMP - 대칭형 다중 처리 NUMA(Non-Uniform Memory Access) - 커널 2.6버전부터 ⑩다양한 사용자 지원 체계 Numa - CPU와 메모리가 한 Set를 이루는 것을 의미합니다