OS #07 User/Kernel Mode

underlier12·2020년 3월 10일
0

OS

목록 보기
7/35
post-custom-banner

07. User/Kernel Mode

CPU Protection Rings

CPU에도 권한에 따른 모드가 존재한다. 아래 그림과 같이 Protections Ring의 구조에 따르면 단계별로 나뉘어 있지만 현재는 User mode/Kernel mode만 사용한다.

  • 사용자 모드(user mode by applications)
  • 커널 모드(kernel mode by OS)

kernel : 알맹이/핵심이란 뜻으로 OS의 주축이 되는 기능을 하는 프로그램을 말함

응용 프로그램과 운영체제

따라서 응용 프로그램 관점에서의 운영체제와의 관계를 볼 때 다음과 같이 사용자 영역과 커널 영역으로 나눌 수 있다. 이 때 각 영역에서는 해당 모드로 전환되어 각 기능을 수행하며 다음과 같은 특징을 가진다.

  • 커널 모드에서만 실행 가능한 기능 존재
  • 커널 모드로 변경하려면 반드시 시스템 콜을 사용

응용 프로그램이 임의로 전체 컴퓨터 시스템을 조작할 수 없도록 하기 위해 모드를 분리한다.

코드로 보는 모드 전환

다음과 같은 응용 프로그램을 구성하는 코드가 있을 때 모드 전환이 되는 순서는 표시된 흐름에 따른다. open()이라는 시스템 콜을 호출함으로 커널모드로 전환하고 sys_open() 커널 함수를 호출하여 open() 함수를 처리한 뒤 연산 수행이 끝나면 다시금 사용자 모드로 전환되는 형태이다.

각 단계를 거슬러 올라가보면 응용 프로그램 내의 open() 함수를 호출하게되면 해당 함수가 포함된 헤더 파일인 unistd.h에 시스템 콜을 사용하도록 정의되어 있다. 이후 커널에서는 open() 호출 시 sys_open() 함수를 호출할 수 있도록 정의되어 있다.

정리

  • 운영체제는 시스템 콜을 제공
  • 언어별로 운영체제 기능을 활용하기 위해, 시스템 콜을 기반으로 API 제공
  • 응용 프로그램은 운여에제 기능 필요 시 해당 API를 사용해 작성
  • 응용 프로그램 실행 후 API 호출 시 시스템 콜 호출 후 커널 모드로 변경하여 OS 내부에서 명령 실행
    (그리고 응용 프로그램으로 다시 권한과 함께 돌아감)
profile
logos and alogos
post-custom-banner

0개의 댓글