운영체제의 자원 관리와 커널·사용자 모드의 경계

운영체제가 CPU·메모리·저장장치·입출력 자원을 관리하는 방식과 시스템 콜, 커널 모드 및 사용자 모드의 역할을 정리한다.

2026-08-14 · 최초 발행 2026-01-16

하드웨어와 응용 프로그램 사이의 운영체제

운영체제(OS, Operating System)는 하드웨어 자원을 관리하고 응용 프로그램에 공통 서비스를 제공하는 시스템 소프트웨어다. 응용 프로그램이 CPU, 메모리, 저장장치, 입출력 장치를 제각각 직접 제어하지 않도록 중간 계층을 두고, 추상화된 인터페이스를 제공한다.

운영체제가 맡는 목표는 사용자에게 편리한 환경을 제공하는 일에 그치지 않는다. CPU 스케줄링과 메모리 관리로 자원을 효율적으로 활용하고, 드라이버와 모듈 시스템을 통해 기능 확장을 수용하며, 접근 제어와 인증으로 시스템과 데이터를 보호한다. GUI, CLI, 파일 시스템도 이 계층이 제공하는 환경에 포함된다.

하드웨어운영체제사용자 영역응용 프로그램시스템 유틸리티시스템 인터페이스커널디바이스 드라이버CPU / 메모리 / 저장장치 /입출력장치

사용자 영역의 프로그램은 시스템 콜 인터페이스를 통해 운영체제 기능을 요청한다. 커널은 그 요청을 처리하고, 디바이스 드라이버를 거쳐 하드웨어를 제어한다.

자원을 배분하고 입출력을 조율하는 역할

CPU 관리에서는 실행 대기 프로세스의 CPU 할당 순서를 정하는 프로세스 스케줄링, 프로세스 전환 시 상태를 저장하고 복원하는 컨텍스트 스위칭, 하드웨어·소프트웨어 인터럽트 처리, 다수의 프로세스가 동시에 실행되는 것처럼 보이게 하는 멀티태스킹이 수행된다.

메모리 관리의 범위에는 프로세스별 메모리 공간의 동적 할당과 해제, 물리 메모리보다 큰 주소 공간을 제공하는 가상 메모리, 논리적 분할을 위한 페이징·세그먼테이션, 프로세스 간 메모리 영역 침범을 막는 보호가 들어간다.

저장장치에서는 파일 시스템이 데이터 저장과 접근 방식을 제공한다. 운영체제는 디스크 I/O 요청 순서를 조정하고, 버퍼링과 캐싱을 위한 임시 저장 공간을 활용하며, 디스크 공간의 할당과 해제도 관리한다. 입출력장치 쪽에서는 장치 드라이버로 하드웨어 통신 인터페이스를 제공하고, I/O 요청 스케줄링, 장치 간 속도 차이를 보완하는 버퍼링, 출력 데이터의 임시 저장과 순차 처리를 위한 스풀링을 맡는다.

사용자와 프로그램에 열어 두는 인터페이스

운영체제의 인터페이스는 사용자를 위한 조작 환경과 프로그램을 위한 서비스 요청 경로로 나뉜다.

인터페이스 유형 특징 대상 사용자
CLI 텍스트 명령어 기반, 정밀한 제어 시스템 관리자, 개발자
GUI 그래픽 기반, 직관적 조작 일반 사용자
Touch UI 터치 기반 인터랙션 모바일 사용자
Voice UI 음성 명령 기반 스마트 디바이스 사용자

응용 프로그램이 운영체제 서비스를 요청할 때 사용하는 프로그래밍 인터페이스가 시스템 콜(System Call)이다. 라이브러리 호출은 시스템 콜을 준비한 뒤 커널로 제어를 넘기고, 커널은 권한을 검사한 후 하드웨어 접근과 결과 반환을 처리한다.

하드웨어커널라이브러리응용 프로그램하드웨어커널라이브러리응용 프로그램함수 호출시스템 콜 준비시스템 콜 (모드 전환)권한 검사하드웨어 접근결과 반환결과 반환 (모드 복귀)함수 반환값

시스템 콜은 프로세스 관리의 fork(), exec(), exit(), wait(), 파일 관리의 open(), close(), read(), write(), 장치 관리의 ioctl(), read(), write()를 포함한다. 정보 유지를 위한 getpid(), alarm(), sleep()과 통신을 위한 pipe(), socket(), send(), recv()도 같은 경로를 이용한다.

