리눅스의 간략한 역사
소개
널리 사용되는 \Linux\는 종종 Linux 커널을 기반으로 구축된 운영 체제 배포 그룹을 의미합니다. 그러나 가장 엄격한 의미에서 Linux는 커널 자체의 존재만을 의미합니다. 전체 운영 체제를 구축하기 위해 Linux는 배포판에는 종종 GNU 프로젝트 및 기타 소스의 도구 및 라이브러리가 포함됩니다. 최근 더 많은 개발자가 모바일 애플리케이션을 구축하고 실행하기 위해 Linux를 사용하고 있으며, Linux에서 운영 체제를 실행하는 Chromebook과 같은 저렴한 장치의 개발에서도 중요한 역할을 했습니다. 커널 일반적으로 클라우드 컴퓨팅 및 서버 환경 내에서 Linux는 다음과 같은 몇 가지 실용적인 이유로 인기 있는 선택입니다.
- 배포판은 최신 상태로 유지되며 다른 개발자 커뮤니티에서 지원합니다.
- 광범위한 하드웨어에서 실행할 수 있으며 기존 시스템과 함께 설치됩니다(로컬 개발 환경에서 유용한 특성).
- 기존 리포지토리에서 중앙 집중식 소프트웨어 설치를 지원합니다.
- 자원 요구 사항이 낮습니다.
- 개발자가 애플리케이션 에코시스템을 구축하고 서버용 도구를 구축하여 높은 수준의 호환성을 제공할 때 가장 먼저 고려하는 사항입니다.
- 운영 체제 동작에 필요한 수정 사항을 유지합니다.
Linux는 또한 자유 및 오픈 소스 소프트웨어 운동에 기원을 두고 있으며, 결과적으로 일부 개발자는 윤리적 및 실용적인 이유로 Linux를 선택합니다.
- 일부 개발자에게 Linux 사용은 접근성과 표현의 자유에 대한 약속을 나타냅니다.
- Linux 커뮤니티는 또한 일부 개발자를 끌어들이는 곳이기도 합니다. 질문이 있을 때 그들은 이 커뮤니티에서 생성된 리소스를 참조하거나 많은 활성 관리자 중 한 명에게 직접 연락할 수 있습니다.
개발자 커뮤니티(및 그 이상) 내에서 Linux의 역할을 이해하기 위해 이 기사에서는 Unix를 통한 Linux의 간략한 역사를 간략하게 설명하고 일부 인기 있는 Linux 배포판에 대해 설명합니다.
유닉스의 뿌리
Linux는 강력한 다중 사용자 운영 체제 개발이라는 목표를 공유한 두 프로젝트인 Unix와 Multics에 뿌리를 두고 있습니다.
유닉스의 시작
Unix는 Bell 연구소의 Computer Sciences Research Center에서 Multics 프로젝트 반복을 통해 개발되었습니다. Bell Labs 및 다른 곳에서 Multics에 대해 작업하는 개발자는 단일 수준 스토리지, 동적 연결(실행 중인 프로세스가 주소 공간에 다른 세그먼트를 추가하도록 요청할 수 있는 해당 세그먼트의 코드) 및 계층적 파일 시스템입니다.
Bell Labs는 1969년에 Multics 프로젝트에 대한 자금 지원을 중단했지만 Ken Thompson과 Dennis Ritchie를 포함한 연구원 그룹은 프로젝트의 핵심 원칙을 계속 연구했습니다. 1972-3년에 그들은 시스템을 C로 재작성하기로 결정했고, 이로써 Unix는 독특하게 이식 가능하게 되었습니다.
Bell Labs(이후 AT&T)의 연구 개발은 계속되었으며 Unix System Laboratories는 Sun Microsystems와 협력하여 상업용 Unix 벤더가 널리 채택할 Unix 버전을 개발했습니다. 한편, 연구는 학계, 특히 University of California Berkeley의 Computer Systems Research Group에서 계속되었습니다. 이 그룹은 BSD(Berkeley Software Distribution)를 제작하여 다양한 운영 체제에 영감을 주었으며 그 중 다수는 오늘날에도 여전히 사용되고 있습니다. 두 가지 역사적인 BSD 배포판은 다른 제품 중에서도 macOS의 기반이 된 NeXT가 개척한 운영 체제인 NeXTStep과 Linux를 개발하면서 Linus Torvalds의 비교 기반을 형성한 교육용 운영 체제인 MINIX입니다.
유닉스의 주요 기능
Unix는 명확성, 이식성 및 동시성의 원칙을 지향합니다.
- 명확성: Unix의 모듈식 설계를 통해 기능이 제한되고 정의된 방식으로 실행될 수 있습니다. 파일 시스템은 통합되고 계층적이어서 데이터 조작을 단순화합니다. 일부 이전 버전과 달리 Unix는 수백(수천 개가 아닌) 시스템 호출을 구현하며 각 시스템 호출은 목표가 간단하고 명확하도록 설계되었습니다.
- 이식성: C로 Unix를 작성함으로써 Bell Labs 그룹은 Unix를 광범위하게 사용하고 채택할 수 있도록 했습니다. C는 메모리에 대한 낮은 수준의 액세스, 최소한의 런타임 지원, 언어와 기계 명령어 간의 효율적인 관계를 갖도록 설계되었습니다. C의 기반은 Unix가 적응 가능하고 다양한 하드웨어에서 실행하기 쉽다는 것을 의미합니다.
- 동시성: Unix 커널은 여러 사용자와 작업 흐름을 유지한다는 목표(Multics 프로젝트에서 공유)에 맞춰져 있습니다. 커널 공간은 여러 응용 프로그램을 동시에 실행할 수 있는 Unix의 사용자 공간과 구분됩니다.
리눅스의 진화
Unix는 개발자들에게 중요한 질문을 제기했지만, 초기 버전에서는 여전히 독점권을 유지했습니다. 따라서 역사의 다음 장은 개발자가 무료 및 오픈 소스 대안을 만들기 위해 내부 및 반대 작업에 대한 이야기입니다.
오픈 소스 실험
Richard Stallman은 Unix에 대한 비독점적 대안을 만들도록 영감을 받은 개발자들 사이의 중심 인물이었습니다. MIT 인공 지능 연구소에서 근무하는 동안 그는 GNU 프로젝트("GNU는 Unix가 아닙니다!\의 재귀적 표현) 작업을 시작했고, 결국 1984년에 연구소를 떠나 GNU 구성 요소를 자유 소프트웨어로 배포할 수 있었습니다. GNU로 알려진 GNU 커널 HURD는 1985년에 설립되어 현재 Stallman이 이끄는 자유 소프트웨어 재단(FSF)의 중심이 되었습니다.
한편, 또 다른 개발자는 Unix에 대한 무료 대안인 핀란드 학부생 Linus Torvalds를 개발 중이었습니다. MINIX에 대한 라이센스에 좌절한 후 Torvalds는 1991년 8월 25일 MINIX 사용자 그룹에 MINIX와 유사한 자체 운영 체제를 개발 중이라고 발표했습니다. 처음에 GNU C 컴파일러를 사용하여 MINIX에서 개발되었지만 Linux 커널은 1994년에 Torvalds와 함께 커널 버전 1.0을 출시한 핵심 개발자를 포함하여 빠르게 고유한 프로젝트가 되었습니다.
Torvalds는 자신의 커널과 함께 GNU C 컴파일러를 포함한 GNU 코드를 사용해 왔으며 많은 Linux 배포판이 GNU 구성 요소를 기반으로 한다는 것은 여전히 사실입니다. Stallman은 "Linux\라는 용어를 "GNU/Linux\로 확장하기 위해 로비를 했습니다. 그는 이것이 Linux 개발에서 GNU 프로젝트의 역할과 GNU 프로젝트와 Linux 커널을 육성한 근본적인 이상을 모두 포착할 것이라고 주장합니다. 오늘날 "Linux\는 종종 Linux 커널과 GNU 요소가 모두 있음을 나타내는 데 사용됩니다. 동시에 많은 핸드헬드 장치와 스마트폰의 임베디드 시스템은 종종 GNU 구성 요소가 거의 또는 전혀 없는 Linux 커널을 사용합니다.
리눅스의 주요 기능
Linux 커널은 Unix에서 많은 목표와 속성을 물려받았지만 다음과 같은 점에서 이전 시스템과 다릅니다.
- 핵심 구성 요소는 다른 운영 체제 구성 요소와 독립적으로 개발된 커널입니다. 즉, Linux는 전체 운영 체제를 구성하기 위해 다양한 소스(예: GNU)에서 요소를 차용합니다.
- 무료이며 오픈 소스입니다. 개발자 커뮤니티에서 유지 관리하는 커널은 GNU General Public License(GNU 프로젝트에서 FSF 작업의 파생물)에 따라 라이선스가 부여되며 다운로드 및 수정할 수 있습니다. GPL은 파생 작업이 원본 소프트웨어의 라이선스 조건을 유지해야 한다고 규정합니다.
- Unix와 유사한 모놀리식 커널을 가지고 있지만 필요에 따라 커널 코드를 동적으로 로드 및 언로드할 수 있습니다.
- 기존 Unix 구현과 달리 SMP(Symmetrical Multiprocessor)를 지원합니다. 이는 단일 운영 체제가 주 메모리를 공유하고 모든 I/O 장치에 대한 액세스를 공유하는 여러 프로세서에 액세스할 수 있음을 의미합니다.
- 커널은 선점형이며 Unix와 또 다른 차이점입니다. 이것은 스케줄러가 드라이버 또는 커널의 다른 부분이 실행되는 동안 컨텍스트 전환을 강제할 수 있음을 의미합니다.
- 커널은 스레드와 일반 프로세스를 구분하지 않습니다.
- 명령줄 인터페이스(CLI)를 포함하며 그래픽 사용자 인터페이스(GUI)도 포함할 수 있습니다.
인기 있는 Linux 배포판
오늘날 개발자들은 널리 사용되는 많은 Linux 배포판을 유지하고 있습니다. 가장 오래된 것 중 하나는 50,000개의 소프트웨어 패키지가 있는 무료 오픈 소스 배포판인 Debian입니다. Debian은 Canonical Ltd가 자금을 지원하는 또 다른 인기 있는 배포판인 Ubuntu에 영감을 주었습니다. Ubuntu는 Debian의 deb 패키지 형식과 패키지 관리 도구를 사용하고 Ubuntu의 개발자는 변경 사항을 Debian으로 다시 푸시합니다.
Red Hat, Fedora 및 CentOS 간에도 유사한 관계가 있습니다. Red Hat은 1993년에 Linux 배포판을 만들었고 10년 후 Red Hat Enterprise Linux와 GNU 프로젝트의 Linux 커널 및 요소를 활용하는 커뮤니티 기반 운영 체제인 Fedora로 노력을 분할했습니다. Red Hat은 또한 웹 서버용으로 널리 사용되는 또 다른 Linux 배포판인 CentOS 프로젝트와 관계를 맺고 있습니다. 그러나이 관계에는 유료 유지 보수가 포함되지 않습니다. Debian과 마찬가지로 CentOS는 개발자 커뮤니티에서 유지 관리합니다.
결론
이 기사에서 우리는 Unix에 있는 Linux의 뿌리와 그 정의 기능 중 일부를 다루었습니다. Linux 및 Unix 변형(FreeBSD 포함)의 역사에 대해 자세히 알아보고 싶다면 명령줄에서 정규식을 소개하는 것이 좋습니다.