본문 바로가기
CS(Computer Science)

[CS] 커널모드와 사용자모드 이해

by 개발지망생 2023. 2. 19.

📖 커널 모드와 사용자 모드 이해

✅ 왜 프로그램은 OS별로 있을까?

각각의 운영체제마다 시스템 콜이 다르고 시스템 콜을 호출하는 API구현이 다르기 때문이다.

 

JAVA 같은 경우 JDK를 각각의 운영체제에 맞게 설치해 줌으로써, 운영체제에 맞게 처리해 주기 때문에 자바 하나의 코드만 작성해도  여러 운영체제에 동작하게 할 수 있다.

사용자 모드와 커널 모드

컴퓨터에 영향을 미칠 수 있는 중요한 동작들은 운영체제에서만 처리하게 만들어 놨다. 파일을 읽거나 쓰거나 삭제하려면 시스템 콜을 통해서 커널에 요청을 하고 커널이 처리를 하는 방식이며, 응용프로그램이 직접 적으로 파일에 접근해 읽고 쓰고 삭제할 순 없다.

사용자 모드는 응용프로그램이 동작하는 것을 말하는데 중요한 동작이 있다면 커널에 요청하게 된다. 

그때 커널모드로 변경되며 커널에서 처리 후 응용프로그램에게 전달한다.


✅ CPU Protection Ring

사용자 모드와 커널 모드는 CPU 안에서 제공해 준다.
CPU Protection Ring은 CPU에서 명령을 실행할 때마다 level정보를 같이 써주는데 명령이 레벨에 적합한지 판단 후 실행할지 말지 결정한다.

CPU Protection Ring은 일반적으로 4개의 레벨로 구성된다.
level 0 : 커널(커널모드)
level 1, 2 : OS 서비스
level 3 : 응용 프로그램(사용자모드)

💡 커널모드에서 실행하는 주요 기능
시스템콜은 모두 커널 모드로 실행한다.


👩‍💻 정리

  • 운영체제는 시스템 콜 제공
  • 프로그래밍 언어별 운영체제 지원을 위해, 운영체제 별 API 제공
  • 응용 프로그램 개발 시 운영체제 기능이 필요한 경우, 해당 API를 사용해서 프로그램 작성
  • 응용 프로그램 실행 시, 해당 API를 호출하면, 시스템 콜 호출, 커널 모드로 변경 후, OS 내부에서 해당 명령이 실행되고, 응용 프로그램에 결과 리턴

댓글