Frenux 위키
Advertisement

어떤 설명을 원하시나요? 아무것도 모르는 초보자라면 그냥 Windows나 MAC OS X같은 운영 체제라고 설명할 수 있겠지요. 그러나 컴퓨터에 대해 조금 더 배운 사람에게 설명한다면, 운영 체제의 핵심 부분, 즉 커널이라고 이야기할 수 있습니다. 리눅스는 커널입니다. 운영 체제인데, 운영 체제의 핵심 부분입니다.

커널에 대하여[]

커널은 무엇일까요? 각종 자원을 관리하고, 하드웨어와 우리가 모니터를 접하게 되는 환경(UI라고 할 수도 있지요)을 이어주어 이 기계 덩어리를 실질적으로 쓸 수 있게 하는 역할을 합니다. 간단히 말하면, 이것도 자원 관리의 일부로 넣을 수 있지요. 여기에서 말하는 자원은 하드웨어, 파일 시스템, 프로세스 등이 있습니다.

아직 생소하다면, 인터넷으로 이 페이지를 보고 있는 것을 생각해보세요.(휴대 전화도 마찬가지입니다.) 인터넷 창을 띄우려면 인터넷 익스플로러건, 파이어폭스건, 구글 크롬이건 최소한 웹 브라우저라는 프로그램이 실행되어야 하지요. 프로세스는 실행 중인 프로그램입니다. 이 프로세스에게는 자원이 있어야 합니다. 즉 프로그램이 정상적으로 실행되기 위해 어떤 용량을 차지하고 앉아있어야 한다는 것이지요. (이 때 차지하는 용량이라 하는 것은 하드 디스크가 아니라 주기억장치, 즉 메모리라는 공간에서의 용량을 의미합니다.) 또한 인터넷에 연결되어 있어야 하고, 모니터와 같은 출력 장치도 있어야 합니다. 인터넷은 랜카드가 인식되어야 작동하지요. 랜카드나 모니터도 하나의 자원이며, 이것을 인식하는 것도 커널입니다. 그렇다면 마우스나 키보드와 같은 것은 어떨까요? 마찬가지입니다. 마우스나 키보드에서 클릭이 들어오면 커널은 이것을 인터럽트, 즉 누군가가 간섭하였다는 신호로 받아들입니다. 이것을 확인하는 것도 커널이지요. 그리고 CPU에서 연산을 시키도록 하여 그 내용물을 받아 출력시키는 것 역시 커널의 중재 없이는 불가능합니다. 즉 커널은 이 모든 자원을 관리합니다.

복잡한가요? 간단히 말해 그냥 운영 체제의 핵심입니다. 정 모르겠다면 우리가 일반적으로 알고 있는 운영 체제가 하는 일을 껍데기 빼고는 다 하고 있다고 이해해도 무방합니다. 여기에서 말하는 껍데기는 셸(Shell)입니다. 셸은 사용자의 명령을 해석하여 커널로 전달합니다. 이 셸은 그래픽 환경일수도, 명령어 창일 수도 있지요.

Windows, Mac OS X 등에도 당연히 커널이 있습니다. 최소한 커널 혹은 그 커널의 역할을 하는 무언가가 있어야 운영 체제로서 제대로 동작하거든요.

리눅스의 역사[]

리눅스의 역사에 대해 이야기하기 전에, 보통 UNIX의 역사와 GNU의 역사도 이야기합니다. (UNIX 역시 간단히 말해 운영 체제, 그 중에서 커널이라고 생각하면 됩니다.) 1969년 벨 연구소에서 데니스 리치와 켄 톰슨이 UNIX를 개발했지요. (재미있는 점은, 이 1969년이 리누스 토르발스의 생일이기도 하다는 것입니다.) 현재 많은 운영 체제가 UNIX를 사용하고 있습니다. Windows의 커널도 사실 UNIX의 초기 버전이며, Mac OS X 역시 (비록 Mach 커널이 가장 바탕이 되고 있지만) UNIX 중 하나인 BSD를 사용하고 있습니다. UNIX의 표준은 POSIX는 사실상 운영 체제의 표준으로 자리잡았습니다.

