기초 개념, 기술 면접 대비

운영체제 면접 퀴즈

시스템 프로그래밍의 핵심

프로세스, 스레드, 메모리 관리, 동기화, 데드락 등 운영체제 핵심 개념을 학습하세요. 시스템 레벨 이해가 필수인 백엔드 개발자의 기초.

로그인 없이 풀어보기
56개 문제, 무료

학습할 핵심 개념

프로세스 vs 스레드
CPU 스케줄링 알고리즘
메모리 관리와 가상메모리
동기화와 뮤텍스/세마포어
데드락과 해결방법
파일 시스템
I/O 시스템

핵심 개념 미리보기

운영체제 면접에서 꼭 나오는 개념을 미리 확인하세요

프로세스 (Process)

핵심

실행 중인 프로그램이고, 자기만의 주소 공간을 갖습니다. 커널은 각 프로세스의 상태를 PCB 에 담아 관리합니다.

프로세스 (Process)

프로세스란?

실행 중인 프로그램의 인스턴스. OS가 관리하는 작업 단위.

메모리 구조

스택과 힙이 서로 마주 보고 자라며 그 사이 빈 공간을 나눠 쓴다 스택 아래로 자란다 빈 공간 위로 자란다 힙 호출과 지역 변수 직접 잡은 메모리 그래서 재귀가 깊으면 스택이 자라다 빈 공간을 다 쓰고 넘친다

높은 주소에서 낮은 주소 순으로 이렇게 놓입니다.

영역담는 것자라는 방향
스택 (Stack)지역변수, 매개변수아래로
빈 공간두 영역이 만나면 넘침이다
힙 (Heap)동적 할당 (malloc, new)위로
데이터 (Data)전역변수, static고정
코드 (Code)실행 명령어고정

프로세스 상태

[생성] → [준비] ⇄ [실행] → [종료]
              ↕
           [대기/블록]
상태설명
준비 (Ready)CPU 대기 중
실행 (Running)CPU에서 실행 중
대기 (Blocked)I/O 완료 대기

왜 상태가 여러 개인가

돌고 있는 것과 멈춘 것으로 나누면 부족합니다. 왜 멈췄는지가 처방을 바꿉니다.

상태무엇을 기다리나그때 CPU 는
실행 준비차례를 기다린다부족하다
대기디스크나 네트워크를 기다린다한가하다
중지외부 신호를 기다린다무관하다

둘째가 많은데 CPU 사용률이 낮은 것이 흔한 오해의 원인입니다. 서버가 한가해 보여도 느린 것은 대개 기다림 때문입니다. 그때 CPU 를 늘리면 아무것도 나아지지 않습니다.

죽은 뒤에 남는 것

프로세스가 끝나도 그 결과를 부모가 받아 가기 전까지는 기록이 남습니다.

부모가 받아 가지 않으면 기록만 남은 것이 쌓인다
부모가 먼저 죽으면 남은 자식은 다른 부모에게 넘겨진다

첫째는 프로세스를 계속 만드는 서비스에서 자원이 새는 모양으로 나타납니다. 만들었으면 끝을 확인해 거둬야 합니다.

실무 포인트

  • fork(): 부모 프로세스 복사하여 자식 프로세스 생성
  • exec(): 현재 프로세스를 새 프로그램으로 교체
  • 좀비 프로세스: 종료됐지만 부모가 회수 안 한 상태
  • 고아 프로세스: 부모가 먼저 종료된 자식 (init이 입양)
면접에서 이렇게 나옵니다
  • Q.프로세스의 메모리 구조를 설명해주세요
  • Q.좀비 프로세스란? 어떻게 해결하나요?

스레드 (Thread)

핵심

스레드 (Thread)

스레드란?

프로세스 내의 실행 흐름 단위. 같은 프로세스의 메모리를 공유.

공유 vs 독립

스레드는 코드와 힙을 나눠 쓰고 스택과 레지스터만 따로 갖는다 나눠 쓰는 것 코드, 힙, 열어 둔 파일 한쪽이 고치면 다 보인다 따로 갖는 것 스택, 레지스터 그래서 각자 호출 흐름이 있다 지역 변수는 안전하고 함께 쓰는 값은 안전하지 않다 그래서 잠금이 필요한 자리는 나눠 쓰는 쪽에만 있다 한 스레드가 잘못된 메모리를 만지면 그 프로세스가 함께 죽는다
공유 자원독립 자원
코드 영역스택
데이터 영역PC (Program Counter)
힙 영역레지스터
파일 디스크립터스레드 ID

사용자 스레드 vs 커널 스레드

구분사용자 스레드커널 스레드
관리 주체라이브러리OS 커널
전환 속도빠름느림 (시스템 콜)
블로킹하나 블록 → 전체 블록독립적

동기화 문제

스레드 A 는 잔액에 100을 더하고, 스레드 B 는 50을 뺍니다.

순서동작잔액
1A 가 읽는다1000
2B 가 읽는다1000. 아직 A 가 쓰지 않았다
3A 가 쓴다1100
4B 가 쓴다950. A 의 변경이 사라졌다
→ Race Condition 발생. 뮤텍스/세마포어로 해결.

개수를 어떻게 정하나

많이 만들면 빨라질 것 같지만 일의 성격이 상한을 정합니다.

일의 성격적정선왜
계산이 대부분코어 수 근처그 이상은 번갈아 도는 비용만 든다
기다림이 대부분코어 수보다 훨씬 많게기다리는 동안 다른 것이 돈다
섞여 있다성격별로 풀을 나눈다한 풀에 섞으면 느린 쪽이 빠른 쪽을 굶긴다

