프로그래밍 일기 — Linux
또 다른 오픈소스(Open-Source)의 거대 산맥
지난 번 UNIX라는 운영체제에 대해 배웠다. 그렇다면 또 다른 오픈소스 운영체제의 양대산맥인 Linux에 대해서도 배우지 않을 수 없다. 과연 Linux는 무엇이며, UNIX와 어떻게 다를까?
Linux
리눅스는 UNIX의 오픈소스버전이다. 오픈소스란, 커뮤니티를 통해 개발된 소프트웨어를 말하며 누구나 소스코드를 열람하고 수정할 수 있다. 이러한 오픈소스의 특성때문에 Linux가 나올 수 있었고, Linux가 널리 쓰이게되면서 여러 버전이 나오기 시작했다. 이렇게 기존 원본에서 수정된 버전들은 배포(distribution, distro)라 일컫는데, Linux는 Rasberry Pi같은 매우 저사양의 하드웨어부터 슈퍼컴퓨터에 활용되는 고급 하드웨어까지 호환될 수 있는 여러 배포들이 만들어졌다. 바로 이러한 다양한 하드웨어와의 호환성 덕분에 Linux가 인기를 얻게된 것으로 보인다. Linux는 이전 글에서 소개한 POSIX 표준에 기반해 만들어졌으나, 사실 POSIX 인증을 받지는 못했다고한다.
Linux는 그동안 많은 배포들이 만들어졌는데, 그 중 가장 유명한 것들은 Debian, Redhat, Fedora, 그리고 Ubunto다. 이 배포들은 어떠한 어플리케이션에 활용되느냐에따라 다를 수 있으며, 완전한 오픈소스인지, 혹은 얼마나 자주 안정된 버전이 릴리즈되느냐에따라 다를 수 있다. 각 배포의 버전은 터미널 상의 맨 위에서 확인할 수 있다.
Kernel(커널)
커널이란 CPU, RAM 및 디바이스와 같은 컴퓨터 리소스를 다루는 운영체제의 부분을 말한다. 초기 커널의 버전은 Intel 80386을 타깃 하드웨어로하여 리누스 토발즈(Linus Torvalds)에의해 만들어졌다. Intel 80386은 1980년대와 90년대 대부분의 개인 컴퓨터에서 보편적으로 사용되던 표준 칩이었기 때문이다. 이후 커널은 여러 다른 칩 아키텍쳐에도 포팅되었다.
또한 Linux는 사용자에게 여러 서비스를 제공할 수 있는 표준 소프트웨어 유틸리티를 제공하는데, 명령어 라인 해석기(command line interpreters), 파일 유틸리티 및 에디터 등이 있다. 이러한 유틸리티들은 C언어로 작성되었으므로, 운영체제에 상관없이 C라이브러리를 지원하는 모든 디바이스에서 작동가능하다.
Linux 운영체제라 함은, 일반적으로 커널과 이러한 추가적인 도구들, 그리고 GNU라 불리는 라이브러리들을 말한다. 일부는 GNU/Linux라 일컫기도하는데, 일반적으로는 Linux를 커널과 유틸리티를 통틀어서 일컫는다. 대부분 Linux에서 제공하는 유틸리티들은 UNIX에서 제공하는 것들과 동명이면서 동일한 기능들을 제공한다. 단지 Linux에 맞게끔 재작성(rewritten)되었다는 차이가있다.
팁: 틀리기 쉬운 내용 정리
- Linux 커널은 아래를 포함한다
- 프로세스 관리
- 메모리 관리
- 하드웨어와의 상호작용
- 네트워크 관리
참조: