005 User Kernel Systemcall

강의 메모 - 사용자 모드 & 커널 모드 #

개요 #

운영체제 : 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어 운영체제의 여러 기능 중 핵심 기능을 담당하는 부분을 커널(kernel) 이라고 한다.

  • 사용자가 운영체제 위에서 실행되는 프로그램을 편하고 효율적으로 사용할 수 있게 하드웨어와 소프트웨어 간 중개자 역할을 한다.
  • CPU, I/O 장치, 메모리, 저장소와 같은 하드웨어 자원을 프로그램에 잘 할당하는 데 있다.
  • 운영체제는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호한다.
    • 운영프로그램이 하드웨어 자원에 접근하려고 할때는 반드시 운영체제를 통해서만 접근하도록 한다.

CPU 권한 모드 #

img.png

  • CPU는 명령어를 실행할때 크게 두가지 권한 모드로 구분해서 실행하는데 사용자 모드(user mode)와 커널 모드(kernel mode)로 구분한다.
  • CPU는 동작하는 동안 두가지 모드를 번갈아 가면서 수행한다.

사용자모드 (Mode Bit = 1) #

  • 사용자 응용프로그램의 코드가 실행 되는 모드로서 메모리의 유저 영역만 접근 가능
  • 디스크, 메모리, Printer 및 여러 I/O 장치들과 같은 특정 리소스들에 접근이 안된다.
  • 대부분의 응용 프로그램은 입출력 장치나 파일로의 접근이 필요하기 때문에 이때는 유저모드에서 커널모드로의 전환이 되어야한다.

커널모드 (Mode Bit = 0) #

  • 커널 영역의 코드가 실행되는 모드로서 메모리의 유저 영역, 커널 영역 모두 접근 가능
  • 하드웨어 자원에 직접 접근할 수 있음

시스템 호출 (System Call) #

시스템 호출은 응용 프로그램이 운영체제의 커널이 제공하는 서비스를 이용할 수 있도록 커널모드에 접근하기 위한 인터페이스 응용 프로그램이 파일 입출력이나, 화면에 메시지를 출력하는 등의 기능은 커널 모드일때 CPU가 실행하기 때문에 반드시 시스템 콜을 사용해서 커널모드로 전환해야한다.

User Mode의 Libraries를 통해서 System Call을 호출한다.

시스템 호출 동작 과정 #

  • 사용자 응용 프로그램은 작업 과정에서 커널의 기능을 사용하기 위해 매우 빈번하게 시스템 콜을 요청한다. (사용자모드, 커널모드를 상호간 전환하며 실행)
  • I/O 처리를 위해 사용자 모드와 커널 모드를 번갈아 오가는 것은 컨텍스트 스위칭과 관련이 있으며 이는 멀티 스레드 환경에서 참고해야할 중요한 배경적 지식이다.