운영체제 모드 ( User Mode, Kernel Mode ) / System Call

TopOfTheHead·2026년 2월 10일

운영체제

목록 보기
3/24

운영체제에서 구분되는 두가지 모드 ( Mode Of Operation )
보안위협 또는 프로세스의 부적절한 작업실행으로 인한 오작동을 방지하기 위한 용도로 2가지 모드 ( User Mode / Kernel Mode )를 구분
커널에서는 중요한 자원을 관리하므로 사용자가 자원에 쉽게 접근하지 못하도록 Kernel Mode로 따로 구분

프로세스가 실행되는 동안 System Call을 통해 유저 모드커널 모드를 반복적으로 넘나든다.
프로세스가 입출력명령어 실행 시 System Call을 호출하여 OS가 대리로 커널모드로 진입하여 작업을 수행

  • 사용자 모드 ( User Mode )
    。사용자가 일반 응용프로그램들을 사용하기 위해 접근하는 영역
    코드작성 , 프로세스 실행 명령등의 한정된 행위만 수행 가능

    제한된 권한으로 작동하여 시스템 자원에 접근이 불가능
    HW( HDD , RAM 등 )에 직접 접근 불가능

    오류가 발생해도 OS 전체에 영향을 주지 않는다.

    System Call을 호출하여 Kernel Mode로 진입가능

  • 커널 모드 ( Kernel Mode )
    Kernel을 통해 모든 메모리명령어에 접근이 가능하며 시스템을 제어하는 용도의 실행모드
    CPU Schedulling , Memory Management 등의 업무를 수행

    。모든 시스템 자원에 접근이 가능하는 높은 권한으로 동작
    HW( HDD , RAM 등 )에 직접 접근이 가능하며 입출력 작업 시 커널모드로 진입

    User Mode에서 System Call을 호출하여 접근 및 System Call을 처리할 경우 User Mode로 복귀

특권 명령 ( = System Call )

User Mode일반 프로그램커널 모드에서만 사용가능한 시스템 기능을 안전하게 사용할 수 있도록 OS에게 요청하는 역할의 인터페이스

User Mode일반 프로그램Kernel함수System Call을 통해 호출
System CallAPI와 유사한 역할을 수행

  • OSSystem Call 종류


  • 기존 System Call 호출 방식

    User Mode에서 Application이 작업처리를 위해 System Call : Open()System Call Interface에 전달하여 Kernel Mode에 진입 후 Kernel Mode에서 제공하는 데이터와 기능을 활용해 코드에 명기된 작업을 처리 후 System Call이 처리 된 경우 User Mode로 복귀
    일일이 프로그램의 작업처리할때마다 Kernel Mode로 진입 후 처리하고 User Mode로 복귀하는 과정을 코드로 기입하기에는 복잡하므로 보통 라이브러리를 사용한다.

    ex ) 파일을 READ하는 경우 open()을 통해 Kernel Mode로 진입 및 코드에 의한 작업을 수행하고 close()를 통해 User Mode로 복귀

  • standard C Library를 이용한 System Call 처리

    。기능을 구현하기위해 User ModeKernel Mode를 진입 시 System Call Interface를 통한 시스템 콜을 일일이 코드를 작성하기보다, standard C Library의 함수를 사용하여 손쉽게 처리 가능
    • standard C Library
      ANSI C Standard에 의해 정의된 함수 모음

      。기본적인 입출력, 문자열처리, 수학계산, 메모리관리, 에러처리 등 다양한 기능을 수행하는 함수를 제공
      ▶ 표준 라이브러리를 활용하는 경우 User ModeKernel Mode에 진입하기위해System Call Interface를 통한 복잡한 시스템 콜을 일일이 구현하지 않고도 standard C Library 함수를 통해 프로그램 개발이 가능

      。라이브러리의 이미 구현된 함수를 사용하여 개발시간 단축 및 코드품질을 증진

    • API ( Application Programming Interface )
      。개발자가 프로그래밍에 필요한 사용가능한 매개변수반환값을 포함한 함수들의 집합을 명시
      ▶ 개발자는 OS에서 제공하는 코드라이브러리를 통해 API를 활용

      API를 구성하는 함수들은 개발자를 대신하여 실제 System Call을 호출
      API 함수호출과 System call을 호출하는 것은 강한 상관관계가 존재
      System Call을 호출하는 것 보다 API로 작업하는 것이 더 간단.

      ex ) Windows API , Java API
profile
공부기록 블로그

0개의 댓글