개발

사용자모드 & 커널모드

Ridiss 2023. 12. 31. 07:50

운영체제의 여러 기능 중 핵심 기능을 담당하는 부분 == 커널(kernel) 

 

CPU권한 모드

- CPU는 명령어를 실행할 때 크게 두가지 권한 모드로 구분됨 사용자모드, 커널모드

- CPU는 동작하는 동안 두가지 모드를 번갈아 가며 실행

 

사용자 모드 (Mode Bit = 1)

- 사용자 응용프로그램의 코드가 실행되는 모드로서 메모리의 유저영역만 접근 가능

- 디스크, 프린터, 메모리 등 여러 I/O 장치들과 같은 특정 리소스들에 직접 접근할 수 없음

- 대부분의 응용프로그램은 입출력 장치나 파일로의 접근이 필요하기 때문에 이 떄는 유저모드에서 커널모드로의 전환이 필요

 

커널 모드 (Mode Bit = 0)

- 커널 영역의 코드가 실행되는 모드로서 메모리의 유저영역, 커널영역 모두 접근 가능

- 하드웨어 자원에 직접 접근할 수 있음

 

시스템 호출 (System Call)

- 응용 프로그램이 운영체제의 커널이 제공하는 서비스를 이용할 수 있도록 커널모드에 접근하기 위한 인터페이스

- 응용 프로그램이 파일 입출력이나 화면에 메시지를 출력하는 등의 기능은 커널 모드일 떄 CPU가 실행하기 때문에 반드시 시스템콜을 사용해서 호출해야함

 

시스템 호출 동작 과정

- 사용자 응용 프로그램은 작업 과정에서 커널의 기능을 사용하기 위해 매우 빈번하게 시스템 콜을 요청하고 이로 인해 사용자 모드와 커널 모드를 상호 전환하며 실행함

- I/O 처리를 위해 사용자 모드와 커널 모드를 번갈아 오가는 것은 컨텍스트 스위칭과 관련이 있음

'개발' 카테고리의 다른 글

CPU Bound & I/O Bound  (0) 2023.12.29
Context Switch  (1) 2023.12.29
Concurrent & Parallelism (동시성, 병렬성)  (0) 2023.12.27
Process & Thread  (1) 2023.12.27
REST API에 Under_Score(_)? Hyphen(-)?  (0) 2023.05.18