사용자 모드와 커널 모드의 차이점 정리
CPU에는 애플리케이션이 동작하는 사용자 모드와 OS 커널이 동작하는 커널 모드(특권 모드)가 있습니다. 사용자 모드에서는 페이지 테이블 설정, 입출력 조작, 인터럽트 금지 같은 특권 명령어를 실행할 수 없고, 자신의 프로세스 메모리에만 접근할 수 있습니다. 파일 읽기·쓰기 등이 필요할 때는 시스템 콜로 커널에 요청합니다. 이렇게 해서 하나의 애플리케이션의 오류나 악의가 다른 프로세스, OS, 하드웨어에 미치지 않도록 합니다.
| 비교 항목 | 사용자 모드 | 커널 모드 |
|---|---|---|
| 동작하는 프로그램 | 애플리케이션 | OS 커널, 많은 디바이스 드라이버 |
| 실행할 수 있는 명령어 | 일반 명령어만. 특권 명령어를 실행하면 예외가 됩니다 | 모든 명령어. 페이지 테이블 전환, 인터럽트 허용과 금지, 제어 레지스터 설정 등 |
| 접근할 수 있는 메모리 | 자신의 프로세스 가상 주소 공간 중 사용자에게 허용된 페이지만 | 커널 영역을 포함한 전부. 물리 메모리와 장치 레지스터도 다룰 수 있습니다 |
| 장치 조작 | 직접은 불가. 시스템 콜로 커널에 요청합니다 | 직접 레지스터를 읽고 쓰며 인터럽트를 처리합니다 |
| 아키텍처에서의 명칭(예) | x86의 링 3, Arm의 EL0, RISC-V의 U 모드 | x86의 링 0, Arm의 EL1, RISC-V의 S 모드 |
| 모드가 전환되는 계기 | 시스템 콜 명령어(syscall, svc, ecall 등), 장치나 타이머의 인터럽트, 예외(페이지 폴트, 0으로 나누기, 잘못된 명령어 등)로 커널 모드에 들어갑니다 | 전용 복귀 명령어(sret, eret 등)로 복귀 위치와 모드를 동시에 되돌려 사용자 모드로 돌아갑니다 |
| 전환 비용(기준값) | 시스템 콜 왕복에 대략 100 ns~1 µs 정도. 취약점 대책으로 늘어나기도 합니다 | 커널 내부 처리끼리는 함수 호출이며 모드 전환은 없습니다. 프로세스 전환(컨텍스트 스위치)은 더 무겁습니다 |
| 오류의 영향 | 해당 프로세스만 강제 종료됩니다 | 시스템 전체가 멈출 수 있습니다(커널 패닉 등) |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.