-
[CS기초] 콘솔, 커널, 쉘, 터미널의 개념 쉽게 이해하기CS기초/OS,HW 2021. 8. 18. 16:58728x90반응형
Console
Computer는 말 그대로 compute, 생각해서 산출하는 기계이다. 단순한 계산을 하는 것이 아니라 해석을 하여 결과 값을 찾아내기때문에 calculater가 아닌 computer라고 부른다. 일련의 명령어를 입력받으면 그에 따른 답변을 출력하는데, 3+2=5라는 식에서 3+2는 명령어, =는 그 명령어를 전달하여 출력하도록 하는 매개체, 5는 컴퓨터가 명령어를 해석하여 찾아낸 결과를 보여주는 것이라고 이해할 수 있다.
마우스로 클릭을 하는 것, 키보드로 글자를 입력하는 것 모두 동일한 프로세스로 이루어진다고 이해하면 쉽다. ㄱ이라는 자판을 누르는 행위가 명령어가 되고, 키보드를 누르는 순간이 = 이 될 것이며 이 후 컴퓨터는 명령어를 해석하여 ㄱ이라는 글자를 화면에 출력하게 된다. 여기서 컴퓨터에 물리적인 방식으로 명렁어를 입력 및 출력하는 장치를 콘솔(console)이라고 한다. 넓은 의미로는 키보드와 모니터같은 장치까지 포함하는 용어로 사용되기도 한다.
Terminal
컴퓨터 제어 방법은 크게 GUI - Graphical user interface - 와 CLI - Command-line interface -가 있다. GUI는 말 그대로 그래픽으로 환경을 제어하는 방법으로 마우스를 이용해 아이콘을 클릭하는 방식이 해당한다. 반대의 환경으로 CLI는 명령어를 통해 - 즉, 오직 키보드 만으로 - 환경을 제어하는 방법이다. 어떤 폴더를 지우고자 할 때, 해당 폴더에서 마우스 오른쪽 버튼을 클릭하여 '삭제'를 누르거나 Command+delete(윈도우에서는 control+d)를 눌러 지우는 동작을 실행하는 것을 GUI, 터미널 창에서 rm 명령어를 이용해 지우는 것을 CLI라고 이해하면 된다.
현재 우리는 일반적으로 GUI 환경을 사용하고 있다. 하지만 70년대의 컴퓨터는 모두 CLI 환경이었고, 80년대에 되어서 PC(Personal Computer)의 보급화와 함께 점점 GUI 환경이 자리를 잡기 시작했다. CLI환경에서 명령어의 입출력을 위한 콘솔창을 터미널 (정확하게는 터미널 에뮬레이터 - Terminal Emulator)이라고 일컫는다. 사실 터미널이라는 용어는 정확하게는 하드웨어 장비를 일컫는 말이지만 현재는 터미널 에뮬레이터와 같은 의미로 사용된다고한다. 터미널 에뮬레이터는 입력받은 명령어를 쉘으로 전달하고, 쉘에서 전달받은 에러나 출력값을 사용자가 볼 수 있게 화면에 출력하는 역할을 한다.
Shell
우리는 모두 어떤 언어를 통해 상대방과 소통한다. 영어밖에 할 줄 모르는 사람에게 한국어로 얘기하면 알아듣지 못하는 것 처럼, 컴퓨터는 0과 1로 이루어진 이진법의 숫자로만 모든 것을 이해하기때문에 컴퓨터와 소통하기 위해서는 사람의 명령어를 이진법으로 바꾸어주는 과정이 필요하다. 터미널을 통해 전달받은 명령어를 컴퓨터가 이해할 수 있도록 번역(해석)하는 것이 쉘(Shell)이다. 커널을 감싸고 있기 때문에 껍데기라는 뜻에서 쉘이라고 명명되었다고한다. 즉, User가 커널과 소통하기 위해 중간에서 인터페이스 역할을 하는 것이 쉘이라고 할 수 있다.
쉘은 여러가지 종류가 있고, 각 쉘마다 수행할 수 있는 command line이 다르다. 시초를 크게 두 가지로 나누면 본 쉘(Bourne shell)과 도스 쉘(DOS shell)이 있고, 본 쉘에서 태어난 쉘이 배쉬 쉘(Bash shell)이다. 맥OS에서는 기본 쉘로 배쉬 쉘을 사용했으나 최근에는 z-쉘(zsh)로 넘어갔다 (z쉘이 명령어를 더 많이 제공한다고 한다). 윈도우는 도스 쉘을 사용하는데, 윈도우 os에서도 배쉬 쉘 명령어를 사용할 수 있게하는 프로그램이 git bash이다 (하지만 모든 bash 명령어를 지원하지는 않는다).
쉘에서 기본적으로 지원하는 명령어 외에 추가적인 명렁어나 설정을 집어넣기 위해 사용하는 것이 rc파일이다. 배쉬 쉘에서는 .bashrc파일과 .bash_profile 두 가지를 사용하는데 rc파일은 non-login shell에서 실행되기 때문에 이미 로그인 한 상태에서 새 터미널 창을 열 때마다 실행되며 profile은 login shell에서 실행되기 때문에 로그인 할 때마다 실행된다.
Kernel
쉘을 통해 해석된 명령어는 커널(Kernel)로 전달된다. 커널은 운영체제의 핵심적인 기능을 모아놓은 것이라고 할 수 있다. 소프트웨어로부터 받은 요청에 알맞게 하드웨어를 제어할 수 있도록 컴퓨터 가장 내부에있는 CPU, 메모리, 저장장치 등의 자원을 효율적으로 할당해주고 메모리 관리 및 작업 스케줄링을 수행하며 입출력을 관리하는 역할을 수행한다.
728x90반응형'CS기초 > OS,HW' 카테고리의 다른 글
운영체제 4: 프로세스 (Process)의 구조 (0) 2021.12.28 운영체제 3: 인터럽트 (Interrupt) (0) 2021.12.28 운영체제 2: 프로세스 스케줄링 시스템의 종류와 알고리즘 (0) 2021.12.28 운영체제 1: 컴퓨터의 구조와 운영체제의 역할과 구조 (0) 2021.12.08 [CS기초] 프롬프트의 종류, 쉘 환경변수에 대해 (0) 2021.08.20