리눅스 쉘이란?
오늘은 리눅스의 쉘에 대해서 설명을 하려고 한다. 우선 쉘을 알기 앞서 리눅스가 전체적으로 어떠한 구조로 구성되어 있는지를 아는것이 좋다.
리눅스 구조
우선 리눅스는 다음과 같이 하드웨어, 커널, 쉘, 응용 프로그램으로 구성되어 있다.
1. 하드웨어
내가 컴퓨터를 사용한다는 것 결국 어떤 하드웨어를 동작시켜 원하는 결과를 얻어내는 일인 것이다.
하드웨어에는 실질적으로 원하는 수행을 하기 위한 데이터가 물리적으로 저장되어 있거나, 저장되어 있는 데이터를 불러오는데 필요한 실질적 장비들을 의미한다.
2. 커널
커널은 하드웨어를 감싸고 있다. 커널이란 하드웨어를 직접적으로 제어하는 역할로 운영체제에서 가장 핵심이 되는 코어라고 할 수 있다.
쉽게 설명하면 만약 내가 하드디스크한테 연락쳐 정보 가져와! 이렇게 말하면 하드웨어는 아 ! 주인님 ! 원하시는 정보 바로 여기있습니다 !!
라며 동작하는 것이 아니라는 것은 다 알것이다. 컴퓨터가 이해할 수 있는 기계어를 통해 하드웨어를 제어해야 하는데 사용자가 직접 하드웨어를 제어하기란 많이 어렵다.
따라서 사용자가 쉘을 통해 입력한 명령어를 해석하여 기계가 이해할 수 있는 표현으로 바꾸어 전달해주는 역할이 바로 커널이다.
위와 같이 ls -l 명령어를 치면 해당 디렉토리에 존재하는 파일들의 정보가 표시가 된다. 이 정보는 내 컴퓨터의 하드디스크의 일부에 위치해 있을것이다.
ls 명령어도 컴파일 되어 있는 하나의 프로그램이기 때문에 해당 소스코드 부분에서 ls가 수행해야 하는 부분이 시스템 api로 작성되어 있다.
그리고 이 인터페이스를 통해 커널에게 정보가 넘어가게 되면 커널은 넘겨져온 정보를 가지고 하드웨어를 제어하게 되는 것이다.
3. 쉘
쉘이라고 하는 것은 커널을 사용자가 직접 제어하기는 어렵기 때문에 바로 사람이 이해하기 쉬운 형태로 명령어를 입력하면, 그 명령어로 쉘에 해당하는 프로그램들이 해석해서 커널에게 전달해 주는 것이다.
커널과 쉘을 따로 분리한 이유는 커널의 역할과 쉘의 역할을 분리시켜 시스템의 결합도를 낮추기 위함이 아닐까 싶다. 쉘도 종류가 다양한데 만약 쉘과 커널이 하나의 뭉탱이로 있다면 쉘이 변경될 때마다 커널도 다시 수정해야하는 불필요한 일이 생기게 될 것이다.
쉘은 여러개의 종류가 있는데 요즘은 주로 배쉬 쉘을 사용한다.
4. 응용프로그램
응용프로그램은 vi, nano, emacs 같은 에디터나 웹 서버 등등 말그대로 응용프로그램들이 실행되는 환경을 말한다.
'보안 > Linux' 카테고리의 다른 글
심볼링 링크 하드 링크 차이 (0) | 2019.03.22 |
---|---|
리눅스 디렉토리 구조 (0) | 2019.03.22 |
리눅스 특수권한이란? (0) | 2019.03.22 |
리눅스 권한이란? (0) | 2019.03.22 |
리눅스 부팅 과정 (0) | 2019.03.21 |