운영체제란 무엇인가 (Operating System)

한눈에 보기

하드웨어와 응용 프로그램 사이에서 자원을 관리하고 추상화를 제공하는 운영체제를 다룬다. 커널 모드와 사용자 모드, 모놀리식과 마이크로커널 비교, 부팅 과정과 컨테이너까지 큰 그림을 정리한다.

최종 업데이트 2026.09.17

운영체제(Operating System)는 하드웨어와 응용 프로그램 사이에 위치하여 CPU, 메모리, 저장 장치, 입출력 장치 같은 자원을 관리하고, 응용 프로그램에게는 하드웨어를 편리하게 쓸 수 있는 추상화된 인터페이스를 제공하는 시스템 소프트웨어다. 응용 프로그램은 운영체제 덕분에 하드웨어 세부 사항을 몰라도 파일을 읽고 네트워크로 통신할 수 있다. 윈도우(Windows), 리눅스(Linux), macOS, 안드로이드(Android), iOS가 모두 운영체제다.

운영체제의 두 얼굴: 자원 관리자와 추상화 제공자

운영체제의 역할은 두 관점으로 정리된다. 첫째, 자원 관리자(resource manager)로서 한정된 하드웨어를 여러 프로그램과 사용자에게 공정하고 효율적으로 배분한다. CPU 시간은 스케줄링으로, 메모리는 가상 메모리로, 저장 공간은 파일 시스템으로 나눈다. 둘째, 추상화 제공자로서 복잡하고 제각각인 하드웨어를 일관된 개념으로 감싼다. CPU 위의 실행 흐름은 프로세스(process)와 스레드(thread)로, 물리 메모리는 주소 공간(address space)으로, 디스크 블록은 파일(file)로 추상화된다. 개발자가 마주하는 것은 하드웨어가 아니라 이 추상화들이며, 운영체제 공부란 결국 이 추상화들이 어떻게 구현되는지를 배우는 일이다.

커널 모드와 사용자 모드

운영체제의 핵심부인 커널(kernel)은 하드웨어 접근과 자원 관리를 독점해야 한다. 이를 위해 CPU는 최소 두 가지 실행 모드를 제공한다. 커널 모드(kernel mode)에서는 모든 명령과 메모리에 접근할 수 있고, 사용자 모드(user mode)에서는 특권 명령과 다른 프로세스의 메모리 접근이 금지된다. 응용 프로그램은 사용자 모드에서 돌다가 파일 읽기 같은 커널의 서비스가 필요하면 시스템 콜(system call)을 통해 정해진 입구로만 커널 모드에 진입한다. 이 이중 모드 구조가 없다면 어떤 프로그램이든 다른 프로그램의 메모리를 덮어쓰거나 하드웨어를 마음대로 조작할 수 있어 보호가 불가능하다. 사용자 모드에서 특권 명령을 실행하려 하면 CPU가 트랩을 발생시키고 커널이 해당 프로세스를 제재하므로, 보호는 소프트웨어 약속이 아니라 하드웨어가 강제하는 규칙이다.

커널 구조 비교

구조설계장점단점예
모놀리식 커널(Monolithic Kernel)스케줄러, 파일 시스템, 드라이버 등 대부분의 기능이 하나의 커널 주소 공간에서 동작구성 요소 간 호출이 함수 호출이라 빠르다한 부분의 결함이 커널 전체를 무너뜨릴 수 있다리눅스
마이크로커널(Microkernel)커널에는 IPC, 스케줄링 등 최소 기능만 두고 파일 시스템과 드라이버는 사용자 공간 서버로 분리격리로 인해 안정성과 보안성이 높다서버 간 메시지 전달 비용으로 성능 부담이 있다QNX, seL4
하이브리드 커널(Hybrid Kernel)마이크로커널 설계를 기반으로 성능을 위해 상당 기능을 커널 공간에 배치두 접근의 절충구조적 순수성은 떨어진다윈도우 NT, macOS의 XNU

리눅스는 모놀리식이지만 적재 가능 커널 모듈(loadable kernel module)로 드라이버를 실행 중에 넣고 뺄 수 있어 유연성을 보완한다.

운영체제가 관리하는 것들

운영체제의 기능은 과목 목차와 거의 일치한다. 프로세스 관리에서는 프로세스 생성과 종료, 스케줄링, 동기화, 프로세스 간 통신(IPC)을 다룬다. 메모리 관리에서는 가상 메모리, 페이징, 페이지 교체를 다룬다. 저장 장치 관리에서는 파일 시스템과 디스크 스케줄링을, 입출력 관리에서는 장치 드라이버와 인터럽트 처리를 다룬다. 여기에 사용자 인증과 접근 제어 같은 보호와 보안, 그리고 네트워크 프로토콜 스택 운영이 더해진다. 각 기능은 독립적이지 않고 맞물려 있다. 예를 들어 페이지 폴트 처리는 메모리 관리이지만 디스크 입출력과 스케줄링을 함께 일으킨다.

쓰임새에 따라 운영체제의 형태도 달라진다. 데스크톱과 서버용 범용 운영체제는 처리량과 공정성을 추구하고, 자동차와 공장 설비에 들어가는 실시간 운영체제(RTOS, Real-Time Operating System)는 정해진 시간 안의 응답을 보장하는 것을 최우선으로 한다. 모바일 운영체제는 배터리와 터치 환경에 맞춰 백그라운드 실행을 강하게 제한한다. 한편 가상 머신(virtual machine)은 하이퍼바이저(hypervisor) 위에 운영체제 전체를 여러 개 올리는 기술이고, 컨테이너(container)는 하나의 커널을 공유하면서 네임스페이스와 cgroup으로 프로세스 그룹을 격리하는 기술이다. 컨테이너가 가벼운 이유가 커널을 새로 띄우지 않기 때문이라는 점은 운영체제 이해와 바로 연결되는 실무 지식이다.

부팅 과정 개요

전원이 켜지면 펌웨어(UEFI 또는 예전의 BIOS)가 하드웨어를 점검하고 부트로더(bootloader)를 찾아 실행한다. 부트로더는 디스크에서 커널 이미지를 메모리에 적재하고 제어를 넘긴다. 커널은 메모리 관리자와 스케줄러 등 핵심 구조를 초기화하고 장치를 인식한 뒤 최초의 사용자 프로세스(리눅스의 init 또는 systemd)를 만든다. 이후의 모든 프로세스는 이 최초 프로세스로부터 fork로 파생되며, 로그인 화면과 셸이 뜨는 것도 그 결과다. 부팅 과정은 운영체제가 스스로를 어떻게 세우는지를 보여 주는 좋은 그림이다. 커널이 가장 먼저 실행되지만 일단 초기화가 끝나면 커널은 스스로 도는 프로그램이 아니라, 시스템 콜과 인터럽트가 있을 때만 깨어나 일하는 수동적 존재가 된다는 점도 함께 기억해 둘 만하다.

면접에서 이렇게 물어본다

  • 운영체제를 자원 관리자와 추상화 제공자라는 두 관점에서 설명해 보라.
  • 커널 모드와 사용자 모드를 나누는 이유는 무엇이고 모드 전환은 언제 일어나는가.
  • 모놀리식 커널과 마이크로커널의 차이와 각각의 장단점을 비교해 보라.
  • 시스템 콜이 일반 함수 호출과 다른 점은 무엇인가.
  • 전원이 켜진 뒤 로그인 화면이 나오기까지의 과정을 큰 흐름으로 설명해 보라.
운영체제 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기