리눅스 : 리눅스 구성 요소

의서쿠·2024년 3월 21일
2
post-thumbnail

안녕하세요😎 지난 번 "네트워크 계층 : OSI 7계층 vs TCP/IP 5계층" 글 이후로 다시 찾아뵙게 되었습니다!! 오늘은 리눅스의 주요 구성 요소인 커널(Kernel), 셸(Shell), 그리고 프로그램(Program)에 대해 소개해드리려고 합니다.

운영체제란?

  • 운영체제(OS, Operating System)는 컴퓨터 하드웨어와 사용자 사이에서 중재자 역할을 하는 시스템 소프트웨어입니다.


출처 : Velog 블로그, 운영체제 구조와 원리 (링크)

  • 운영체제는 컴퓨터의 모든 기본적인 태스크를 관리하며, 하드웨어 리소스를 효율적으로 사용하고, 사용자와 응용 프로그램이 컴퓨터를 쉽고 효과적으로 사용할 수 있도록 합니다.

  • 다양한 유형의 운영체제가 있으며, 주로 사용되는 운영체제는 다음과 같습니다: Windows, macOS, Linux, Unix, iOS, Android 등

리눅스란?

  • 리눅스는 오픈소스 운영체제로, 전 세계의 수많은 개발자들에 의해 개발되고 있습니다.

  • 리눅스는 그 중에서도 유연성, 보안성, 그리고 무료라는 장점 때문에 서버, 데스크탑, 임베디드 시스템 등 다양한 분야에서 널리 사용됩니다.

리눅스 구성요소

💡 리눅스 시스템은 크게 세 가지 주요 구성 요소로 이루어져 있습니다:

  1. 프로그램
  2. 커널

프로그램(터미널)

  • 정의: 터미널은 사용자가 시스템과 상호작용하기 위한 인터페이스입니다.

  • 역할: 사용자가 입력한 명령어를 시스템에 전달하고, 시스템의 출력을 사용자에게 보여주는 역할을 합니다. 즉, 사용자와 시스템 사이의 커뮤니케이션 창구 역할을 수행합니다.

리눅스 명령어 기본 형식

  • 터미널에 작성하게 되는 리눅스 명령어의 기본 형식은 일반적으로 명령어 [옵션] [인자]의 구조를 가집니다.
  • 여기서 '명령어'는 수행하고자 하는 작업을 나타내며, '옵션'은 해당 명령어를 좀 더 구체적으로 제어하기 위한 선택적 매개변수입니다.
  • '인자'는 명령어의 대상이 되는 파일이나 다른 리소스를 지정합니다.

  • 정의: 셸은 터미널을 통해 입력된 명령어를 해석하여 커널에게 전달하는 역할을 수행합니다.

  • 역할: 셸은 사용자가 입력한 명령어를 커널이 이해할 수 있는 형태로 변환하고, 실행 결과를 다시 사용자에게 표시합니다. 셸 스크립트를 통해 반복적인 작업을 자동화할 수 있습니다.

대표적인 셸의 종류:

  • sh (Bourne Shell): 유닉스 시스템에서 가장 초기에 사용된 셸로, 간단한 스크립팅과 명령어 실행 기능을 제공합니다.
  • bash (Bourne Again Shell): sh의 확장 버전으로, 리눅스와 맥OS에서 가장 널리 사용되는 셸입니다. 사용자 친화적인 기능과 스크립팅 기능이 강화되어 있습니다.
  • zsh: bash의 기능을 포함하면서 사용자의 편의성을 더욱 고려한 셸입니다. 맞춤법 검사, 강력한 플러그인 및 테마 지원으로 많은 사용자에게 사랑받고 있습니다.

커널

  • 정의: 커널은 운영체제의 핵심 부분으로, 시스템의 모든 하드웨어와 소프트웨어 리소스를 관리합니다.

  • 역할: 커널은 프로세스 관리, 메모리 관리, 장치 드라이버들과의 통신, 시스템 호출 등의 기본적인 시스템 서비스를 제공합니다. 사용자 또는 프로그램이 요청한 작업을 하드웨어가 수행할 수 있도록 지시합니다.

리눅스 동작 순서

  • 리눅스 시스템에서의 동작 순서는 프로그램, 셸, 커널이 서로 상호작용하며 이루어집니다.

  • 사용자가 프로그램을 통해 명령어를 입력하면, 이 명령어는 셸을 통해 커널에게 전달됩니다.

  • 커널은 이 명령어를 수행하고, 그 결과를 다시 셸을 통해 사용자에게 전달합니다. 이 과정을 통해 사용자는 컴퓨터 하드웨어를 제어하고, 다양한 작업을 수행할 수 있게 됩니다.


지금까지 커널, 셸, 사용자 프로그램의 상호작용은 리눅스 시스템의 깊은 이해를 위한 기초를 마련해 보았습니다.

이러한 지식은 리눅스 시스템을 더욱 효과적으로 사용, 관리, 그리고 문제를 해결하는 데 필수적인 바탕이 됩니다.

다음 시간에는 리눅스를 더욱 실제적으로 다루는 방법으로 나아가, 리눅스의 주요 명령어들에 대해서 자세히 살펴보고자 합니다! 읽어주셔서 감사합니다!! 📖

profile
Always be passionate ✨

0개의 댓글