Post

[Linux] Linux란?

[Linux] Linux란?

현재 세상에는 수많은 운영체제가 존재한다. Unix, Linux, window, android 등 너무 많아 읆기가 힘들 정도다. 이번 포스트에서는 이 수많은 OS들 중 역사가 깊고 OS발전의 발판을 마련하여 다양한 OS의 등장을 촉진한 대표적 CLI OS인 Linux에 대해 알아보고자 한다.


Linux 등장배경


1987년 네덜란드의 모대학의 교수는 운영체제 디자인을 가르치기 위해 만든 교육용 유닉스인 미닉스를 개발하였다. 그렇게 시간이 흘러 1991년, 핀란드의 모대학원의 대학원생이였던 리누스 토발즈는 교육용 유닉스인 미닉스를 접하게 되었고, 미닉스의 기능에 만족하지 못한 리누스 토발즈는 새로운 OS를 개발하기로 마음먹고 포직스에 호환되는 OS커널을 만들계획 아래에 OS개발에 착수한다.
그렇게 1991년 하반기, 토발즈는 리눅스 첫번째 버전을 세상에 내놓게된다.
그후 지속적인 개발을 통해 리눅스 성능을 향상 시키며 계속해서 업그레이드 된 리눅스 버전을 세상에 내놓았고, 이 덕분에 급속도로 전 세계에 리눅스가 퍼져나가며 리눅스 기반의 다양한 OS들이 등장하게 된다.

Linus-Benedict-Torvalds

리누스 토발즈


Linux 철학


리눅스는 인터넷을 통해 연결된 전 세계 개발자 그룹들의 개발노력으로 이루어진다. 리눅스 등장 이전의 대표적 OS인 Unix와 다르게 엄격한 정책 하에서 이루어지지않고, 특별한 정책 하에 개발자가 분배해서 개발을 진행하지도 않는다.
리눅스 시스템을 통합적으로 책임지고 개발하는 어떠한 조직이나 기업체가 존재하지 않으면서 하나의 잘 짜여진 틀에 의해 관리되는 조직 못지않게 유지되고 있으며,일명 리눅스 공동체는 리눅스와 관련된 다양한 소프트웨어의 개발을 위해 다양한 수단으로 대화한다. 그러면서 자연스레 많은 관례들이 생겨나며, 리눅스 커널도 이러한 방식으로 발전하게 되었다.

현재 리눅스 커널은 최초 개발자인 리누스 토발즈 주도하에 개발이 진행되고 있으며, 여러 개발자들이 개발자 소스를 리누스 토발즈에게 전달하면 토발즈가 소스를 테스트하여 유용하다 판단되면 커널에 포함시켜 공식 버전을 만들어 배포한다. 또한 리눅스 커널 이외에 많은 자유 소프트웨어와 공개 소프트웨어들도 최초 개발자가 중심이 되어 수많은 개발자들의 참여를 통해 개발이 이루어진다. 이렇게 개별 소프트웨어를 기반으로 여러개발자들이 협력하여 성능향상이나 또다른 소프트웨어로 발전시켜 세상에 공개하는 것이 Linux의 철학이다.


Linux 장단점과 기술적 특징

