리눅스 - 리눅스 너 뭐 돼
처음 리눅스에 대한 소개를 읽으면 이런 말 저런 말 거창하게 쓰여있어 겁을 먹기 마련이다. 나도 그랬다.
하지만 우리는 MS 윈도우에 대해서는 두려움을 느끼지 않는다. 사용하고 있다고 의식조차 하지 못하고, 컴퓨터를 키면 자연스럽게 윈도우에 접속해 원하는 프로그램을 실행한다.
리눅스 또한 MS 윈도우와 비슷한 역할을 하는 운영체제일 뿐이다. 차이점이라면 윈도우는 GUI(그래픽 기반, 마우스 주로 사용), 리눅스는 CLI(명령어 기반, 키보드 주로 사용)로 이용한다는 점 정도가 있다. 리눅스의 조상인 유닉스는 워크스테이션(소규모 그룹)용이였으며, 리눅스가 유닉스의 PC판이라고 보면 된다.
리눅스는 다양한 배포판이 있는데 커널(내부 기능)은 거의 동일해서 무얼 이용해도 무방하다. 리눅스 하면 따라 나오는 레드햇, 우분투 등 무서운 이름들은 여러 배포판을 나타내며, 그냥 리눅스 버전 중 하나라고 생각하면 된다.
가상머신은 현재 쓰는 운영체제 내부에서 새로운 컴퓨터를 사용할 수 있게 해주는 프로그램이다. 예를 들어 현재 노트북에 서 윈도우를 사용 중인데, VMware라는 가상머신을 깔면 MS 윈도우 내부에서 리눅스를 사용하는 가상의 컴퓨터를 실행할 수 있게 된다.
또는 외부에서 제공하는 리눅스 서버에 원격으로 접속할 수도 있다. 터미널 기반으로 OpenSSH나 putty라는 프로그램을 사용한다.
리눅스 시스템 구조
커널 : '핵'이라는 뜻처럼 컴퓨터 사용에 핵심적인 기능(서비스)들을 담당한다. 종류는 프로세스(CPU) 관리, 파일(디스크) 관리, 메모리 관리, 통신 관리, 주변 장치 관리 등이 있다.
시스템 호출 : 말그대로 커널을 호출해 서비스를 요청하는 프로그램이라고 보면 된다.
라이브러리 : 시스템 호출에 관련된 함수들이 저장되어 있다.
쉘 : 명령어를 입력받아 수행해주는 프로그램이다. 쉘 프롬프트라고도 부른다. 쉘 명령어로도 조건문, 반복문 등을 사용해 반복 작업을 편하게 수행하는 프로그램을 작성할 수 있는데, 이 프로그램은 쉘 스크립트라고 부른다.
응용 프로그램 : 우리가 평소에 사용하는 프로그램들이다. 그림에서 볼 수 있듯이 응용프로그램이 커널의 서비스를 필요로 할 때, 그 디자인에 따라 시스템을 직접 호출하기도 하고, 라이브러리를 사용하기도 하고, 쉘을 통해 명령어를 전달할 수도 있다.
GNU는 뭐여
GNU란 리눅스에서 지원하는 유용한 시스템 프로그램들을 말한다. 리눅스와 뗄래야 뗄 수 없는 사이기 때문에 운영체제를 이야기할 때 같이 엮일 때가 많다. GNU 소프트웨어의 종류는 다음과 같은데, 주로 g로 시작한다.
gcc : 컴파일러
gdb : 디버거
gedit : 메모장
GNOME : 데스크톱 환경(Windows 같은 것)