본문으로 바로가기

리눅스 커널, 쉘(Shell)

category 프로그래밍 & IT/Linux 2017.04.05 01:08

리눅스 커널(Linux Kernel)


Linux 커널은 하드웨어 제어를 담당하는 OS의 핵심 기능이다. 커널은 C언어와 어셈블리 언어로 구성 되어 있으며 디바이스 관리와 프로세스 관리, 메모리 관리를 담당한다.


- 디바이스 관리


리눅스 커널은 메모리, CPU, 디스크, 입력/출력 디바이스 등의 하드웨어를 디바이스 드라이버 소프트웨어로 제어해 준다.


- 프로세스 관리


리눅스는 명령을 실행할 때에 파일에 저장되어 있는 내용을 읽어 메모리에 올린 뒤에 이를 실행한다. 이런식으로 실행된 프로그램을 "프로세스" 라고 한다.

OS구동이나 소프트웨어를 실행하면 여러 프로세스가 동시에 올라와 진행된다. 리눅스 커널은 이렇게 동시에 진행되는 여러 프로세스에 PID 식별자를 부여해 관리하고, 실행에 필요한 CPU 자원을 적절하게 할당해 주는 역할을 한다.


- 메모리 관리


프로세스가 동작할 때 메모리상에 있는 프로그램과 데이터가 함께 실행된다. 리눅스 커널은 이러한 프로그램과 데이터를 물리적인 메모리 자원에 적절하게 분배해 주는 역할을 해 준다. 또한 실행이 끝난 프로세스의 경우 리눅스 커널에서 메모리 영역을 반납하는 기능을 수행한다.

만약 메모리의 제한된 물리적 용량을 넘어서게 되면 하드디스크와 같은 보조기억장치의 가상 메모리 영역을 사용하게 된다. 이러한 가상 메모리 영역을 스와프라고 하는데, 리눅스 커널은 실제 주기억장치의 메모리에서 사용 빈도가 낮은 데이터를 스와프로 빼고 스와프상에 있는 자주 사용되는 데이터를 메모리에 돌려놓는다.

이를 스와프 인 - 스와프 아웃 이라고 한다.



리눅스 쉘(Shell)


리눅스 커널을 사용자가 조작하기 위해 쉘(Shell)을 사용한다. 쉘은 사용자가 커맨드에 입력한 명령을 받아 리눅스 커널에 전달해 준다.



쉘은 다음과 같은 범위의 기능을 수행할 수 있다.


- 애플리케이션 실행/정지/Restart

- 환경변수의 관리

- 커맨드 히스토리 관리

- 커맨드 실행 결과 표시, 파일 출력


리눅스 쉘에서 실행하려는 명령을 텍스트 파일로 저장한 것을 '쉘 스크립트' 라고 한다. 쉘 스크립트는 일반적인 프로그래밍 언어와 같이 조건문이나 반복문 등의 제어 구문을 사용 가능하다.


리눅스에서 사용하는 쉘의 종류는 여러 가지가 있다. default로 이용되는 쉘은 /bin/sh에 심볼릭 링크로 설정되어 있다.

리눅스에서 자주 사용하는 쉘은 다음과 같다.


- bash : 커맨드 히스토리, 디렉터리 스택, 커맨드 변환, 자동보완 기능 등을 지원하는 고성능의 쉘이다. 대부분의 리눅스 시스템과 Mac OS X에 표준 쉘로 적용되어 있다.


- csh : C언어와 비슷한 쉘이다. 주로 BSD계의 OS에서 사용된다.


- tcsh : csh를 개선한 버전의 쉘이다. 커맨드, 파일명 등에 대한 자동 보완 기능이 추가되었다.


- zsh : bash와 호환되는 쉘이다. 빠른 동작 속도가 특징이다.

 



 Other Contents 

댓글을 달아 주세요