[네트워크, 널널한 개발자] User Mode Kernel Mode

이민석·2024년 11월 5일

UserMode와 Kernel Mode

네트워크이니 만큼, 유저 모드와 커널 모드를 자세하게 알 필요는 없지만, 복습 차원에서 간단히 공부해보았다.

User Mode

유저가 사용하는 영역.
코드를 작성하거나 프로세스를 실행하는 행동을 하는 영역.
간단하게 Application을 실행시키면 Application Code가 실행되는 영역으로 생각하면 됨.

Kernel Mode

운영체제 딴에서 서비스를 제공해주는 영역.
커널의 주요 역할은 보안, 자원관리, 추상화 입니다.
그렇기에 커널모드에서는 모든 자원에 접근, 명령을 할 수 있고 하드웨어와도 통신이 가능합니다.

예를 들어서, 내가 작성한 코드에서 운영체제에 접근을 해야되는 경우(fopen 함수 사용)를 생각해보면,

내가 작성한 코드는 UserMode에서 동작을 하고 fopen을 통해서 운영체제에 요청해서 얻어와야된다면
Kernel Mode로 접근을 하게 됩니다.

  • UserMode -> KernelMode 로 요청

    프로세스가 유저모드에서 실행되다가 System Call을 이용해서 커널에 요청을 하게 됩니다.
  • KernelMode -> UserMode로 반환

    System Call의 요청을 받은 커널이 그 요청에 대한 일을 수행한 후 System Call의 리턴 값으로 돌려줍니다.

이렇듯, 프로세스를 실행한다면 KernelMode와 여러번 교환을 거쳐가게 됩니다.


OSI 7Layer와 User,Kernel Mode 관계

위의 그림과 같은 관계로 OSI-7의 관계를 이해하고 네트워크를 공부한다면 편할 거라고 말씀해주셨다.

그리고 Application에서 File의 형태로 여는 것을 네트워크에서는 네트워크 추상화가 이루어진 파일을 Socket이라고 부른다는 것을 외우면 좋다.

profile
게임개발이 하고픈 이민석입니다.

0개의 댓글