운영체제 미드레벨 기술면접

운영체제 미드레벨 (3~7년) 종합 5문항 조회수 26 · 2026-08-19 (수) 02:11:11
1 가상 메모리
Medium

Q. 프로덕션 환경에서 애플리케이션이 갑자기 느려지고 시스템 모니터링 결과 페이지 폴트(Page Fault)가 급격히 증가하고 있습니다. 이러한 현상의 원인을 어떻게 진단하고, 어떤 방법으로 해결할 수 있는지 설명해주세요.

페이지 폴트의 종류(Minor/Major)와 워킹셋, 스왑 메모리의 관계를 생각해보세요.

A. 모범답안

페이지 폴트 급증은 주로 물리 메모리 부족으로 인한 스왑 발생이 원인입니다. 먼저 vmstat, sar 등으로 Major 페이지 폴트와 스왑 사용량을 확인하여 디스크 I/O로 인한 지연인지 판단합니다. 애플리케이션의 메모리 사용 패턴을 프로파일링하여 메모리 누수나 비효율적인 할당을 찾아냅니다. 단기적으로는 물리 메모리 증설이나 스왑 공간 조정, 장기적으로는 메모리 사용 최적화(캐시 크기 조정, 객체 풀 사용)와 워킹셋 크기 축소가 필요합니다. 필요시 프로세스를 여러 서버로 분산하거나 메모리 집약적 작업을 스케줄링으로 분산시킵니다.

핵심 포인트
  • • Major/Minor 페이지 폴트 구분 및 모니터링
  • • 메모리 프로파일링을 통한 원인 분석
  • • 워킹셋 최적화 및 물리 메모리 관리 전략
답변에 넣으면 좋은 키워드
페이지 폴트 스왑 워킹셋 vmstat 메모리 프로파일링 TLB
실무에서는

대용량 데이터 처리 서비스에서 메모리 부족으로 인한 성능 저하를 진단하고 해결할 때 필수적인 지식입니다.

Follow-up 질문

메모리 맵 파일(mmap)을 사용하는 경우 페이지 폴트 패턴이 어떻게 달라지며, 이를 어떻게 최적화할 수 있나요?

2 스케줄링
Medium

Q. 실시간 처리가 필요한 컴포넌트와 배치 처리 컴포넌트가 함께 동작하는 시스템을 설계할 때, 프로세스/스레드 우선순위와 CPU 스케줄링 정책을 어떻게 설정해야 하는지 설명해주세요. 리눅스 환경을 기준으로 답변해주세요.

CFS, SCHED_FIFO, SCHED_RR 등 다양한 스케줄링 정책과 nice 값, RT priority의 차이를 고려하세요.

A. 모범답안

실시간 컴포넌트에는 SCHED_FIFO나 SCHED_RR 같은 실시간 스케줄링 정책을 적용하고 RT priority를 높게 설정하여 즉각 응답성을 보장합니다. 배치 처리 컴포넌트는 기본 CFS(SCHED_OTHER) 정책을 사용하되 nice 값을 높여(우선순위 낮춤) CPU를 양보하도록 합니다. 실시간 스레드가 CPU를 독점하지 않도록 cgroup의 cpu.rt_runtime_us를 설정하여 CPU 시간을 제한합니다. CPU 코어 친화성(affinity)을 설정해 실시간 작업을 특정 코어에 고정하고 배치 작업을 다른 코어에 배치하는 것도 효과적입니다. 모니터링을 통해 스케줄링 지연(scheduling latency)과 컨텍스트 스위칭을 측정하여 지속적으로 튜닝합니다.

핵심 포인트
  • • 실시간 스케줄링 정책(SCHED_FIFO/RR)과 일반 스케줄링(CFS) 분리
  • • cgroup을 통한 CPU 시간 제한 및 격리
  • • CPU affinity를 활용한 코어 단위 워크로드 분리
답변에 넣으면 좋은 키워드
SCHED_FIFO CFS nice RT priority cgroup CPU affinity
실무에서는

IoT 게이트웨이나 미디어 스트리밍 서버처럼 실시간 처리와 백그라운드 작업이 공존하는 시스템에서 필수적입니다.

Follow-up 질문

실시간 스케줄링 정책을 사용할 때 Priority Inversion 문제가 발생할 수 있는데, 이를 어떻게 방지할 수 있나요?

3 동기화
Hard

Q. 뮤텍스(Mutex), 세마포어(Semaphore), 스핀락(Spinlock), RWLock의 내부 구현 방식과 성능 특성을 비교하고, 각각 어떤 상황에서 사용하는 것이 최적인지 설명해주세요. 특히 컨텍스트 스위칭 비용과 대기 전략 관점에서 설명해주세요.

각 동기화 기법이 대기 시 CPU를 양보하는지, 바쁘게 대기하는지를 중심으로 생각해보세요.

A. 모범답안

뮤텍스는 락 획득 실패 시 슬립 상태로 전환되어 컨텍스트 스위칭이 발생하며, 긴 임계 영역에 적합합니다. 스핀락은 바쁜 대기(busy waiting)로 CPU를 계속 사용하므로 짧은 임계 영역과 멀티코어 환경에 적합하며, 인터럽트 핸들러처럼 슬립할 수 없는 컨텍스트에서 사용됩니다. 세마포어는 카운팅 기능으로 여러 자원 접근 제어에 사용되며 뮤텍스처럼 슬립 방식으로 동작합니다. RWLock은 읽기 작업이 많은 경우 여러 읽기 스레드의 동시 접근을 허용하여 성능을 향상시키지만, 쓰기 작업 시 모든 접근을 차단합니다. 임계 영역이 수 마이크로초 이하면 스핀락, 그 이상이면 뮤텍스나 세마포어를 선택하며, 읽기 비율이 80% 이상이면 RWLock이 유리합니다.

