세상을 바꾼 역사적인 발명, 리눅스 커널
오늘은 많은 사람들의 눈에는 잘 보이지 않지만, 우리 삶 곳곳에 깊숙이 들어와 있는 리눅스 커널에 대해 이야기해보고자 한다.
커널이란 무엇인가?
운영체제는 여러 층으로 구성되어 있으며, 그중에서도 커널(Kernel)은 가장 중심이자 핵심이라 할 수 있다. 커널은 하드웨어와 애플리케이션 사이에 위치하여 하드웨어를 제어하고 관리하는 계층으로, 쉽게 말해 컴퓨터의 두뇌와 손발을 연결해 주는 역할을 한다. 우리가 흔히 사용하는 프로그램들이 직접 하드웨어를 제어할 수는 없기 때문에, 커널이 그 사이에서 번역가처럼 명령을 주고받는 것이다.
당신은 이미 리눅스를 사용중이다
리눅스 커널은 단순히 몇몇 개발자들만의 장난감이 아니다. Linux 재단에 따르면 현재:
- 퍼블릭 클라우드 컴퓨팅 워크로드의 90%
- 스마트폰의 82%
- 임베디드 기기(세탁기, 냉장고 등)의 62%
- 슈퍼컴퓨터 시장의 무려 99%
이 리눅스 커널 위에서 돌아가고 있다고 한다. 다시 말해, 우리가 매일 사용하는 스마트폰부터 과학자들이 연구에 활용하는 슈퍼컴퓨터까지, 수많은 시스템이 리눅스 커널의 힘을 빌리고 있는 셈이다.
오픈소스로 만들어진 강력한 커널
리눅스 커널은 오픈소스로 개발되었다. 즉, 누구든지 소스코드를 보고, 수정하고, 다시 배포할 수 있다는 말이다. 이 때문에 수많은 리눅스 기반 운영체제가 등장하게 되었고, 지금 우리가 사용하는 스마트폰의 안드로이드 또한 리눅스 커널 위에 구축되어 있다.
아래의 다이어그램 만 봐도, 전 세계적으로 얼마나 많은 리눅스 배포판이 존재하는지 확인할 수 있다. 이들은 리눅스 커널이라는 공통된 뼈대를 가지고, 다양한 목적과 철학으로 발전해 왔다.
리누스 토르발스와의 시작
리눅스 커널은 1991년, 핀란드의 대학생이었던 리누스 토르발스에 의해 개발되기 시작했다. 그는 단지 “좋은 유닉스 같은 운영체제를 만들고 싶다”는 취미에서 출발했지만, 그의 작은 시작은 전 세계 개발자들의 참여를 이끌어냈다.
처음에는 겨우 수만 줄의 코드였지만, 지금은 수천만 줄에 달하며, 역사상 가장 많은 기여자 수를 기록한 오픈소스 프로젝트가 되었다. 만약 여러분이 이 프로젝트에 참여하고 싶다면, C언어는 필수다. 왜냐하면 리눅스 커널의 98.3%는 C언어, 나머지 0.7%는 어셈블리어로 작성되어 있기 때문이다.
커널을 이루는 다섯 개의 기둥
리눅스 커널은 하나의 덩어리처럼 보이지만 내부적으로는 다양한 관리자들이 각자의 역할을 충실히 수행하고 있다.
- 태스크 관리자: CPU 자원을 추상화하여 태스크(Task)로 제공한다.
- 메모리 관리자: 물리적 메모리를 추상화하여 페이지나 세그먼트로 제공한다.
- 파일 시스템 관리자: 디스크를 추상화하여 파일로 제공한다.
- 네트워크 관리자: 네트워크 장치를 추상화하여 소켓으로 제공한다.
- 디바이스 드라이버 관리자: 프린터, 마우스 등 다양한 외부 장치와 소통을 담당한다.
이처럼 커널은 모든 물리적 자원을 인간이 이해하고 다룰 수 있는 추상적인 형태로 변환하여 제공한다. 이러한 추상화 덕분에 개발자는 복잡한 하드웨어의 작동 방식을 몰라도 프로그램을 만들 수 있는 것이다.
커널을 통해 본 컴퓨터 세계의 확장
이번 조사를 통해 나는 운영체제, 그중에서도 커널이라는 핵심 요소에 대해 더 큰 관심을 갖게 되었다. 커널 덕분에 우리는 메모리 할당, 멀티스레딩, 장치 제어와 같은 복잡한 과정을 직접 다루지 않고도 다양한 소프트웨어를 만들 수 있다.
리눅스 커널은 단순한 기술이 아니라, 전 세계 개발자들이 함께 만든 디지털 시대의 인프라다. 우리가 매일 사용하는 수많은 디지털 기기들이 리눅스 커널 위에서 돌아가고 있다는 사실을 기억하자. 커널을 이해하는 것은 컴퓨터 세계의 문을 여는 첫걸음이 될 수 있다.