리눅스 커널과 쉘이라는 용어에 대한 설명과 관련 내용을 기술한 글.

아래의 내용은 당장 이해를 해야 할 것들은 아닙니다.
보고 이렇게 이루어져 있구나 하구 보고 넘어가면 될겁니다..

리눅스를 사용하다 보면 커널이나 쉘이라는 용어를 자주 사용하게 됩니다. 특히 커널 컴파일이란 것이 있어서 리눅스를 더 어렵게 느껴지게 만들기도 합니다. 쉘이란 것도 종류가 많고 쉘 프로그래밍이란 것도 있어서 리눅스를 사용하려면 기본적으로 쉘 프로그래밍을 해야되는 건가 싶기도 합니다. 이런 점들이 초보자에게는 부담스럽게 느껴집니다.

이런 리눅스의 커널과 쉘을 이해하는데 있어서 도스를 알고 있다면 쉽게 이해할 수 있을 것입니다.

▶커널은 도스의 IO.SYS나 MSDOS.SYS와 같은 기능을 하구요.

▶쉘은 도스의 COMMAND.COM 같은 역할을 합니다.

① 커널(Kernel)이란?

리눅스가 다른 운영체제에 비해 안정성이 뛰어나다는 얘기를 많이 하게 되는데 그 운영체제의 안정성과 밀접한 연관이 되는 것이 바로 커널입니다. 리눅스의 창시자인 리누즈가 한 일이 바로 유닉스의 커널을 PC에서 사용가능한 커널로 만들었다는 데에서 의미를 가지는 것처럼 커널은 리눅스라는 운영체제를 사용하게 만드는 근본이 되고 있습니다.

현재 리눅스는 커널은 'kernel.org'에서 지속적으로 업데이트되고 있고 리눅스 운영체제를 더욱 안정적으로 만들고 있습니다. 커널 컴파일이라는 것은 더욱 안전해진 커널을 사용하고 있는 시스템에 설치하기 위해서 꼭 필요한 작업입니다. 프롬프트에서 'rpm -q' 명령으로 확인할 수 있습니다. 업그레이드된 커널을 구하게 되면 커널 컴파일 과정을 거쳐서 현재 사용하는 리눅스의 커널을 업그레이드 할 수 있습니다.

② 커널과 쉘의 역할

도스에서 우리가 A라는 실행 파일을 B라는 실행 파일로 복사하기 위해서 다음처럼 입력하면 B.txt 파일이 하나가 더 생성이 됩니다.

COPY A.txt B.txt

COPY 명령은 COMMAND.COM에서 컴퓨터로 전달하는 것이구요. A라는 실행 파일을 B라는 실행 파일로 복사를 하는 것은 IO.SYS와 MSDOS.SYS가 하는 것입니다. 복사하는 과정은 눈에 보이지 않지만 IO.SYS에 정의되어 있는 open, read, write 등의 명령이 내부적으로 바쁘게 작동하여 B라는 실행파일이 생기는 거죠.

리눅스에서도 A.TXT를 B.TXT로 복사하는 다음 명령을 커널과 쉘이 담당하는 것은 도스와 비슷한 경우라고 볼 수 있습니다.

cp a.txt b.txt

도스는 외부 명령과 내부 명령이 있습니다. FORMA
T이나 FDISK 같은 명령은 외부에 실행 파일이 있어야 실행이 되므로 외부 명령, COPY나 DEL, MOVE 등은 파일이 없어도 실행되므로 내부 명령입니다. 이런 내부 명령은 COMMAND.COM에서 관리하듯이 리눅스에서는 쉘에서 관리합니다.

리눅스의 쉘 명령어로는 cd, pwd, exit 등이 있고, 커널 명령어로는 fork, open, write, read, exec, iocntl 등이 있습니다. 리눅스의 외부 명령은 ls, rm, cpp, addusr 이외에 다른 실행 프로그램들이 있습니다.

③ 쉘의 종류

리눅스에서 쉘은 여러 종류가 있고 쉘마다 특징이 있습니다. 쉘은 크게 본쉘(bash), C쉘(csh), 콘쉘(ksh)이 있으며, 한컴리눅스 OS 에서는 기본으로 본쉘(bash)을 사용하고 있습니다.

본쉘은 최초의 유닉스 쉘이었으며 현재 사용하고 있는 유닉스 시스템에서 대부분에서 본쉘을 사용하고 있습니다. 쉘 프로그래밍이 쉬운 반면 다른 쉘보다는 사용자와 상호 작용이 부족합니다.

C쉘은 본쉘보다 사용자와의 상호작용이 더 좋습니다. C 언어에 익숙한 사용자들이 쉘 프로그래밍을 C언어와 비슷하게 할 수 있지만 쉘 프로그래밍의 인터페이스는 본쉘보다 떨어집니다. 콘쉘은 본쉘과 C쉘의 단점을 제거하여 효율적이고 상호작용과 프로그래밍 인터페이스가 모두 좋은 쉘입니다. 미지 리눅스에서는 사용하는 본쉘(bash)은 콘쉘보다 뛰어난 기능을 가지고 있습니다.

이처럼 쉘을 구분하는 것은 인터페이스니 쉘 프로그래밍이니 복잡한 단어로 구분되기 때문에 초보자에게는 어렵고 골치 아픈 얘기입니다. 그러나 쉘은 현재 리눅스를 사용하는 환경을 정의하거나 기능을 바꾸는데 밀접한 연관이 되어 있으므로 나중에 리눅스 사용에 자신이 생기면 더 깊이 있게 접해볼 필요성이 있습니다.

④ 쉘 프로그래밍

쉘 프로그래밍은 도스에서 BAT 파일과 같은 역할을 합니다. 도스의 AUTOEXEC.BAT 파일 안에는 부팅할 때 어떤 것들을 실행하고 내부적인 세팅에 사용되는 명령어들을 모아서 한꺼번에 실행하는 것입니다.

유닉스는 도스보다도 많은 명령어들이 있고 하나의 작업을 하는데 많은 명령어를 일일이 타이핑하는 것은 비효율 적이기 때문에 쉘 프로그래밍으로 대치합니다. 많은 작업들을 처리하려다 보니 일반 프로그래밍에서 사용되는 언어적인 개념까지 도입되어 있습니다.

리눅스 초보자에게는 복잡한 내용이 될 것이기 때문에 여기에서는 생략하겠습니다. 전문적인 내용을 원하는 독자는 'man' 명령어를 이용하시거나 다른 책을 참고하기 바랍니다.

+ Recent posts