Skip to content
난이도 면접 빈출문제은행 4

운영체제의 큰 그림 ​

운영체제(OS, Operating System)는 CPU·메모리·저장 장치 같은 하드웨어 자원을 여러 프로그램이 안전하게 나눠 쓰도록 관리하는 소프트웨어다. 그 핵심인 커널(kernel)은 응용 프로그램보다 높은 권한으로 실행되고, 응용 프로그램은 하드웨어가 필요할 때 커널에 부탁해야 한다. 이 "권한을 나누고, 부탁하는 창구를 하나로 모은다"는 구조를 이해하면 뒤에 나올 운영체제 문서가 모두 같은 그림 위에서 읽힌다.

운영체제가 하는 일 ​

운영체제가 없다면 모든 프로그램이 디스크 제어 방법과 메모리 위치를 직접 챙겨야 하고, 한 프로그램의 실수가 다른 프로그램의 메모리를 덮어쓸 수 있다. 운영체제는 이 문제를 세 가지 역할로 푼다.

역할하는 일예
자원 관리한정된 CPU 시간·메모리·디스크를 누구에게 얼마나 줄지 정한다CPU 스케줄링, 메모리 할당
보호프로그램끼리, 그리고 프로그램과 커널 사이를 격리한다프로그램마다 따로 주는 주소 공간(address space)
추상화복잡한 하드웨어를 쓰기 쉬운 개념으로 감싼다프로세스(process), 가상 메모리(virtual memory), 파일

세 역할 가운데 추상화(abstraction)가 특히 중요하다. 실행 중인 프로그램은 "CPU를 혼자 쓰는 것처럼" 실행되는 프로세스가 되고, "메모리 전체를 혼자 쓰는 것처럼" 보이는 가상 메모리를 받으며, 디스크 블록(disk block) 대신 이름 붙은 파일을 다룬다. 실제로는 여럿이 나눠 쓰는 자원을 각자 독차지한 것처럼 보이게 해 주는 것이 운영체제의 기본 기술이다.

커널 ​

커널은 운영체제 가운데 메모리에 항상 올라가 있으면서 하드웨어를 직접 다루는 부분이다. 운영체제라고 하면 셸(shell, 사용자가 명령을 입력하는 프로그램)과 기본 유틸리티까지 포함하는 넓은 뜻으로도 쓰지만, 면접에서 "운영체제가 한다"는 말은 대부분 커널이 한다는 뜻이다. 커널은 프로세스를 만들고 없애며, 메모리를 나눠 주고, 파일 시스템(file system)과 장치를 관리한다.

다이어그램 로딩…

응용 프로그램은 제한된 권한으로, 커널은 모든 권한으로 실행된다. 그래서 응용 프로그램은 하드웨어에 직접 손대지 않고 항상 커널을 거친다. 이 권한 구분이 다음 절의 주제다.

사용자 모드와 커널 모드 ​

CPU는 명령어를 실행할 권한 단계를 둘 이상 제공한다. 응용 프로그램은 제한된 권한의 사용자 모드(user mode)에서, 커널은 모든 권한을 가진 커널 모드(kernel mode)에서 실행된다. 이렇게 모드를 둘로 나누는 설계를 이중 모드(dual mode)라고 한다. 인텔·AMD의 PC·서버용 CPU인 x86 계열은 권한 단계를 링(ring) 0~3으로 나누고, 숫자가 작을수록 권한이 높다. 커널은 가장 높은 링 0에서, 응용 프로그램은 가장 낮은 링 3에서 실행된다.

모드를 나누는 이유는 보호다. 입출력 장치 제어, 페이지 테이블(page table) 변경, 인터럽트(interrupt) 끄기처럼 시스템 전체에 영향을 주는 명령어는 특권 명령어(privileged instruction)로 정해져 커널 모드에서만 실행된다. 사용자 모드에서 이런 명령어를 실행하려 하면 CPU가 예외(exception)를 일으킨다. 예외가 나면 CPU는 하던 일을 멈추고 제어를 커널 모드의 커널에 넘기므로, 커널이 상황을 판단해 보통 그 프로세스를 종료한다. 그래서 버그가 있는 프로그램 하나가 디스크를 망가뜨리거나 다른 프로세스의 메모리를 읽는 일이 막힌다.

이어지는 내용은 운영체제의 큰 그림 2에서 다룬다.

면접 포인트 ​

  • "운영체제는 무슨 일을 하나요?" → 자원 관리, 보호, 추상화. 프로세스·가상 메모리·파일로 여럿이 나눠 쓰는 자원을 각자 독차지한 것처럼 보이게 한다.
  • "커널이 뭔가요?" → 운영체제 가운데 메모리에 항상 올라가 하드웨어를 직접 다루는 부분. 면접에서 "운영체제가 한다"는 말은 대부분 커널이 한다는 뜻이다.
  • "모드를 왜 나누나요?" → 보호. 특권 명령어를 커널 모드에서만 허용해 잘못된 프로그램이 시스템 전체를 망치지 못하게 한다.
  • 사용자 모드에서 특권 명령어를 실행하면 CPU가 예외를 일으키고, 커널은 보통 그 프로세스를 종료한다.

관련 문서