Kernel, Shell, Interface 란?

2022. 3. 21. 21:05공부/CS 공부

 리눅스를 공부하다가 kernel, shell, interface란 단어에 대해 듣게 되었다. 뭔가 들어본적은 있는 세 단어이지만 만약에  면접에서 '이 셋의 차이에 대해서 설명해주실 수 있나요?' 라고 물어보면 제대로 답 못할 것 같아서 정리해보려고 한다.

 먼저 Kernel 이란 무엇일까? 영어 사전으로 검색해보면 '핵심' 이라는 의미를 가지고 있다. 말 그대로 kernel은 한 운영체제에서 핵심적인 부분을 의미한다. 즉 운영 체제에서 여러 응용 프로그램 수행에 필요한 여러가지 서비스를 제공한다.

 그렇다면 우리는 kernel을 어떻게 사용할까? 이를 위해 shell이 존재하는데, 일단 shell을 간단하게 정의해보면 Shell이란 시스템 사용자(user) kernel을 연결해주는 Interface이다. 우린 kernel이 내부에서 어떻게 동작하는지 잘 모른다. 하지만 kernel을 사용해야 할때가 있는데, 그럴 때 바로 shell을 사용한다(terminal, cmd 등등). 우리는 shell을 통해 명령을 커널에 던져주고, shell을 통해 명령에 대한 결과를 확인할 수 있다. 쉘은 보통 APP이며, 커널을 감싸고 있기에 껍데기 라는 의미의 shell이 된 것 같다.

 마지막으로 interface는 사용자가 쉽게 동작 및 사용하는데 도움을 주는 시스템을 의미한다. 흔히 비유할때 TV 리모콘을 주로 예시로 들고는 한다. 우리는 TV가 내부에서 어떻게 동작하는지는 전혀 모르지만 리모콘을 이용해 TV를 제어할 수 있다. 이렇게 생각해보니 주변에 정말 많은 Interface가 있구나 하는 생각이 들었다. 예를 들면 엘레베이터의 버튼도 우리가 엘레베이터를 조작하게 해줄 수 있는 Interface라고 생각할 수 있지 않을까? 우린 엘레베이터가 내부에서 어떻게 동작하는지는 모르지만 버튼을 누름으로써 엘레베이터를 제어할 수 있게 도와준다.(아니면 말구 ㅎㅎ...)

 이렇게 3가지를 알아봤는데 리눅스는 OS자체는 아니고 "커널" 자체 라고한다. 보통 OS = APP + shell + kernel이라고 하는데 아무 생각없이 쓰던 OS도 이렇게 이루어져있구나 하는 생각이 들었다.... 취업을 위해 CS공부 열심히 해야겠다.. 

 

'공부 > CS 공부' 카테고리의 다른 글

운영체제와 커널  (0) 2022.05.18
좋은 코드란?  (0) 2022.05.17
프로세스와 스레드의 차이  (0) 2022.04.18
프로그램 vs 프로세스 vs 프로세서  (0) 2022.04.16