권한을 분리하는 커널 모드와 사용자 모드

현대 운영체제는 CPU의 하드웨어 지원을 바탕으로 커널 모드와 사용자 모드를 구분한다. 이 구분은 시스템 보호와 안정성을 위한 실행 경계다.

커널 모드는 운영체제 커널이 실행되는 특권 모드다. 모든 CPU 명령어를 실행하고 시스템 메모리 전 영역에 접근할 수 있으며, 입출력 장치를 직접 제어한다. 하드웨어 인터럽트 처리와 보호 레지스터 조작도 이 모드에서 가능하다. 프로세스 생성과 종료, 메모리 할당과 해제, 파일 시스템 연산, 네트워크 패킷 처리, 장치 드라이버 실행, 인터럽트 서비스 루틴 실행이 여기에 해당한다.

반대로 일반 응용 프로그램은 비특권 모드인 사용자 모드에서 실행된다. 프로세스별 독립 가상 주소 공간을 사용하고, 하드웨어는 시스템 콜을 통해서만 간접적으로 접근할 수 있다. 직접 I/O 연산, 인터럽트 비활성화, 타이머 직접 조작, 다른 프로세스 메모리 접근, 특권 레지스터 변경은 허용되지 않는다.

시스템 / 인터럽트 / 예외서비스 완료 / 인터럽트 처리완료UserMode응용 프로그램 실행라이브러리 호출KernelMode커널 코드 실행하드웨어 접근

사용자 모드에서 커널 모드로의 전환은 시스템 콜, 하드웨어 장치 이벤트에 따른 인터럽트, 잘못된 명령어와 페이지 폴트 등의 예외에서 발생한다. 서비스 또는 인터럽트 처리가 끝나면 커널은 다시 사용자 모드로 복귀한다.

이 전환에는 레지스터 상태의 저장·복원, 사용자 스택에서 커널 스택으로의 전환, TLB와 CPU 캐시 효율 저하 가능성, 권한 및 파라미터 유효성 검증이 따른다.

x86 아키텍처는 Ring 0~3의 4개 특권 레벨을 제공한다. 대부분의 운영체제는 Ring 0을 커널, Ring 3을 사용자 영역에 사용한다.

Ring 특권 수준 용도
Ring 0 최고 특권 OS 커널
Ring 1 높은 특권 디바이스 드라이버 (일부 OS)
Ring 2 중간 특권 디바이스 드라이버 (일부 OS)
Ring 3 최저 특권 응용 프로그램

커널 구조가 만드는 설계상의 차이

모놀리식 커널은 모든 OS 서비스를 커널 공간에서 실행한다. 빠른 성능과 낮은 오버헤드가 장점이지만, 커널 크기가 커지고 안정성 위험이 생길 수 있다. Linux, Unix, MS-DOS가 예시다.

마이크로커널은 최소한의 기능만 커널에 넣고 나머지를 사용자 공간에서 실행한다. 모듈화, 안정성, 보안성 측면에서 장점이 있는 반면, 빈번한 모드 전환은 성능 저하로 이어질 수 있다. Minix, QNX, L4가 이 방식의 예다.

하이브리드 커널은 모놀리식 커널과 마이크로커널의 장점을 결합해 성능과 모듈화의 균형을 추구한다. 그만큼 설계는 복잡해진다. Windows NT와 macOS(XNU)가 해당한다.

직접 제어에서 분산 환경까지

세대 시기 특징 대표 기술
1세대 1950년대 운영체제 없음, 직접 하드웨어 제어 진공관, 천공카드
2세대 1960년대 배치 처리 시스템 트랜지스터, 일괄처리
3세대 1970년대 다중 프로그래밍, 시분할 IC, Unix, 가상메모리
4세대 1980년대 GUI, 개인용 컴퓨터 VLSI, Windows, MacOS
5세대 1990년대~ 분산 시스템, 모바일 네트워크, 클라우드

운영체제를 이해하는 일은 단순히 사용자 인터페이스를 다루는 범위를 넘는다. 자원 배분, 시스템 콜, 실행 권한의 경계는 시스템 프로그래밍과 성능 최적화, 보안 강화가 만나는 기반이다.

운영체제커널시스템 콜자원 관리보호 링