장점

  • 다중 사용자 및 다중 처리 시스템

    하나의 시스템에 다수의 사용자들이 동시접속하여 사용할 수 있고(Multi-User), 각 접속자들은 다수의 응용 프로그램을 실행할 수 있다.(Multi-Tasking)

  • 완전 공개 시스템

    OS의 핵심인 커널뿐 아니라, 같이 내장되어 배포되는 대부분의 응용 프로그램의 소스가 공개된 프로그램이다.

  • 뛰어난 네트워크 환경

    널리 쓰이는 이더넷, ATM, SLIP 등의 다양한 네트워크 환경을 지원하며 TCP/IP, AppleTalk 등 대부분의 네트워크 프로토콜을 지원한다.

  • 다양한 파일 시스템 지원

    자신 고유 파일 시스템만 지원하는 다른 OS들과 달리 리눅스의 고유 파일 시스템인 ext2, ext3 등과 더불어 저널링, 네트워크 파일등의 다양한 파일 시스템을 지원한다.

  • 뛰어난 이식성

    리눅스는 약간의 어셈블리와 대부분의 C언어로 작성되어있다. 따라서 C를 컴파일할 수만 있다면 어셈블리 부분만 새롭게 만들고 C언어 부분을 다시 컴파일함으로써 쉽게 다른 시스템에 이식할 수 있다.

  • 유연성과 확장성

    리눅스는 상업용 Unix의 모든 특성을 가지고 있으며, 유닉스의 표준인 포직스를 준수하고 있다. 따라서 공개된 유닉스 프로그램들은 큰문제없이 컴파일하여 사용할 수 있고, 커널, 장치드라이버, 라이브러리 등 리눅스의 원시코드를 쉽게 접할 수 있다. 또한 일반적인 유닉스 OS는 특정제품의 하드웨어에서만 한정되어 동작하도록 설계되어 있으나, 리눅스는 커널 소스가 공개되어 있어 다양한 채널을 통해 다양한 하드웨어 관련 지원을 받을 수 있다.

  • 뛰어난 안정성과 보안성

    리눅스는 커널 소스가 공개 되어있어 Window같은 폐쇄형 OS에 비해 보안상의 취약점이 쉽게 노출되지만, 공개용 소프트웨어를 지지하는 많은 개발자들이 상용 OS보다 빠르게 오류 수정과 보안 관련된 패치에 관여하고 있다.

  • 우수한 가격대 성능비

    리눅스는 기업환경에서 서버로 사용되는 유닉스를 x86 시스템에 최적화시켜 설계한 결과물이기에 PC급 서버에서도 엔터프라이즈급의 성능을 발휘할 수 있다.

  • 다양한 응용프로그램 제공

    리눅스는 OS의 핵심인 커널을 비롯하여 셸과 기본 명령어, 편집기, 개발도구, 게임등 다양한 응용프로그램을 제공하고 있다.

  • 다양한 배포판의 존재

    리눅스는 서버, 개발용 등 다양한 목적으로 사용 가능하며, 이에 따른 다양한 배포판이 존재한다. 국외에는 레드헷, 데비안, 우분투, 수세 등이 있고, 국내에는 한컴리눅스, SULinux 등이 있다.

단점

  • 기술지원의 부족

    리눅스에서 사용되는 대부분의 응용프로그램들은 비상업적 제품이다. 때문에 전 세계에 흩어져 있는 개발자들이 일일이 기술지원을 하는 것이 불가능하며, 이로 인해 리눅스를 사용하며 발생하는 문제점들은 모두 사용자의 몫이다.

  • 특정 하드웨어에 대한 지원이 부족

    리눅스가 다른 OS에 비해 이식성 및 확장성 등이 뛰어나지만, 여전히 특정한 하드웨어 설치가 어렵고 모든 플랫폼에서 작동하지는 않는다.

  • 사용자의 숙련된 기술 요구

    중요한 설정의 경우 명령어를 입력하거나 관련 환경설정파일을 편집기를 사용해 수정해야한다. 때문에 다른 운영체제 비해 사용자의 숙련된 기술이 요구된다.

기술적 특징

  • 계층적 파일 구조

    리눅스의 파일 구조는 root를 기준으로 하위 디렉터리들이 계층으로 구조화 되어있다.

  • 장치의 파일화

    장치란 하드 디스크, 키보드, 프린터, 화면 출력 장치 등 시스템에 설치된 여러 가지 하드웨어적 자원을 말한다. 리눅스는 이러한 장치들을 모두 파일화 하여 사용하며, 특정 하드웨어에 명령을 내리려면 해당하는 장치의 파일에 명령을 내리면 된다.

  • 가상 메모리 사용

    가상 메모리는 하드 디스크의 일부가 메모리처럼 사용되는 것을 말한다. 프로그램은 실행되기 위해 메모리 위에 올라가게되는데, 만약 메모리의 공간이 작아 실행시킬 수 없다면 가상메모리를 활용해 실행시킬 수 있다. 리눅스에서는 이러한 가상메모리 영역을 스왑이라고 부른다.

  • 동적 라이브러리 지원

    프로그램에서 특정 기능을 하는 루틴들을 모아놓은 것을 라이브러리라고 하며, 리눅스는 프로그램 개발 시 라이브러리중 필요한 루틴들을 받아 링크 시킨다. 이때 필요한 루틴들은 동적 공유 라이브러리를 활용하는데, 이러한 동적 공유 라이브러리는 실행 파일 내부에 넣어두지않고 프로그램을 실행할 때 가져다 사용하여 메모리의 효율성이 높다.

  • 가상 콘솔

    리눅스는 하나의 모니터를 장착한 시스템에 여러 개의 가상 화면을 제공해서 사용하는 가상 콘솔이 존재한다.

  • 파이프

    파이프는 프로세스의 통신을 위해 도입한 것으로 어떤 프로세스의 표준 출력이 다른 프로세스의 표준 입력으로 쓰이게 한다. 리눅스에서는 파이프의 기호를 ‘|’ 기호를 사용하고, 여러 개의 파이프를 구성하면 파이프라인이 된다. 즉, 파이프는 여러 명령을 조합할 때 사용하며 명령어와 명령어 사이에 ‘|’ 기호를 사용해 데이터를 흐르게한다.

  • 리다이렉션

    리눅스는 어떤 프로세스의 입출력을 표준 입출력이 아닌 다른 입출력으로 변경할 때 사용하는 리다이렉션이 존재한다. 리다이렉션은 출력 결과를 파일로 저장하거나 파일의 내용을 프로세스의 입력으로 사용하는 기법이다.


