커널, 쉘 , bash

JooKit 주킷 2020. 10. 31. 11:22
목차 접기
728x90
반응형

커널이란? (Kernel)

  • 커널은 운영체제의 핵심을 이루는 요소로서 컴퓨터내의 자원을 사용자 프로그램(User Application)이 사용할 수 있도록 관리하는 프로그램이다.

  • 커널은 프로세스, 파일 시스템, 메모리, 네트워크의 관리를 맡는다.

  • 사용자 프로그램은 이러한 기능들을 정해진 규칙에 따라서 커널에 요구하게 되며, 커널은 이러한 요구들을 만족시켜 주도록 구성되어 있다.

  • Linux® 커널은 Linux 운영 체제(OS)의 주요 구성 요소이며 컴퓨터 하드웨어와 프로세스를 잇는 핵심 인터페이스입니다. 그리고 두 가지 관리 리소스 사이에서 최대한 효과적으로 통신한다.

  • 커널이라는 이름은 단단한 껍질 안의 씨앗처럼 OS 내에 위치하고 전화기, 노트북, 서버 또는 컴퓨터 유형에 관계없이 하드웨어의 모든 주요 기능을 제어하기 때문에 붙은 이름이다.

커널의 기능

다음과 같은 4가지 기능을 수행합니다.

  • 메모리 관리: 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적합니다.

  • 프로세스 관리: 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정합니다.

  • 장치 드라이버: 하드웨어와 프로세스 사이에서 중재자/인터프리터의 역할을 수행합니다.

  • 시스템 호출 및 보안: 프로세스의 서비스 요청을 수신합니다.

    • 올바르게 구현된 커널은 사용자가 볼 수 없으며 커널 공간이라는 자신만의 작은 작업 공간에서 메모리를 할당하고 저장되는 모든 항목을 추적합니다. 웹 브라우저 및 파일과 같이 사용자가 볼 수 있는 것을 사용자 공간이라고 합니다. 이러한 애플리케이션은 시스템 호출 인터페이스(SCI)를 통해 커널과 통신합니다.
  • 설명하자면 다음과 같습니다. 커널은 강력한 경영진(하드웨어)을 위해 일하는 바쁜 비서입니다. 비서의 할 일은 직원 및 대중(사용자)으로부터 수신되는 메시지 및 요청(프로세스)을 경영진에게 전달하고, 어디에 무엇이 저장되어 있는지 기억(메모리)하고, 특정한 시간에 누가 경영진을 얼마 동안 만날 수 있는지 결정하는 것입니다.

OS 내에서 커널의 위치

커널과 관련하여 Linux 시스템은 다음과 같은 3개 레이어로 구성되어 있다고 볼 수 있습니다.

  • 하드웨어: 시스템의 토대가 되는 물리적 머신으로, 메모리(RAM)와 프로세서 또는 중앙 처리 장치(CPU) 그리고 입출력(I/O) 장치(예: 스토리지, 네트워킹 및 그래픽)로 구성됩니다. CPU는 계산을 수행하고 메모리를 읽고 씁니다.

    • Linux 커널: OS의 핵심입니다. (보시다시피 한가운데에 있습니다.) 메모리에 상주하며 CPU에 명령을 내리는 소프트웨어입니다.
  • 사용자 프로세스: 실행 중인 프로그램으로, 커널이 관리합니다. 사용자 프로세스가 모여 사용자 공간을 구성합니다. 사용자 프로세스를 단순히 프로세스라고도 합니다. 또한, 커널은 이러한 프로세스 및 서버가 서로 통신(프로세스 간 통신 또는 IPC라고 함)할 수 있도록 해줍니다.

  • 시스템에서 실행되는 코드는 커널 모드 또는 사용자 모드라는 두 가지 모드 중 하나로 CPU에서 실행됩니다. 커널 모드에서 실행 중인 코드는 하드웨어에 무제한 액세스가 가능한 반면, 사용자 모드에서는 CPU 및 메모리가 SCI를 통해 액세스하는 것을 제한합니다. 메모리도 이와 유사하게 구분됩니다(커널 공간 및 사용자 공간). 이러한 두 가지 작은 세부 사항이 보안, 컨테이너 구축 및 가상 머신을 위한 권한 구분과 같은 복잡한 작업의 토대가 됩니다.

  • 또한, 이는 프로세스가 사용자 모드에서 실패할 경우 손상이 제한적이며 커널에 의해 복구될 수 있음을 의미합니다. 그러나 커널 프로세스는 메모리와 프로세서에 액세스할 수 있기 때문에 충돌이 발생하면 시스템 전체가 중지될 수 있습니다. 안전 장치가 마련되어 있고 경계를 넘기 위해서는 권한이 필요하기 때문에, 사용자 프로세스 충돌은 일반적으로 커다란 문제를 유발하지는 않습니다.

  • 유용한 링크

커널과 쉘

  • 사용자가 입력한 명령어는 일련의 과정을 거쳐 하드웨어를 제어하게 됩니다. 사용자가 명령어를 작성하고 조작하기까지 이 사이에는 몇 가지의 과정을 거쳐서 수행을 하게 되는데, 우리가 명령어를 입력하게 되면 컴퓨터 내부에서는 쉘(Shell) 이 이를 받아들이고, 명령어를 해석하여 커널(Kernel) 을 통해 하드웨어를 조작합니다. 즉, 제일 하단에는 하드웨어가 있고, 그 위에는 커널, 커널위에는 쉘, 그리고 쉘 위에는 사용자가 존재하여 사용자 유저의 입력을 받게 됩니다.

커널

  • 커널은 운영체제의 핵심입니다. 쉽게 말해, 소프트웨어와 하드웨어간의 커뮤니케이션을 관리하는 프로그램입니다.
  • 운영체제에서 가장 중요한 구성요소로서 입출력을 관리하고 소프트웨어로부터의 요청을 컴퓨터에 있는 하드웨어(CPU, 메모리, 저장장치등)가 처리 할 수 있도록 요청을 변환하는 역할을 한다. 이렇게 하드웨어를 관리하고 필요한 프로세스를 나눠주는 등 여러 시스템 자원을 제어하고, 컴퓨터 부팅시 부트로더에 의해 로드되어 항상 메모리에 상주하게 됩니다.
  • 하드웨어와 바로 통신을 한다.

  • 사용자와 운영체제간에 대화를 가능하게 해주는 명령어 해석기 역할을 말합니다.
  • 사용자(명령) -> 쉘(해석) -> 커널(명령 수행 후 결과 전송) -> 쉘(해석) -> 사용자(결과 확인)
  • 커널을 조종하기 위한.
  • 유용한 링크
728x90
반응형
LIST