운영체제 모드 ( 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 Call은 API와 유사한 역할을 수행

  • 각 OS의 System 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 Mode와 Kernel Mode를 진입 시 System Call Interface를 통한 시스템 콜을 일일이 코드를 작성하기보다, standard C Library의 함수를 사용하여 손쉽게 처리 가능
    • standard C Library
      。ANSI C Standard에 의해 정의된 함수 모음

      。기본적인 입출력, 문자열처리, 수학계산, 메모리관리, 에러처리 등 다양한 기능을 수행하는 함수를 제공
      ▶ 표준 라이브러리를 활용하는 경우 User Mode와 Kernel 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개의 댓글