Linux (리눅스) 란 ?

개발을 하다보면 Linux 라는 단어에 대해 수도 없이 들어봤을겁니다.

Linux가 운영체제인것 까진 그래도 알겠지만 정확히 뭐고 왜 사용하는지에 대해선 알지 못하기 때문에

이번 포스팅을 통해 Linux가 무엇인지, 왜 사용하는지?에 대해 간단히 알아보고자 합니다.

 


UNIX

리눅스를 알기 전 먼저 리눅스의 조상인 유닉스에 대해 알아야 합니다.

유닉스에 대해 간단하게 알아보자면,

1965년 MIT, AT&T 벨 연구소, General Electric 소속 개발자들이 모여 멀티태스킹(다중작업)을 지원하는 멀틱스(Multics)라는 운영체제를 개발하기 시작했습니다.

하지만 이 당시 멀티태스킹 작업은 너무나도 어려운 작업이였기 때문에 실패했었습니다.

그 이후 프로젝트를 만들던 직원들이 따로 나와 멀틱스 프로젝트를 이어받아, 하나의 작업이라도 제대로 하자! 라는 목표유닉스( UNIX ) 라는 운영체제를 기계어로 만들었습니다.

처음에 기계어로 만들어진 유닉스를 후에는 C언어로 개발되고 여러 곳으로 팔려가며 새로 개발되기 시작하는 등 여러 발전을 하게 되었고, 다중사용자, 다중작업이 가능하도록 발전하고 C언어 기반이기에 이식성이 좋아졌습니다.

현재는 대부분의 현대적 컴퓨터 운영 체제의 원형이 되었고, 윈도우를 제외한 macOS, iOS 등의 대부분의 운영 체제가 유닉스를 그 뿌리로 하고 있고, 개인용 데스크탑이나 임베디드용으로도 사용합니다.

 

하지만 그 당시 유닉스는 매우 비싼 비용을 지불해야 사용가능 해야 했기에 여러 사람들이 개발을 하기가 힘들었습니다.

그래서, 1984년 리처드 스톨먼(Richard Stallman)에 의해 GNU 프로젝트가 시작되었습니다.

GNU 프로젝트의 목표는 "모두가 공유할 수 있는 소프트웨어'를 만드는 것"이었습니다.

무료 소프트웨어를 지향하는 이 프로젝트는 오픈소스를 계속 업그레이드 해 나아가면서 더욱 개선되고 반복적으로 발전해 가는 것을 추구하였습니다.

 


Linux란 ?

이후에 1991년 필란드의 리눅스 토발즈라는 대학생이 유로인 UNIX를 GNU 시스템에 적합한 모든 사람이 사용할 수 있는 무료 OS인 Linux를 개발하였습니다.

 

리눅스(Linux)는 UNIX운영체제를 기반으로 만들어진 운영체제로,

리눅스(Linux)는 유닉스(UNIX)와 마찬가지로 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영 체제(NOS)입니다.

리눅스는 오픈소스이므로 누구든지 자유롭게 수정이 가능무수히 많은 버전의 리눅스가 있습니다.

이 리눅스의 계열들을 다 살펴보기엔 너무 많고 대표적으로 많이 사용하는

Redhat계열의 CentosOS, Debian계열의 Ubuntu 이 있습니다.

 

Linux의 특징
  • 다중 사용자 및 다중 처리 시스템

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

 

  • 완전히 공개된 시스템

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

 

  • 뛰어난 네트워크 환경

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

 

  • 다양한 파일 시스템 지원

프로그램과 자료를 저장하기 위해 리눅스 고유의 파일 시스템인 ext2, ext3, ext4 등을 사용한다.

그러나 고유의 파일 시스템만 지원하는 다른 운영체제와 달리 다양한 파일 시스템을 지원한다.

DOS의 FAT, Windows의 FAT32 및 NTFS, CD-ROM의 ISO 9660 등

 

  • 뛰어난 이식성

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

 

  • 유연성과 확장성

리눅스는 상업용 유닉스의 모든 특성을 가지고 있으며, 유닉스의 표준인 포직스를 준수하고 있다.

따라서 공개 유닉스 프로그램들을 컴파일해서 사용 가능하며, 리눅스의 원시코드를 쉽게 접할 수 있고 공개 된 커널 소스를 통해 다양한 지원을 받을 수 있다.

 

  • 뛰어난 안정성과 보안성

커널 소스가 공개되어 있어서 Windows와 같은 폐쇄형 운영체제에 비해 보안 취약점이 쉽게 노출되나, 빠른 피드백으로 보안 패치를 받을 수 있다.

 

  • 우수한 가성비

리눅스 시스템은 무료로 배포되고 있으며 기업용 시스템 또한, windows 시스템에 비해 저렴한 가격이 소요된다.

 


Linux의 구조

리눅스의 구조

하드웨어

컴퓨터 하드웨어는 본체 케이스, CPU ( 중앙 처리 장치), 모니터, 키보드, RAM (컴퓨터 기억 장치), GPU (그래픽 카드), 사운드 카드, 메인보드와 같은 컴퓨터의 물리적인 부품입니다.

 