Linux 배포판


초기 리눅스는 OS의 핵심인 커널을 지칭하였으나, 리눅스 커널과 GNU의 라이브러리와 도구들이 포함되면서 하나의 OS로 발전하게 되는데 이를 GNU/Linux 라고 한다.
리눅스 배포판은 리눅스 커널 이외의 핵심적인 부분을 GNU정신을 바탕으로 반들어진 다양한 자유 소프트웨어와 공개 프로그램을 모아 하나의 OS로 만든 것이다. 리눅스는 누구나 패키징하여 자유롭게 배포가 가능하기 때문에 수많은 배포판이 존재하며, 기업 차원에서 배포하는 리눅스 (레드햇 리눅스, 수세 리눅스, 우분투 등)와 커뮤니티 차원에서 배포하는 리눅스(데비안, 젠투 리눅스 등)를 합해 세계적으로 약 300 여가지 이상의 배포판이 존재한다.


주요 Linux 배포판의 특징


  • 슬랙웨어

    최초의 리눅스 배포판인 SLS를 기반으로 디자인의 안정성과 단순성을 목표로 만들어졌다. 슬랙웨어는 최신의 다른 리눅스 배포판과 다르게 그래픽 기반의 설치 절차가 없고, 소프트웨어 패키지의 의존성도 자동으로 해결해주지 않는다. 또한 모든 설정이나 관리를 편집기로 직접 수정하는 형태로 되어있다.

  • 데비안

    전부 자유 소프트웨어로 구성된 유닉스 계열 운영체제로 대부분이 GNU GPL 라이선스 기반 하에 있고 데비안 프로젝트에서 1993년 9월에 최초 버전을 릴리즈하였다. 데비안은 자유 소프트웨어를 추구하는 GNU 프로젝트에 동참하는 수많은 개발자들이 데비안 프로젝트에 같이 동참하여 다양한 플랫폼을 지원하고 다양한 커널이 탑재된 운영체제를 선보였다. 초창기 리눅스 배포판에 속하는 데비안과 슬랙웨어는 모두 SLS기반으로 만들어 졌으나, 이 두가지 배포판의 차이점은 패키지 관리에 있다. 슬랙웨어는 사용자가 패키지를 새롭게 추가하거나 수정하기 어려운 반면, 데비안은 패키지 설치 및 업그레이드 등 패키지 관리가 매우 편리하다. 데비안은 초기에는 dpkg라는 패키지 관리 도구를 사용햐였고, 최근에는 기능이 확장된 apt를 사용하여 설치나 업데이트할 경우에 다른 패키지와의 의존성 확인과 보안 관련 업데이트를 자동으로 수행한다.

  • 레드햇

    레드햇은 리눅스 배포판 중 가장 인기 있는 배포판으로, 레드햇의 특징에는 쉬운 설치와 독자적인 패키지 관리가 있다. 레드햇 리눅스의 설치 과정은 텍스트 기반의 인터페이스뿐만 아니라 그래픽 사용자 인터페이스를 제공하여 초보자들도 손쉽게 설치 할 수 있다. 또한 RPM과 YUM이라는 패키지 관리 도구를 제공하여 손쉽게 설치, 관리, 업그레이드를 할 수 있다.

  • 우분투

    우분투는 데비안 GNU/Linux를 기반으로 만든 리눅스 배포판이다. 우분투의 가장 큰 특징은 그놈 데스크톱 환경기반의 그래픽 셸인 유니티를 사용하는데, 다른 리눅스 배포판에 비해 사용자의 편의성에 많은 초점을 맞추고 있다. 이러한 특징으로 개인데스크톱이나 노트북에서 인기있는 리눅스 배포판으로 손꼽히고 있다.


읽어주셔서 감사합니다. 😊

Reference
CentOS7으로 리눅스 마스터 1급 정복하기 - 정성재

This post is licensed under CC BY 4.0 by the author.