[24-04-10] CPU User mode, Kernel Mode

XingXi·2024년 4월 10일
0

기록

목록 보기
24/33
post-thumbnail

OS는..

하드웨어와 응용프로그램의 중간역할을 하고
응용프로그램에게 CPU, I/O, Memory 같은 하드웨어 자원을 할당하는 역할을 하는 것이
OS (운영체제) 이며 이를 사용하는 많은 이유중 하나는
위와 같은 컴퓨터 자원들을 효율적으로 관리하기 위해서이다.

왜 응용 프로그램이 하드웨어 자원에 직접 접근하지 못하게 하는 것일까?

여러가지 이유들이 있다. 한정적인 자원을 응용프로그램이 아무런 제약 없이
조작하면 프로세스의 데이터가 훼손 되어 제대로 작동하지 못한다.

그래서 응용프로그램들이 하드웨어 자원에 접근하기 위해서
각각의 OS 에서는 하드웨어와 응용프로그램간의 인터페이스 역할을 하는 KERNEL 을 제공한다.

응용프로그램이 하드웨어자원을 사용하기 위해
몇가지 알아야할 것들이 있다.


CPU MODE

✅User Mode ( mode bit = 0 )

어플리케이션이 실행 될 때의 CPU MODE 이다.

  • 메모리의 사용자 영역만 접근이 가능하며, 커널 영역에는 접근이 불가능하다.
  • 커널 영역에 접근이 불가함으로 하드웨어 자원을 사용할 수 없다.

✅Kernel Mode ( mode bit = 1 )

커널 영역의 코드가 실행되는 Cpu mode 이다.

  • 메모리의 사용자 영역과 커널 영역 모두 접근이 가능하다.
  • 하드웨어 자원에 접근이 가능하다.

CPU 에서는 위의 2가지 모드를 구별하여
하드웨어자원을 제한적으로 사용할 수 있도록 구성하였다.
응용프로그램이 하드웨어 자원을 사용하기 위해서
User Mode에서 Kernel Mode로의 전환이 필요한데
여기에 System Call 이 있다.

System Call

응용프로그램이 커널에서 제공하는 서비스를 요청하는 인터페이스를 말한다.

  • 응용프로그램은 사용자 모드에서 커널모드로 변경된다.
  • 커널이 제공하는 서비스를 사용할 수 있게 된다.

System Call 동작 방식

  • Process 진행 중 I/O 작업을 수행하거나, 네트워크 통신등 하드웨어 자원을 사용하기 위해 매우 빈번하게 System Call 이 호출 된다.

이처럼 User Mode 와 Kernel Mode 의 전환은 비용적인 문제와
Thread 설정할 때 고려해야할 것 중 하나이다.

0개의 댓글