그리고 GNU(GNU is Not Unix - 재귀 약어)의 탄생 역시 리눅스를 이야기할 때 빠질 수 없는 건데, 리눅스라는 운영 체제가 GNU에 들어갔기 때문입니다. GNU는 소프트웨어의 상업화를 싫어하던 리처드 스톨만이 소프트웨어 개발 초기의 공동체 정신을 살리자면서 만든 것입니다. GNU의 소프트웨어들은 자유 소프트웨어입니다. 즉, 무료일 뿐만 아니라 소스 코드도 공개되어 있으며 누구나 이 소스 코드를 사용하고, 똑같이 GPL(GNU Public License)이라는 저작권으로 배포만 해 준다면 상업적인 목적으로 써도 상관없으며 얼마든지 수정도 가능합니다. (즉 개작하면 소스 코드를 공개해야 합니다.) 아이러니하게도 GNU는 UNIX 호환의 여러 소프트웨어를 만들었습니다. 그러므로 GNU is Not UNIX라는 말은 훼이크입니다 여러분!

이제 리눅스에 대한 이야기를 시작할 차례겠군요. 리눅스는 1991년, 핀란드의 헬싱키 대학에 다니고 있던 리누스 토르발스가 만들었습니다. 당시 UNIX에는 여러 가지가 있었는데, 여기에서 교육용으로 나온 MINIX라는 것이 이미 있었습니다. 리누스는 이 MINIX의 소스를 참고하지 않고 리눅스를 만들었습니다. 그리고 1991년 8월 25일, 유즈넷에 리눅스를 만들고 있음을 밝혔습니다.[1] 그리고 릴리즈는 9월에 이루어졌고요. 초기의 리눅스는 에뮬레이터 형태였다고 합니다.

후에 리눅스는 GNU 프로젝트에 들어갔습니다. 현재 오래된 리눅스 배포판으로 알려진 슬랙웨어, 데비안 등은 리눅스의 탄생으로부터 2년 후인 1993년에 만들어졌습니다. 그 후에 레드햇, 수세 등의 여러 상업적 목적의 리눅스 배포판도 나오기 시작했습니다. 현재 리눅스는 수많은 기여자들 덕분에 이렇게 클 수 있었습니다. :)

특징[]

기존에 UNIX가 있었음에도 불구하고 굳이 리눅스를 만든 이유가 있었을까요? 네, 있었습니다. 리눅스는 PC에서도 사용하기 좋게 나왔습니다. 또한 PC 뿐만 아니라 어디에나 무난하게 설치해서 사용하기 좋습니다. 그리고 GNU에 들어온 것을 보면 알 수 있지만, 저작권만 지키면 누구나 어떤 목적으로든 자유롭게 소스 코드를 보고 수정할 수 있어 덕분에 많은 배포판이 등장할 수 있었습니다. 이렇다 보니 소스 코드가 공개되지 않은 다른 주요 운영 체제보다 문제점 수정도 보다 빠르게 이루어질 수 있습니다.[2]

리눅스가 탄생하는 과정[3][]

리눅스 커널 소스가 약 3000개가 올라오면, 그 중 상급 개발자에게 올라가는 것은 달랑 6개입니다. 그리고 그 상급 개발자들이 소스를 검사하고, 최종적으로 리눅스를 개발한 리누스 토르발스에게 소스가 올라갑니다.

2012년 기준으로 리눅스 커널 소스는 특정한 단체의 이름을 걸지 않은 일반인들이 제일 많이 기여하고 있으며, 그 다음으로 레드햇, 인텔에서 많이 기여하고 있습니다. 구글은 9위를 차지하고 있고, 그 외에도 의외로 엔비디아와 오라클 등에서 기여하기도 하며 리눅스 재단은 19위를 차지하여 이 두 기업보다 순위가 낮습니다. (아마 리눅스 재단은 코드 기여보다는 관리 위주가 아닐까 싶습니다.)

리눅스는 이 소스들을 관리하기 위해 git(버전 관리 프로그램 중 하나)을 사용합니다. 본래 git은 리눅스 커널을 위해 개발되었지만, 현재는 많은 오픈 소스 프로젝트이 git을 사용하고 있지요.

주석[]

  1. 잡담: 대개는 이 날을 리눅스의 생일로 간주하는 것 같지만, 정작 리누스 토르발스는 그렇지 않은 것 같습니다. 9월쯤으로 생각하시더군요...
  2. 실제로 PNG에 버그가 있었을 때, 리눅스는 하루만에 수정되었지만 Windows는 1주일이 지나고 나서야 수정이 이루어졌다고 합니다.
  3. 실제로 Korea Linux Forum 2012에서 들은 내용입니다.
Advertisement