ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 커널, 이중 모드와 시스템 호출, 운영체제 서비스
    운영체제 2023. 3. 9. 10:02
    728x90
    반응형

    https://www.kernel.org/

     

    The Linux Kernel Archives

    www.kernel.org

     

    커널이란 무엇일까

     
    운영체제의 핵심 서비스를 담당하는 부분을 커널kernel이라고 합니다.
    여기서 운영체제의 핵심 서비스란, 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등을 말합니다.
     
     



    이중 모드와 시스템 호출

     

    📌 이중 모드

    이중 모드(Dual mode)란?
    • 컴퓨터 시스템의 하드웨어 자원과 프로세스를 보호하기 위한 모드

    운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호합니다. 만약 응용 프로그램이 CPU, 메모리, 하드 디스크 등에 마음대로 접근하고 조작할 수 있다면 자원이 무질서하게 관리될 것이고, 응용 프로그램이 조금만 실수해도 컴퓨터 전체에 큰 악영향을 끼칠 수 있기 때문입니다.
    이중 모드는 컴퓨터 시스템을 사용자 모드와 커널 모드, 이 두 가지 모드로 구분하여 운영합니다.
     

    사용자 모드

    사용자모드는 운영체제 서비스를 제공받을 수 없는 실행 모드입니다. 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행됩니다. 사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없습니다. 그래서 사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없습니다.
     

    커널 모드

    커널 모드는 운영체제 서비스를 제공받을 수 있는 실행 모드입니다. 즉, 커널 영역의 코드를 실행할 수 있는 모드입니다. cpu가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있습니다. 운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있습니다.


    📌시스템 호출(System Call)

     사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 합니다. 이때 운영체제 서비스를 제공받기 위한 요청을 시스템 호출(system call)이라고 합니다.
    사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있습니다.

    소프트웨어 인터럽트

    시스템 호출은 일종의 인터럽트입니다. 인터럽트는 입출력장치에 의해 발생하기도 하지만 인터럽트를 발생시키는 특정 명령어에 의해 발생하기도 하는데, 이를 소프트웨어 인터럽트라고 합니다.




    운영체제의 핵심 서비스

    • 프로세스 관리
    • 자원 접근 및 할당
    • 파일 시스템 관리



    📌 프로세스 관리

    여기서 프로세스(process)란?
    실행 중인 프로그램

    일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 CPU는 이 프로세스들을 조금씩 번갈아 가며 실행합니다.


    📌 자원 접근 및 할당

    모든 프로세스는 실행을 위해 자원을 필요로 합니다. 그리고 운영체제는 프로세스들이 사용할 자원에 접근하고 조작하여 필요한 자원들을 할당합니다.

    컴퓨터의 네 가지 핵심 부품

    • CPU
    • 메모리
    • 보조기억장치
    • 입출력장치


    CPU

    일반적으로 메모리에는 여러 프로세스가 적재되고, 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있습니다. 운영체제는 프로세스에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 이용하게 할 것인지, 얼마나 오래 CPU를 이용하게 할지를 결정합니다. 이를 CPU 스케줄링이라고 합니다.

    메모리

    운영체제는 새로운 프로세스가 적재될 때마다 어느 주소에 적재해야 할지를 결정합니다.

    입출력장치

    인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널 영역에 있습니다. 입출력장치가 발생시키는 하드웨어 인터럽트도 마찬가지입니다. 입출력장치가 CPU에 하드웨어 인터럽트 요청 신호를 보내면 CPU는 하던 일을 잠시 백업한 뒤 커널 영역에 있는 인터럽트 서비스 루틴을 실행합니다.
    운영체제는 인터럽트를 처리하는 프로그램, 즉 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행합니다.


    📌 파일 시스템 관리

    운영체제는 보조기억장치 속 데이터를 파일과 디렉터리로 관리합니다. 여러 파일들을 열고, 생성하고, 삭제하고 이 파일들을 한데 묶어 디렉터리(폴더)로 관리합니다. 이를 파일 시스템 관리라고 합니다.


    요약
    운영체제의 핵심 서비스를 제공하는 부분이 커널임
    사용자 프로세스가 커널의 서비스를 제공받기 위해서는(커널 영역의 코드를 실행하기 위해서는) 사용자 모들에서 커널 모드로 전환해야 하고, 이때 시스템 호출을 함
    대표적인 커널의 서비스는 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리

     

    📌 시스템 호출

    시스템 호출은 사용자 모드에서 특별한 명령을 운영체제에 전달하여 하드웨어 자원에 접근하거나, 운영체제의 기능을 수행할 수 있도록 합니다. 이때, 운영체제는 커널 모드에서 실행되며, 시스템 호출을 처리하고 필요한 자원을 할당합니다. 이후 운영체제는 다시 사용자 모드로 전환되며, 프로그램은 시스템 호출 결과를 받아 자신의 동작을 계속합니다.

    이러한 방식으로 이중 모드와 시스템 호출을 이용하여 운영체제는 사용자 모드와 커널 모드를 구분하여 보안과 안정성을 유지하며, 사용자와 하드웨어 자원 간의 상호작용을 가능하게 합니다.

     

    간혹 운영체제에 따라 사용자 모드에서 시스템 호출을 할 경우 커널을 통하지 않고 바로 디스크로 명령을 입력하는 OS도 존재함
     
    LIST
Designed by Tistory.