개인/리눅스

리눅스 시스템 구조와 특징

OmeGa2 2020. 1. 21. 15:04

리눅스의 기본 특징

초기 리눅스는 운영체제의 핵심인 커널을 지칭했으나 GNU 프로젝트의

라이브러리와 도구들이 포함되며 하나의 운영체제로 발전하게 되었습니다.

이렇게 만들어진 GNU/Linux는 오픈소스로 누구나 커널을 수정할 수 있으며

다양한 리눅스 배포판이 만들어졌는데요.

 

현재 상당수의 웹서버와 스마트폰, 임베디드, 슈퍼컴퓨터  등

세계적으로 가장 많이 사용되는 운영체제인 리눅스에는

인기의 비결이 되는 기본적인 특징이 여러 가지 있습니다.

 

#1. 다중 사용자 시스템

하나의 시스템에 다수의 사용자가 동시에 접속할 수 있으며

각 사용자들은 동시에 여러 개의 응용프로그램을 사용할 수 있습니다.

 

#2. 오픈소스

운영체제의 핵심인 커널과 내장된 응용프로그램이 완전히

공개되어있어, 누구나 용도에 맞게 수정해서 사용할 수 있습니다.

 

#3. 파일 시스템

고유의 파일 시스템만 지원되는 다른 운영체제와는 달리

리눅스 고유의 파일 시스템인 ext2 ~ ext4 과 DOS의 FAT, 윈도우의 FAT32

CD-ROM에서 사용되는 파일시스템 및 서버가 다운될 경우 복구가 가능한

저널링 파일 시스템도 지원됩니다.

 

#4. 이식성 / 유연성 / 확장성

리눅스에서는 대부분 C언어를 사용하고 있습니다.

즉 C언어 컴파일이 가능하다면 쉽게 다른 시스템에 이식이 가능합니다.

또한 유닉스의 모든 특성을 가지고 있어 유닉스 프로그램은

문제없이 컴파일이 가능하고, 리눅스에서 만들어진 프로그램은

다른 시스템에 이식하기 쉬우며 자유롭게 배포할 수 있습니다.

 

#5. 다양한 배포판

리눅스는 용도에 따라 서버, 개발용, PC용 모두 사용 가능하고 그에 맞게

다양한 배포판이 존재합니다. 여러 배포판들은 같은 리눅스 커널을 사용하지만

시스템 도구, 응용프로그램 등의 차이가 있으며 상용 배포판도 있지만

연습용이나 개인이 사용할 수 있는 무료 배포판도 있습니다.

 

 

 

 

 

리눅스의 구조와 시스템

리눅스에서 사용되는 기본 파일 구조나 기술적인 부분에서

용도에 따라 사용방법이 조금 나뉘기도 합니다.

 

#1. 계층적인 파일구조

기본적으로 최상위 디렉터리를 기준으로 루트 디렉터리(/)와

그 아래 하위 디렉터리 (usr, var, bin 등)로 구성된 트리구조를 가지고 있습니다.

 

#2. 하드웨어의 파일화

하드디스크나 키보드 등 시스템에 연결된 하드웨어 장비들을

리눅스 안에서는 파일 화해서 사용됩니다.

특정 하드웨어를 사용하고 싶으면 해당 파일에 명령을 내려야 합니다.

 

#3. 가상 메모리

하드디스크의 일부를 메모리처럼 사용하는 것을 말합니다.

일반적으로 하드디스크에는 데이터가 저장되며 RAM(메모리)는

작업할 수 있는 공간입니다. 하지만 RAM보다 용량이 큰 프로그램은

RAM안에서 실행할 수 없습니다. 이때 하드디스크의 일부를 RAM처럼 사용하는 것이

가상 메모리이며 이를 SWAP 메모리라고 합니다.

 

#4. 파이프라인

" | " 기호를 사용해서 특정 명령의 출력이 다른 명령의 입력으로

사용하고 싶을 때 "<명령어 1> | <명령어 2>" 형식으로

사용됩니다. 이는 "명령어 1" 의 출력을 "명령어2"의 입력으로 사용합니다.

 

#5. 리다이렉션

명령어의 입/출력을 다른 형식으로 변경할 때 사용되며

기호는 ">, >>, <, <<"가 있습니다.

출력 결과를 파일로 저장하거나, 파일의 내용을 사용해서 입력할 때

"명령어1 > 파일 1" 형식으로 사용합니다. 이때 "명령어 1"의 출력은 화면이 아닌

"파일 1"이라는 이름으로 출력되어 저장됩니다.

 

#6. 라이브러리 지원

프로그램에서 특정한 기능을 하는 파일이나 명령어 및 프로그램을 모아놓은 것을

라이브러리라고 부릅니다. 리눅스에서는 동적 공유 라이브러리를 지원해서

개발할 때 필요한 라이브러리를 프로그램에 넣을 필요 없이

프로그램을 실행할 때마다 가져다 사용할 수 있으므로 효율성이 높습니다.

 

 

 

 

 

리눅스의 단점

리눅스는 오픈소스로 공개된 비상업적인 제품이니 만큼 별도의

관리가 제대로 이루어지지 않을 수 있습니다.

따라서 사용할 때 문제점이나 부족한 부분에 대한

해결은 모두 사용자에게 달려있습니다.

 

또한 리눅스를 접해보지 않은 일반 사용자는 적응하기 힘듭니다.

텍스트 기반의 명령어로 중요한 설정을 하거나 환경설정의 편집 등

원하는 대로 수정하기 힘들고 별도의 공부가 필요합니다.

따라서 다른 운영체제에 비하면 접근성이 떨어지며 별도의 기술이 요구됩니다.

 

 

 

 

 

GNU (GNU's Not Unix)

유닉스가 아니다 라는 뜻의 GNU 프로젝트는 유닉스와 호환되면서

더 좋은 운영체제를 만들기 위해 시작되었습니다.

 

소프트웨어 개발자로 알려진 리처드 스톨먼을 주축으로 

자유 소프트웨어 개발을 위한 프로젝트로 시작해 리눅스가 등장하면서

GNU의 C 컴파일러인 gcc, 문서편집기 emacs와 데스크톱 환경인 GNOME 등

다양한 응용프로그램을 만들었으며 이후 상업화에 반대하면서

우리는 GNU의 소프트웨어들을 자유롭게 사용할 수 있게 되었습니다.