[운영체제] User Mode & Kernel Mode

Junyeong Fred Kim·2022년 1월 5일
1

운영체제

목록 보기
12/27

유저모드 (User Mode)와 커널모드 (Kernel mode)

커널에서 중요한 자원을 관리하기 때문에, 사용자가 그 중요한 자원에 접근하지 못하도록 모드를 2가지로 나눈 것이다.

User Mode

  • 유저(사용자)가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드이다.
  • 우리는 여기서 코드를 작성하고, 프로세스를 실행하는 등의 행동을 할 수 있다.
  • 간단하게 "유저 어플리케이션 코드가 유저모드에서 실행된다." 라고 말할 수 있다.

Kernel Mode

  • 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있다.
  • 유저모드와는 비교가 안되게 컴퓨터 내부에서 모든 짓(?)을 할 수 있다고 생각하면 된다.

User Mode와 Kernel모드의 전환

프로세스가 실행되는 동안 프로세스는 수없이 유저모드와 커널모드를 왔다갔다 하면서 실행이 된다.

User Mode -> Kernel Mode 요청

  • 프로세스가 유저모드에서 실행되다가 특별한 요청이 필요할 때 system call을 이용해서 커널에 요청한다.

Kernel Mode -> User Mode 반환

  • system call의 요청을 받은 커널이 그 요청에 대한 일을 하고 결과값을 system call의 리턴 값으로 전해준다.

예를 들어 프로세스가 실행되고 있는 중에 라이브러리 함수인 fopen함수를 호출했다고 가정해보자.
그렇게 되면 fopen내부에서 system call인 open을 호출하면서 커널모드로 넘어간다.
open에 대한 입력값이 커널로 전달이 되고 해당 일을 완료하고 커널에서 return을 해주면서 유저모드로 돌아가게 된다.

이러한 흐름이 수 없이 반복되며, 프로세스가 실행이된다.

profile
기억보다 기록

0개의 댓글