커널 ( kernel )

컴퓨터 운영체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 통제하며, 운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공합니다.

프로그램의 실행 과정에서 가장 핵심적인 연산이 이뤄지는 부분으로 "코어, 리눅스" 라고 부릅니다.

하드웨어를 직접 제어하고, 프로세스 관리, 메모리 관리, 파일 시스템 관리 등을 수행하는 운영체제의 핵심으로

사용자가 실행시키는 응용프로그램과 하드웨어 사이의 관리자 역할을 수행하며

쉘과 연관되어 쉘에서 명령하는 작업을 수행하고 수행된 결과를 쉘로 보냅니다.

 

kernel(커널) 이란 ? 쉽게 알아보자

컴퓨터는 크게 2가지로 구분할 수 있습니다. 물리적으로 만질 수 있는 하드웨어(키보드, 모니터, 컴퓨터 본체와 본체 안에 있는 CPU, 메모리 등) 물리적으로 존재하지 않는 소프트웨어 그리고, 소

hstory0208.tistory.com

 

쉘 ( Shell )

쉘은 사용자가 입력하는 명령을 대신 해석해 커널에게 전달하여 실행시켜주는 프로그램입니다.

쉘은 사용자가 입력한 문자열을 해석해 해당 명령어를 찾아 커널에게 작업을 요청하게 됩니다.

그 다음 커널에서 작업을 수행한 결과를 다시 쉘로 보내면 쉘은 그 결과를 사용자에게 알려줍니다.

 

Shell 이란 ? 쉽게 알아보자.

Shell이란, 사용자의 명령어를 운영체제가 알아들을 수 있도록 해석하고 커널에게 전달합니다. 그리고 커널은 해석된 명령어를 받아 하드웨어에 직접적으로 명령을 내립니다. shell의 예시로 우

hstory0208.tistory.com

 

응용 프로그램 ( Application )

응용 프로그램은 운영체제에서 실행되는 모든 소프트웨어를 뜻합니다.

리눅스는 각 종 프로그래밍 개발도구, 문서 편집 도구, 네트워크 관련 도구 등 매우 다양한 응용프로그램을 제공합니다.

 


왜 Linux를 사용하는가 ?

 

무료 오픈소스

리눅스(Linux)는 무료 오픈소스 운영체제로, 완전 무료 정책이기 때문에 그 어떠한 금액도 필요로 하지 않습니다. 

 

우수한 보안성

리눅스 서버에는 관리자 이외의 접근이 제한됩니다.

또한 윈도우와 달리 바이러스, 멀웨어 등 공격을 잘 받지 않습니다.

오픈 소스라는 특징을 이용해 악질적인 해커들이 이를 이용해서 서버에 공격을 가할수도 있는데 너무 위험한거 아니야 ? 라는 생각을 할 수 있는데

오히려 전 세계 수많은 사람들이 리눅스 운영체제를 사용하는 만큼, 회사와 자산과 개인정보를 지키기 위해

발견된 취약점을 다 함께 빨리 고쳐나가기 때문입니다.

 

구조 안정성

리눅스(Linux)는 매우 안정적으로 충돌이 잘 발생하지 않습니다.

그 이유는 전 세계 수많은 기업 및 개발자들이 사용하는 무료 오픈소스 운영체제인 만큼, 굉장히 많은 위협사례와 버그(Bug)가 발생했을 것이고,

그러한 위협과 버그 또한 전부 사용자들에 의해 수정되고 픽스(Fix) 되었기 때문입니다.

아마 지금 이 순간에도 버그는 발생하고 있을 것이고, 한 편으로 해당 버그가 수정되고 있을지도 모릅니다.

 

반대로 윈도우(Window) 및 기타 유료 운영체제들은 오픈소스가 아니기 때문에 OS 소스를 직접 마주할 인원이 한정적이고,

설령 버그나 위협이 발견된다 하더라도 이를 수정하고 픽스할 인원 또한 한정적이기 때문에 업데이트가 느리다는 단점이 있습니다.

업데이트가 느릴수록 해당 위협에 노출되는 시간이 길어질 것입니다.

 

또한 리눅스(Linux)는 윈도우(Window)와 달리 업데이트 또는 패치 이후에 OS를 재부팅 할 필요가 없습니다.

기업에서 사용하는 웹서버는 주로 하루 24시간 365일 내내 가용중이어야 하는 경우가 많은데, OS가 재부팅된다면 웹서버를 다시 가동하고 서버 안정화를 시키는데 꽤 많은 시간을 들여야만 합니다.

많이 겪어봤겠지만 윈도우(Window)는 지 멋대로 업데이트를 진행하고 멋대로 OS를 재부팅하는 경우가 다반사이기 때문에 웹서버에 딱히 적합하지 않습니다. (물론 설정을 통해 막을 수 있다).

 

 


참고자료
https://onecoin-life.com/45