리눅스의 개요
리눅스는 1991년 핀란드 헬싱키 대학의 학생 리누스 토발즈(Linus Benedict Torvalds)에 의해 만들어진 운영체제입니다. 당시 21세였던 리누스 토발즈는 앤디 타넨바움(Andy Tanenbaum) 교수가 학생들의 학습용으로 개발한 미닉스(MINIX)를 사용하다가, 유닉스와 호환되는 공개된 운영체제를 개발하겠다는 계획을 MINIX 사용자 모임에서 발표했습니다.
리누스 토발즈는 개발 초기 단계에서 자신의 운영체제가 "단지 취미일 뿐이며 GNU처럼 거대하거나 전문적인 것은 아니다"라고 밝혔습니다. 그의 목표는 i386 계열의 컴퓨터에서 작동하는 유닉스 호환 운영체제를 만드는 것이었습니다.
초기 리눅스의 특징
초기 리눅스는 이식성이 고려되지 않았고, 단지 i386 계열에서만 운영되는 유닉스 호환 운영체제를 목표로 하는 프로젝트였습니다. 리눅스의 초기 버전인 0.01은 가장 기본적인 커널만을 포함하고 있었고, 실행조차 되지 않는 수준이었습니다. 이후 리눅스 공식 버전 0.02가 발표되었으며, 이 버전에서는 bash(GNU Bourne-Again Shell)와 gcc(GNU C Compiler)가 실행될 수 있었습니다.
리눅스의 역사
리눅스의 역사를 이해하기 위해서는 먼저 UNIX와 GNU의 역사를 알아야 합니다.
UNIX의 탄생과 성장
- 1960년대 후반: 1965년, MIT, AT&T 벨 연구소, General Electric이 공동으로 Multics라는 실험적인 운영체제를 개발하는 프로젝트를 시작했습니다. 이 프로젝트의 목표는 멀티태스킹과 멀티유저를 지원하는 초기 형태의 시분할 운영체제를 만드는 것이었습니다. 그러나 Multics는 설계 목표와는 다르게 비대해지고 비효율적인 운영체제로 개발되어 프로젝트는 실패하게 되었습니다.
- 1970년대 초반: 이 프로젝트에 참여했던 켄 톰슨(Ken Thompson)과 몇몇 연구원들은 계속해서 운영체제 개발에 몰두하여, 초기 형태의 UNIX를 탄생시켰습니다. 당시 프로그램은 하드웨어의 어셈블러로 작성되었고, UNIX 역시 미니 컴퓨터인 PDP-7에서 어셈블리어로 작성되어 돌아갔습니다. 이로 인해 다른 기종에 이식하려면 해당 기종의 어셈블리어로 다시 작성해야 하는 불편함이 있었습니다.
- 1973년: 데니스 리치(Dennis Ritchie)가 C 언어를 개발하면서, 어셈블리어로 작성된 UNIX를 C 언어로 재작성하여 이식성과 호환성을 갖춘 시스템으로 만들었습니다. 이로 인해 UNIX는 벨 연구소를 중심으로 빠르게 확산되었고, 대학과 연구소 등에 무료로 배포되었습니다. 사용자들은 프로그램을 공유하는 공동체를 형성하게 되었습니다. UNIX는 연구와 학습 목적으로 사용되며, 상업적으로도 성공하게 되었고, 다양한 버전의 유닉스 운영체제가 탄생하게 되었습니다.
GNU 프로젝트의 시작
- 1984년 1월: MIT 인공지능 연구소의 연구원으로 ITS 프로젝트에 참여했던 리차드 스톨먼(Richard Stallman)은 소스를 공개하지 않는 분위기와 기술 상업화에 반감을 품고, 새로운 시스템을 구상하게 되었습니다. 그는 UNIX를 모델로 한 GNU(GNU is Not Unix) 프로젝트를 시작하였고, MIT 연구원 직을 사직하며 완전히 자유로운 운영체제를 목표로 하였습니다.
- 1985년: GNU 프로젝트의 운영을 위해 FSF(Free Software Foundation, 자유 소프트웨어 재단)를 설립하고, GNU Emacs 등의 프로그램을 GPL(GNU General Public License) 하에 배포하기 시작했습니다.
- 1990년: GNU 프로젝트는 거의 완성 단계에 이르렀으나, 핵심 커널인 'Hurd'의 개발이 지연되었습니다. 스톨먼은 Mach 기반의 커널인 Hurd를 개발하고자 했으나, 여러 가지 이유로 개발이 지연되었습니다.
리눅스의 등장
- 1991년: 핀란드 헬싱키 대학의 리누스 토발즈는 GNU 시스템에 적합한 커널인 리눅스를 개발하기 시작했습니다. 그는 MINIX 사용자 모임에서 유닉스와 호환되는 운영체제를 개발할 계획을 발표했고, 초기 리눅스는 i386 계열에서만 운영되는 유닉스 호환 운영체제를 목표로 했습니다. 초기 버전 0.01은 가장 기본적인 커널만 포함하고 있었으며, 실행조차 되지 않는 수준이었습니다. 이후 리눅스 공식 버전 0.02가 발표되었으며, bash와 gcc가 실행될 수 있는 수준이었습니다.
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년: SMP 기능의 공식 지원으로 최대 16개의 CPU를 장착할 수 있게 되었고, 최대 동시 접속 사용자 수는 2048명까지 지원되었습니다.
- 2003년 ~ 현재: 리눅스는 다양한 분야에 도입되고 있으며, IBM과 SUN 같은 대기업의 지원을 받으면서 Unix와 Microsoft Windows의 명성에 도전하고 있습니다.
리눅스의 특징
리눅스는 여러 가지 특징을 가지고 있으며, 이러한 특징들은 리눅스가 다양한 분야에서 널리 사용되는 이유가 됩니다.
- 진정한 다중 사용자, 다중 처리 시스템: 여러 사용자가 동시에 시스템에 접속하여 작업을 수행할 수 있습니다.
- 뛰어난 신뢰성: 리눅스는 높은 안정성과 신뢰성을 제공하여 서버와 같은 중요한 시스템에서 많이 사용됩니다.
- 동급 최고의 성능: 다양한 하드웨어에서 최적화된 성능을 제공합니다.
- 폭넓은 하드웨어 지원: 다양한 하드웨어 플랫폼에서 사용이 가능하며, 오래된 하드웨어에서도 잘 동작합니다.
- 뛰어난 안전성과 보안성: 보안에 중점을 두고 설계되어 시스템 보호에 강력한 기능을 제공합니다.
- 다양한 배포판의 존재: 사용자의 필요에 맞는 다양한 배포판이 제공되어 선택의 폭이 넓습니다.
- 다양하고 완벽한 네트워킹 기능: 강력한 네트워크 기능을 제공하여 서버와 네트워크 장비로 많이 사용됩니다.
- 다양한 파일 시스템 지원: Ext4, XFS, Btrfs 등 여러 파일 시스템을 지원하여 유연한 파일 관리가 가능합니다.
- 풍부한 응용 프로그램 제공: 오픈 소스 소프트웨어를 포함하여 다양한 응용 프로그램을 사용할 수 있습니다.
- SMP와 NUMA 지원: 다중 프로세서 시스템과 비균일 메모리 접근을 지원하여 고성능 컴퓨팅에 적합합니다. (SMP: 대칭형 다중 처리, NUMA: 비균일 메모리 접근)
이처럼 리눅스는 다양한 기능과 높은 안정성, 유연성을 바탕으로 서버, 데스크탑, 임베디드 시스템 등 다양한 분야에서 널리 사용되고 있습니다. 리눅스 커뮤니티는 활발한 개발과 지원을 통해 계속해서 발전해 나가고 있습니다.
댓글