210207 개발일지(62일차) - 운영체제(OS) 프로젝트 #2-0 : User mode & Kernel mode

고재개발·2021년 2월 7일
0

OS Project

목록 보기
10/28

유저모드(User mode)와 커널모드(Kernel mode) 요약부터 확인해보자.

요약 : 커널에서 중요 자원들을 관리하기 때문에, 사용자가 중요한 자원에 접근하지 못하도록 모드를 나눈 것이라고 보면 된다.

User mode

  • 유저(사용자)가 접근할 수 있는 영역을 제한적으로 두고, 프로그램의 자원에 함부로 침범하지 못하는 모드다.
  • 여기서 코드를 작성하고, 프로세스를 실행하는 등의 작업을 할 수 있다.
  • 유저 어플리케이션 프로그램이 유저모드에서 실행된다고 생각하면 된다. 그러다가 인터럽트를 만나 운영체제(OS)에게 도움을 요청해서 커널모드 실행이 될 수 있도록 한다.

Kernel mode

  • 모든 자원(드라이버, 메모리, CPU 등)에 접근, 명령을 할 수 있다.
  • 컴퓨터 내부에서 모든 일을 할 수 있다고 생각하면 된다.

User mode와 Kernel mode 전환

프로세스가 진행되면서, User mode와 Kernel mode가 계속해서 전환된다.

User mode → Kernel mode

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

Kernel mode → User mode

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

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

이 작업을 프로세스가 진행되면서 계속 반복하는 것이다.
(출처 : https://blockdmask.tistory.com/69#recentEntries)

profile
고재개발

0개의 댓글