본문 바로가기
상식및정보

리눅스의 사용 환경과 구조

by h-man 2021. 9. 18.

리눅스는 1991년 핀란드의 리누스 토발즈가 리눅스 커널 0.1을 인터넷에 공개한 이후로 많은 해커들의 노력과 함께 발전해온 운영체제의 한 종류이다. 리눅스는 유닉스의 표준인 POSIX와 ANSI 등을 따르는 유닉스의 일종이다. 이에 따라 리눅스에서는 기본적으로 유닉스 명령어들을 지원하고 있으며, 유닉스의 표준 X 윈도우를 통해서 GUI 시스템도 지원하고 있다.

 

리눅스 최초 개발은 인텔의 80386에서 시작되었으나 리눅스가 인터넷에 공개되고 몇 년이 지난후부터는 Alpha, MIPS, ARM 등의 다양한 CPU를 지원할 수 있도록 포팅되었다. 따라서 리눅스는 데스크톱은 물론이고 임베디드, 안드로이드 같은 스마트폰과 스마트 TV, 웨어러블 디바이스, 스마트카 등의 다양한 사물인터넷의 플랫폼들도 지원하고 있다.

 

또 리눅스는 애플리케이션 프로그래밍을 위해 기본 에디터인 vi와 GCC 컴파일러, 그리고 자동화 도구인 make 유틸리티와 디버깅을 위한 gdb 유틸리티 등의 다양한 도구들을 제공하고 있다. 

 

리눅스의 시작

 

1991년 9월 17일, 핀란드 헬싱키대학에 다니던 리누스 토발즈(Linus Benedict Torvalds)는 취미 삼아 개발하던 커널을 인터넷에 공개한 바가 있는데, 이 커널이 버전 0.1이라고 불리는 리눅스 운영체제의 시작이다.

 

초창기의 리눅스는 앤드루 타넨바움(Andrew Tanenbaum)이 교육용으로 만든 미닉스(MINIX)라는 유닉스 커널을 기반으로 제작되었지만, 인터넷에 공개된 지 얼마되지 않아 수많은 해커들의 열광속에 미닉스를 능가하게 되었다. 이런 분위기 속에서 리눅슨느 더 빠르게 발전하면서 드디어 1994년에는 안정적인 리눅스 커널 1.0이 공개됐다. 그리고 2년 후인 1996년에는 리눅스 커널 2.0이 발표되었다. 리눅스 커널 2.0이 발표되면서 IBM, 컴팩(Compaq), 오라클(Oracle) 등의 회사들에서는 비로소 리눅스에 대한 공식 지원을 시작했다.

 

리눅스의 특징

 

리눅스는 기본적으로는 유닉스 운영체제의 특징을 가지고 있다. 여기에 더해서 리눅스는 동시에 여러 사람(multi-user)이 한꺼번에 사용할 수 있는 시스템이며, 또한 여러 프로그램을 실행할 수 있는 멀티프로세스(multi process) 환경도 지원하고 있다. 이외에도 리눅스는 여러 개의 CPU를 지원하는 멀티프로세서(multi-processor) 시스템을 지원한다.

 

리눅스는 오픈 소스로 공개로 개발되는 유닉스 계열의 운영체제이며 GNU 도구를 사용해서 개발되고 있다. 초기에는 인텔의 i80386에서 개발된 후 여러 시스템으로 포팅되었으며 1990년대 초부터 개발을 시작해서 1990년대 말까지 서버 시장에서 유닉스나 윈도우의 대안으로 자리 잡았다. 또 리눅스는 1998년에는 Dragonball 68k 시리즈에 처음으로 포팅하면서 시작한 Microcontroller Linux와 함께 2000년대부터는 임베디드 시장을 석권하기 시작하였다.

 

초기에 리눅스는 MMU(Memory Management Unit)가 있는 시스템에서만 설치가 되었으나 MicroController Linux는 MMU를 지원하지 않은 32비트 프로세서를 지원하게 됐고 2003년 12월에 출시된 리눅스 커널 2.6에서부터는 기본적으로 임베디드를 지원하면서 임베디드 시장뿐만 아니라 안드로이드 같은 모바일에서도 보다 광범위하게 사용되었다.

 

리눅스는 유닉스의 표준규정인 POSIX(Portable Operating System Interface)를 지원하고 있다. 따라서 리눅스에서는 다른 유닉스에서 개발된 애플리케이션을 비교적 쉽게 사용할 수가 있고 X 윈도우 같은 유닉스의 표준 GUI 시스템도 지원된다. 그리고 유닉스의 네트워크(BSD 소켓), IPC(Inter-Process Communication)나 프로세스 스케쥴링(시분할 처리), 버퍼 캐시(buffer cache)와 페이징(paging), 스레드(POSIX thread) 등도 지원한다.

 

리눅스의 구조

 

리눅스는 리누스 토발즈에 의해서 개발된 커널 자체를 의미하기도 하지만 다양한 GNU 소프트웨어가 합쳐진 운영체제를 의미하기도 한다. 운영체제는 기본적으로 컴퓨터 자원의 효율적인 사용성과 사용자가 보다 쉽게 사용할 수 잇는 편의성을 제공해야 하는데, 우분투와 같은 리눅스 배포판에서 리눅스 커널과 GNU 소프트웨어를 통해서 이러한 기능을 제공한다.

 

리눅스는 크게 커널, 디바이스 드라이버, 시스템 드라이버, 셸(Shell), 유틸리티, X 윈도우로 구분할 수 있다. 먼저 커널(kernal)은 중심부, 핵심이라는 뜻인데, 리눅스 커널은 실제 운영체제를 구성하는 기본적인 토대로서 시스템의 가장 기본적인 메모리나 프로세스 등의 하드웨어를 관리하고, 애플리케이션이 커널을 이용할 수 있도록 시스템 호출같은 API(Application Programming Interface)를 제공한다. 또한 커널은 하드웨어의 제어를 위한 디바이스 드라이버(device driver)를 포함한다.

 

이러한 커널 위에 GNU에서 개발한 다양한 리눅스 유틸리티와 glibc 같은 다양한 라이브러리들이 위치한다. 사용자는 이러한 유틸리티들을 통해서 리눅스를 사용할 수 있으며, 유틸리티는 커널에서 제공하는 시스템 호출 인터페이스를 통해서 커널과 통신할 수 있다.

 

리눅스에서는 콘솔(console)이나 터미널(terminal)을 통한 셸을 사용해 다양한 유틸리티를 실행할 수 있는데, 이러한 인터페이스를 CLI(Command Line Interface)라고 한다. 리눅스는 또한 MS Windows 같은 GUI 시스템도 제공하고 있는데, 이를 위해 유닉스의 표준 GUI 시스템인 X 윈도우를 사용한다.

댓글