셋째가 실무에서 큰 차이를 만듭니다. 외부 API 를 부르는 작업과 짧은 계산을 같은 풀에 넣으면 외부가 느려질 때 짧은 작업까지 멈춥니다. 나누면 그 전파가 끊깁니다.

나눠 쓰는 값을 다룰 때

값이 그냥 보이는 것이 편함이자 위험입니다.

읽기만 하면 안전하다. 고치는 순간부터 규칙이 필요하다
고치는 쪽이 하나라도 읽는 쪽이 최신을 본다는 보장은 따로 필요하다
잠금 범위는 좁게. 넓으면 병렬성이 사라진다

둘째가 눈에 안 보이는 결함을 만듭니다. 값을 고쳤는데 다른 스레드가 옛 값을 계속 보는 경우이고, 이것은 시험에서 잘 안 잡힙니다.

실무 포인트

  • Java: Thread, ExecutorService (스레드풀)
  • Python: GIL 때문에 멀티스레딩 CPU 바운드에 불리
  • Go: goroutine (경량 스레드, M:N 모델)
면접에서 이렇게 나옵니다
  • Q.스레드가 공유하는 자원과 독립적인 자원은?
  • Q.사용자 레벨 스레드와 커널 레벨 스레드의 차이는?
  • Q.스레드풀을 사용하는 이유는?

프로세스 vs 스레드

핵심

주소 공간을 독립으로 갖는지, 그리고 무엇을 공유하는지가 다릅니다. 프로세스는 자기 주소 공간과 자원을 따로 갖고, 스레드는 그것을 공유하면서 실행 흐름(스택과 레지스터)만 따로 갖습니다.

프로세스 vs 스레드

핵심 비교

구분프로세스스레드
메모리독립 공간코드/데이터/힙 공유
생성 비용높음 (fork)낮음
통신IPC 필요 (파이프, 소켓)공유 메모리 직접 접근
안정성한 프로세스 죽어도 OK한 스레드 죽으면 전체 영향
컨텍스트 스위칭느림 (메모리 맵 교체)빠름

메모리 구조

같은 프로세스의 스레드는 메모리를 나눠 쓰고 스택만 따로 갖는다 프로세스 하나 코드와 데이터. 나눠 쓴다 스레드1 스택 따로 스레드2 스택 따로 함께 고칠 수 있다 그래서 잠금이 필요하다 다른 프로세스는 코드와 데이터도 따로 갖는다 하나가 죽어도 다른 하나가 산다. 대신 주고받기가 비싸다 한 스레드가 잘못된 메모리를 만지면 그 프로세스가 다 죽는다

프로세스 A 와 B 는 각자 독립된 공간을 가집니다.

영역프로세스 사이같은 프로세스의 스레드 사이
코드독립공유
데이터독립공유
힙독립공유
스택독립스레드마다 따로 가진다

무엇이 실제로 갈리나

표로 외우면 면접에서 막힙니다. 하나가 죽었을 때와 값을 나눌 때 무슨 일이 생기는지가 전부입니다.

질문프로세스스레드
하나가 비정상 종료하면나머지는 살아 있다대개 전체가 죽는다
값을 나누려면통로를 만들어야 한다그냥 보인다
값을 나눌 때 위험낮다동시에 고치면 깨진다
만드는 비용크다작다

둘째와 셋째가 한 몸입니다. 그냥 보이는 것이 편해서 쓰는데, 그 편함이 곧 동시에 고쳐서 깨지는 원인입니다. 편한 만큼 잠금이 필요해집니다.

문맥을 바꾸는 비용

번갈아 돌리려면 지금 상태를 넣어 두고 다른 것을 꺼내야 합니다.

스레드끼리 바꾸는 것이 프로세스끼리 바꾸는 것보다 싸다
주소 공간을 안 바꿔도 되기 때문이다
그래도 공짜는 아니다. 너무 많이 만들면 바꾸는 데 시간을 쓴다

셋째가 스레드를 무한히 늘리지 않는 이유입니다. 개수를 정해 두고 재사용합니다.

실무 선택 기준

  • 멀티 프로세스: 안정성 중요 (Chrome 탭, Nginx worker)
  • 멀티 스레드: 성능 중요 (Java 서버, 게임 서버)
  • 이벤트 루프: I/O 바운드 (Node.js, Redis)
면접에서 이렇게 나옵니다
  • Q.프로세스와 스레드의 차이를 설명해주세요
  • Q.멀티 프로세스 vs 멀티 스레드, 언제 뭘 쓰나요?

더 많은 개념과 문제는 가입 후 이용할 수 있어요

먼저 5문제 맛보기

운영체제 면접 빈출 질문

실제 면접에서 자주 나오는 질문들입니다

Q.

프로세스의 메모리 구조를 설명해주세요

프로세스 (Process) 개념 정리 보기
Q.

좀비 프로세스란? 어떻게 해결하나요?

프로세스 (Process) 개념 정리 보기
Q.

스레드가 공유하는 자원과 독립적인 자원은?

스레드 (Thread) 개념 정리 보기
Q.

사용자 레벨 스레드와 커널 레벨 스레드의 차이는?

스레드 (Thread) 개념 정리 보기
Q.

스레드풀을 사용하는 이유는?

스레드 (Thread) 개념 정리 보기
Q.

프로세스와 스레드의 차이를 설명해주세요

프로세스 vs 스레드 개념 정리 보기
Q.

멀티 프로세스 vs 멀티 스레드, 언제 뭘 쓰나요?

프로세스 vs 스레드 개념 정리 보기

이런 점이 좋아요

시스템 레벨 디버깅 능력

성능 최적화 이해

면접 필수 질문 대비

지금 바로 시작하세요

무료로 운영체제 퀴즈를 풀고, AI 오답 분석으로 실력을 키우세요.