[OS] 운영체제(Operating System)와 커널(Kernel)

장유진·2023년 2월 19일
0

Computer Science

목록 보기
2/7

운영체제의 구조

운영체제(Operating Ststem : OS)란 커널에 라이브러리, 어플리케이션이 추가된 상태를 이릅니다.

커널(Kernel)

커널은 항상 메모리에 상주하는 운영체제의 핵심이 되는 부분입니다. 컴퓨터 자원을 관리하는 자원 관리자로서 대표적으로 다음 4가지 기능을 가지고 있습니다. 커널은 사용자가 물리적인 하드웨어에 접근하고 사용할 수 있도록 하기 위한 목적을 가지고 있고, 사용자가 쉘(Shell)을 통해 입력한 명령어를 해석하여 하드웨어에 전달해주는 역할을 합니다.

  1. 메모리 관리
    각 프로그램이 어디에서, 무엇을, 얼마나 사용하는지를 추적하고. 메모리 자원을 할당하는 역할을 합니다.
    가상 메모리를 사용할 수 있도록 합니다.

  2. 프로세스 관리 및 CPU 스케쥴링
    사용자가 시스템에 로그인 함과 동시에 수많은 프로세스가 실행되는데, 커널은 CPU의 시간 자원을 배분하는 역할 - 어떤 프로세스가 언제, 얼마나 사용할지 - 을 하여 여러 개의 프로세스가 동시에 동작하는 것처럼 보이게 합니다.

  3. 디바이스 관리
    컴퓨터에 연결된 장치들을 드라이버라는 매개체를 통해서 제어하고 관리합니다.

  1. 시스템 콜 인터페이스 및 보안
    시스템 콜을 제공하여 응용 프로그램 - 프로세스의 서비스 요청을 수신합니다.

쉘(Shell)

커널은 커널 공간(Kernel Space)이라는 사용자가 볼 수 없는 곳에 위치합니다. 때문에 사용자가 운영체제에 접근하기 위해서는 쉘(Shell)이라고 하는 명령어 해석기를 통해야만 합니다. 쉘은 사용자와 하드웨어 간의 번역 역할을 담당합니다. 사람이 이해하기 쉬운 형태로 된 명령어를 입력하면, 쉘이 기계가 이해하기 쉬운 형태로 해석하여 커널에 전달합니다. 크게 다음과 같은 3가지 기능을 가지고 있습니다.

  1. 명령어 해석 기능
    가장 기본적이며 대표적인 기능
    사용자가 입력한 명령어를 기계어로 번역, 커널에서 수행한 결과를 번역하여 다시 사용자에게 전달하는 매개 - 인터프리터(Interpreter) 역할 수행
    사용자 혹은 파일에서 전달받은 명령을 해석하여 프로그램을 실행합니다.

  2. 프로그래밍 기능
    쉘 스크립트(Shell Script)를 작성하여 반복적으로 수행하는 작업을 프로그램으로 만들 수 있습니다.

  3. 사용자 환경 설정 기능
    명령을 호출하는 경로, 파일의 권한 설정, 환경 변수들을 초기화 파일에 저장하고,

이 파일을 이용해 사용자가 로그인할 때마다 설정이 반영될 수 있게 합니다.

간단하게 정리하면 쉘은 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램이라고 할 수 있습니다.

쉘은 터미널 환경(CLI : Command line Interface)와 GUI 두 종류로 분류할 수 있고. 대표적으로는 리눅스 Bash가 있습니다.

사용자 모드(User mode)와 커널 모드(Kernel mode)

커널에서 운영체제를 실행시키기 위한 자원을 관리하기 때문에 사용자, 혹은 응용 프로그램이 컴퓨터 중요 자원 및 핵심 코드에 접근하여 손상시키지 못하도록 두 가지 모드를 사용합니다.

  1. 사용자 모드(User mode)
    응용 프로그램이 실행되는 영역
    사용자가 접근 할 수 있는 영역을 제한적으로 두고, 프로그램의 자원을 함부로 수정하거나 삭제하지 못하도록 하는 모드입니다.
  1. 커널 모드(Kernel mode)
    자원에 대한 제어권을 가지고 모든 자원(드라이버, 메모리, CPU 등)에 접근하여 가능한 모든 명령어를 실행할 수 있습니다.
    보안을 위해 중요 자원을 관리하는 커널 모드에는 바로 접근할 수 없으며 커널 모드 내부 함수 시스템 콜(System)을 호출해야 합니다.

사용자 모드에서 프로그램의 자원에 접근해야 하는 경우(응용 프로그램에서 읽기/쓰기 등의 권한이 필요한 경우)에는 시스템 콜을 통해 커널 모드로 진입하고, 요청에 대한 작업을 수행한 뒤 사용자 모드로 복귀합니다.

시스템 콜(System call)

또는 시스템 호출 인터페이스라고 합니다.

사용자나 응용 프로그램이 컴퓨터 자원을 사용하기 위해서는 시스템 콜(System call)을 호출해야 합니다.

운영체제는 커널에 대한 접근을 시스템 콜로 한정하여, 컴퓨터 자원을 보호합니다.

시스템 콜은 함수 형태로 제공되며, 시스템 자원의 사용과 연관되어 있습니다.

응용 프로그램을 시스템 콜을 직접적으로 호출하는 것보다는 해당 시스템 콜을 사용해서 만든 API 라이브러리를 사용합니다.

CPU Protect Ring

운영체제의 역할

시스템 자원 관리자(System Resource)

  • 시스템 자원(System Resource) = 컴퓨터 하드웨어
    • CPU(중앙처리장치), Memory(DRAM,RAM)
  • I/O Devices(입출력장치)
    • Monitor, Mouse, Keyboard, Network
  • 저장매체 : SSD, HDD

사용자와 컴퓨터 간의 커뮤니케이션 지원

  • Shell

응용 프로그램 제어
접근 권한 체크, 실행 및 중지 시점 결정 ...
사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원한다.

운영체제는 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어라고 할 수 있다.

  • 응용 프로그램을 실행시킨다.
  • 응용 프로그램간의 권한을 관리한다.
    • 관리자 권한으로 실행
  • 응용 프로그램이 적절하게 동작하고 있는지 감시한다.
  • 응용 프로그램을 사용하는 사용자를 관리한다.
    • 로그인


Reference

① Red Hat - Linux 커널이란 무엇일까요? https://www.redhat.com/ko/topics/linux/what-is-the-linux-kernel
② [OS] 커널(kernel)이란 https://minkwon4.tistory.com/295
③ [운영체제] 운영체제의 구조(커널과 인터페이스) https://ardor-dev.tistory.com/22
④ [운영체제(OS)] 시스템 구조 System Structures https://rebro.kr/171
⑤ 운영체제의 핵심, 커널 https://wikidocs.net/22368
⑥ [Server] 리눅스 커널(kernel)이란? https://kingofbackend.tistory.com/100

0개의 댓글