Linux 기초개념(Kernel, Shell)

쥬씨후레시·2023년 8월 29일
post-thumbnail

📍 Linux란?


시스템을 운영하는데 가장 많이 사용되는 운영체제는 Linux이다.
Windows 시스템이나 application이 아닌 이상 일반적으로 시스템 서버는 linux 기반으로 운영되고 있다. 따라서 개발자는 시스템을 실행하고 유지하고 관리하기 위해 linux에 대해 잘 알아야 한다!

운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있게 관리 해주는 소프트웨어를 말한다.

📍 커널(Kernel), 쉘(Shell)이란?

운영체제는 크게 핵심 기능들이 모여 있는 커널(Kernel)과 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려주는 인터페이스로 구성되어 있다.
커널이 하는 일은 아래와 같이 크게 다섯가지가 있다.

  • 프로세스 관리 : 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공
  • 메모리 관리 : 프로세스에 작업 공간을 배치하고 실제 매모리보다 큰 가상공간을 제공
  • 파일 시스템 관리 : 데이터를 저장하고 접근할 수 있는 인터페이스를 제공
  • 입출력 관리 : 필요한 입력과 출력 서비스를 제공
  • 프로세스 간 통신 관리 : 공동 작업을 위한 각 프로세스 간 통신 환경을 지원

쉘(Shell)은 사용자-운영체제 사이의 커뮤니케이션이 가능하도록 명령어를 해석해 준다. 쉘은 CLI(Command Line Interface)와 GUI(Graphical User Interface). 총 두가지 유형의 인터페이스로 사용할 수 있다.
CLI는 텍스트 기반 인터페이스이며, 키보드로 명령어를 입력하여 컴퓨터와 상호작용하고, GUI는 그래픽 기반 인터페이스이며, 마우스를 통해 메뉴, 버튼, 아이콘 등의 그래픽 요소를 클릭하여 컴퓨터와 상호작용한다.

<추가설명>

  • GUI는 바탕화면에 생성된 폴더를 마우스 더블클릭하여 진입하는 것, 파일의 아이콘 등이 포함된다.
  • CLI는 리눅스의 터미널 'bash'을 통해 명령어를 입력할 수 있으며, 윈도우는 'powershell' 또는 'cmd'로 명령어 입력이 가능하다.

기존에 써온 방식은 GUI인데, 굳이 CLI를 알아야 할까?

개발자는 CLI를 알아야 효율적인 개발이 가능하다.
만약 1개의 파일을 삭제하고 싶을 경우, GUI를 통해 처리한다면 '파일 탐색기 진입 -> 삭제할 파일 찾기 -> 파일 삭제'까지 어느정도 시간이 소요된다. 하지만 CLI는 터미널을 통해 삭제 명령어만 입력하면 한 번에 파일을 삭제할 수 있다.

※커널과 쉘의 역할
사용자가 CLI를 통해 명령어를 입력하면 명령어가 쉘에게 전달된다. 쉘은 사용자가 입력한 명령어를 번역해 커널에게 넘긴다. 커널은 이 명령어를 통해 하드웨어를 컨트롤하여 다시 사용자에게 output 처리를 한다.

  • 사용자(명령) → 쉘(해석) → 커널(명령 수행 후 결과 전송) →
    쉘(해석) → 사용자(결과 확인)
profile
🧘🏼‍♀️

0개의 댓글