핵심 포인트
  • • 슬립 방식(뮤텍스, 세마포어)과 바쁜 대기(스핀락)의 트레이드오프
  • • 임계 영역 길이와 코어 수에 따른 최적 선택
  • • RWLock의 읽기 편향 특성과 적용 시나리오
답변에 넣으면 좋은 키워드
뮤텍스 스핀락 세마포어 RWLock 컨텍스트 스위칭 바쁜 대기
실무에서는

고성능 서버나 데이터베이스 엔진에서 동기화 오버헤드를 최소화하기 위해 상황에 맞는 락을 선택하는 것이 중요합니다.

Follow-up 질문

최신 CPU의 Futex(Fast Userspace Mutex)는 어떤 방식으로 동작하며, 기존 뮤텍스 대비 어떤 성능 이점이 있나요?

4 파일 시스템
Medium

Q. 저널링 파일 시스템(Journaling File System)의 동작 원리와 메타데이터 저널링, 풀 데이터 저널링의 차이를 설명하고, 각각의 성능과 안정성 트레이드오프를 비교해주세요. ext4나 XFS를 예로 들어 설명해주세요.

파일 시스템 크래시 발생 시 일관성을 어떻게 보장하는지, 저널에 무엇을 기록하는지를 중심으로 생각해보세요.

A. 모범답안

저널링 파일 시스템은 변경 사항을 먼저 저널 영역에 기록한 후 실제 데이터 영역에 반영하여 크래시 시 일관성을 보장합니다. 메타데이터 저널링(ordered mode)은 메타데이터만 저널에 기록하고 데이터는 직접 쓰기하여 성능이 좋지만 크래시 시 데이터 손실 가능성이 있습니다. 풀 데이터 저널링(journal mode)은 메타데이터와 데이터를 모두 저널에 기록하여 안정성이 높지만 쓰기가 두 번 발생해 성능이 저하됩니다. ext4는 기본적으로 ordered mode를 사용하며, XFS는 메타데이터 저널링과 함께 지연 할당으로 성능을 최적화합니다. 데이터베이스처럼 무결성이 중요한 경우 data=journal 옵션을, 일반 서버는 data=ordered를 사용하는 것이 일반적입니다.

핵심 포인트
  • • 저널을 통한 크래시 복구 메커니즘
  • • 메타데이터 저널링과 풀 데이터 저널링의 성능-안정성 트레이드오프
  • • 실무에서의 저널링 모드 선택 기준
답변에 넣으면 좋은 키워드
저널링 메타데이터 ordered mode journal mode ext4 XFS
실무에서는

데이터베이스 서버나 로그 수집 시스템에서 파일 시스템 설정에 따라 성능과 데이터 안정성이 크게 달라집니다.

Follow-up 질문

Copy-on-Write 방식의 파일 시스템(Btrfs, ZFS)은 저널링과 어떻게 다르며, 어떤 장단점이 있나요?

5 시스템 설계
Hard

Q. 수만 개의 클라이언트가 동시에 접속하는 네트워크 서버를 설계할 때, 멀티프로세스, 멀티스레드, 이벤트 기반(epoll/kqueue) 아키텍처의 장단점을 비교하고, 각 모델에서 C10K 문제를 어떻게 해결하는지 설명해주세요.

각 모델의 메모리 사용량, 컨텍스트 스위칭 오버헤드, 확장성을 중심으로 비교해보세요.

A. 모범답안

멀티프로세스 모델은 격리성이 뛰어나지만 프로세스당 메모리 오버헤드가 크고 컨텍스트 스위칭 비용이 높아 수천 개 이상 확장이 어렵습니다. 멀티스레드 모델은 메모리 효율이 좋지만 스레드 수가 증가하면 컨텍스트 스위칭과 동기화 오버헤드가 커지며 C10K 문제에 직면합니다. 이벤트 기반 모델(epoll/kqueue)은 단일 스레드에서 수만 개의 연결을 비동기로 처리하여 메모리와 컨텍스트 스위칭 오버헤드를 최소화하며 C10K 문제를 해결합니다. 실무에서는 하이브리드 접근으로 워커 풀 패턴(여러 스레드가 각각 epoll 사용)을 사용하여 멀티코어를 활용하면서도 높은 동시성을 지원합니다. Nginx는 이벤트 기반 워커 프로세스, Apache MPM은 멀티프로세스/스레드 하이브리드를 사용하는 대표적 예입니다.

핵심 포인트
  • • 각 모델의 메모리, 컨텍스트 스위칭, 확장성 비교
  • • 이벤트 기반 아키텍처의 C10K 해결 원리
  • • 하이브리드 모델을 통한 멀티코어 활용 전략
답변에 넣으면 좋은 키워드
C10K epoll 멀티스레드 이벤트 기반 워커 풀 비동기 I/O
실무에서는

게임 서버, 채팅 서버, API 게이트웨이처럼 대규모 동시 접속을 처리하는 시스템 설계에서 핵심적인 아키텍처 결정입니다.

Follow-up 질문

io_uring 같은 최신 비동기 I/O 인터페이스는 기존 epoll 대비 어떤 개선점이 있으며, 어떤 워크로드에 적합한가요?

댓글 0

로그인 후 댓글을 작성할 수 있습니다.

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요!