본문 바로가기

CS/기술면접

[기술면접] 1. 운영체제: CS 기술면접 대비 자료와 예상 문답

FIFO (First In First Out)

  • 가장 간단한 알고리즘
  • 메모리에 올라온 가장 오래된 페이지를 교체
  • 각 페이지가 올라온 시간을 페이지에 기록 또는 페이지가 올라온 순서를 큐에 저장
  • 이해가 쉽고 구현이 간단
  • 페이지 부재율이 높아지고 실행속도가 저하될 위험성 보유

질문: FIFO 페이지 교체 알고리즘의 단점은 무엇인가요?

답변: FIFO 페이지 교체 알고리즘의 단점은 페이지 부재율이 높아질 수 있다는 것입니다. 이는 가장 오래된 페이지를 교체하므로 자주 사용되는 페이지도 교체될 가능성이 높아, 성능 저하를 초래할 수 있습니다. 또한, FIFO 알고리즘은 실행 속도가 저하될 위험성을 가지고 있습니다.

최적(Optimal) 페이지 교체

  • 구현 불가능한 알고리즘
  • 앞으로 가장 오랫동안 사용되지 않을 페이지 교체
  • 프로세스가 앞으로 사용할 페이지를 미리 알아야 함
  • 가장 페이지 교체 수가 적다(가장 효율적이다)

질문: 최적 페이지 교체 알고리즘의 구현이 불가능한 이유는 무엇인가요?

답변: 최적 페이지 교체 알고리즘은 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 방식입니다. 그러나 이 알고리즘을 구현하기 위해서는 프로세스가 앞으로 어떤 페이지를 사용할지 미리 알아야 하는데, 이는 현실적으로 불가능하기 때문에 구현이 어렵습니다.

LRU(Least-Recently-Used)

  • 가장 오래 사용되지 않은 페이지 교체
  • 최적 알고리즘의 방식과 비슷한 효과 기대
  • FIFO보다 효율적
  • 많은 운영체제가 채택하는 알고리즘이며, 좋은 알고리즘으로 평가됨

질문: LRU 알고리즘이 FIFO보다 효율적인 이유는 무엇인가요?

답변: LRU 알고리즘은 가장 오래 사용되지 않은 페이지를 교체하는 방식으로, 실제 사용 패턴을 더 잘 반영하여 불필요한 페이지 교체를 줄일 수 있습니다. 반면 FIFO는 단순히 오래된 순서대로 페이지를 교체하므로, 자주 사용되는 페이지도 교체될 수 있어 비효율적입니다.

LFU(Least-Frequently-Used)

  • 참조 횟수가 가장 적은 페이지 교체
  • 교체 대상인 페이지가 여러 개일 경우 가장 오래되지 않은 페이지를 교체
  • 초기에만 쓰이고 이후에 쓰이지 않아도 메모리에 페이지가 잔존할 가능성 보유
  • 구현에 상당한 비용이 든다
  • 잘 쓰이지 않는다

질문: LFU 알고리즘의 단점은 무엇인가요?

답변: LFU 알고리즘의 단점은 참조 횟수가 적은 페이지를 교체하는 방식으로, 초기에만 사용되고 이후에 사용되지 않는 페이지가 메모리에 잔존할 가능성이 있습니다. 또한, 구현에 상당한 비용이 들기 때문에 실제로 잘 쓰이지 않습니다.

MFU(Most-Frequently-Used)

  • 참조 횟수가 가장 많은 페이지 교체
  • LFU와 반대 개념
  • 구현에 상당한 비용이 든다
  • 잘 쓰이지 않는다

질문: MFU 알고리즘이 잘 쓰이지 않는 이유는 무엇인가요?

답변: MFU 알고리즘은 참조 횟수가 가장 많은 페이지를 교체하는 방식으로, 자주 사용되는 페이지를 교체하게 되어 비효율적입니다. 또한, 구현에 상당한 비용이 들기 때문에 실제로 잘 쓰이지 않습니다.

Thread Pool(스레드 풀)

  • 스레드를 미리 만들어놓은 집합
  • 장점
    1. 프로그램 성능 저하 방지
    2. 다수의 사용자 요청 처리
  • 단점
    1. 너무 많이 만들어놓을 경우 메모리 낭비 발생
    2. 유휴 스레드 발생

질문: 스레드 풀의 장점과 단점은 무엇인가요?

답변: 스레드 풀의 장점은 프로그램 성능 저하를 방지하고 다수의 사용자 요청을 효율적으로 처리할 수 있다는 것입니다. 반면 단점으로는 너무 많은 스레드를 미리 만들어놓을 경우 메모리 낭비가 발생하고 유휴 스레드가 생길 수 있다는 점이 있습니다.

Multi-Thread(멀티 스레드)

  • 프로세스: 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것
  • 스레드: 프로세스의 실행 단위, 각자의 스택과 PC 레지스터 값 보유
  • 장점
    1. 메모리 공간과 시스템 자원 소모 감소
    2. 프로세스 간 통신 방법에 비해 스레드 간 통신 방법이 훨씬 간단(시간 단축)
  • 단점
    1. 타 스레드에서 사용 중인 변수 등에 접근하여 엉뚱한 값을 가져오거나 수행할 수 있음
    2. 동기화 작업 수행 필요
    3. 병목 현상 발생 가능성 보유

질문: 멀티 스레드의 장단점은 무엇인가요?

답변: 멀티 스레드의 장점은 메모리 공간과 시스템 자원 소모를 감소시키고, 프로세스 간 통신 방법에 비해 스레드 간 통신 방법이 훨씬 간단하다는 것입니다. 단점으로는 다른 스레드에서 사용 중인 변수 등에 접근하여 엉뚱한 값을 가져오거나 수행할 수 있고, 동기화 작업이 필요하며 병목 현상이 발생할 가능성이 있습니다.

스케줄링

  • 실행 중인 모든 프로세스들에게 골고루 CPU를 할당하는 일

질문: 스케줄링이란 무엇인가요?

답변: 스케줄링은 실행 중인 모든 프로세스들에게 골고루 CPU를 할당하는 작업을 의미합니다. 이를 통해 시스템 자원을 효율적으로 사용할 수 있도록 관리합니다.

선점형 운영체제(Preemptive OS)

  • 현재 실행 중인 프로세스A보다 높은 우선순위를 가진 프로세스B가 등장하면 스케줄러에 의해 실행 순서가 조절된다

질문: 선점형 운영체제와 비선점형 운영체제의 차이점은 무엇인가요?

답변: 선점형 운영체제는 현재 실행 중인 프로세스보다 높은 우선순위를 가진 프로세스가 등장하면 스케줄러에 의해 실행 순서가 조절되는 운영체제입니다. 반면, 비선점형 운영체제는 현재 실행 중인 프로세스가 끝나야만 다음 프로세스가 CPU를 할당받을 수 있습니다.

우선순위 스케줄링 알고리즘(Priority Scheduling Algorithm)

  • 각 프로세스마다 우선순위를 부여
  • 선점형 운영체제의 대표적 특징

질문: 우선순위 스케줄링 알고리즘의 단점은 무엇인가요?

답변: 우선순위 스케줄링 알고리즘의 단점은 낮은 우선순위를 가진 프로세스가 무한 대기 상태에 빠질 수 있다는 것입니다. 이를 해결하기 위해 에이징(Aging) 기법을 사용하여 시간이 지남에 따라 우선순위를 점진적으로 높여줄 수 있습니다.

라운드로빈 스케줄링 알고리즘(Round Robin Scheduling Algorithm)

  • 실행의 최소 단위시간을 타임퀀텀 또는 타임 슬라이스라고 함
  • 타임퀀텀을 기준으로 정해진 시간마다 CPU를 할당, 그 시간이 지나면 다음 프로세스를 할당
  • 타임퀀텀 기준의 중요성
    • 너무 길면 바로 반응이 오는 시스템에 문제 발생 가능성
    • 너무 짧은 경우 문맥 전환이 자주 발생하여 그만큼의 성능 저하 발생 가능성

질문: 라운드로빈 스케줄링 알고리즘의 타임퀀텀이 중요한 이유는 무엇인가요?

답변: 타임퀀텀은 각 프로세스가 CPU를 할당받는 최소 단위 시간입니다. 타임퀀텀이 너무 길면 시스템 반응 속도가 느려질 수 있고, 너무 짧으면 문맥 전환이 자주 발생하여 오버헤드가 증가하고 시스템 성능이 저하될 수 있습니다.

우선순위 역전현상(Priority Inversion)

  • 프로세스A의 우선순위가 제일 높으나 이전 프로세스C의 리턴값을 필요로 하여 실행이 되지 않을 때, A보다 낮은 프로세스B가 먼저 실행되는 현상
  • 해결법: 우선순위 상속(Priority Inheritance)

질문: 우선순위 역전현상이란 무엇이며, 이를 해결하기 위한 방법은 무엇인가요?

답변: 우선순위 역전현상은 높은 우선순위를 가진 프로세스가 낮은 우선순위의 프로세스에 의해 실행되지 못하는 현상입니다. 이를 해결하기 위해 우선순위 상속(Priority Inheritance) 기법을 사용하여 낮은 우선순위의 프로세스가 높은 우선순위를 임시로 상속받아 자원을 사용할 수 있도록 합니다.

커널(Kernel)

  • 운영체제의 핵심 부분
  • 운영체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 서비스를 제공
  • 커널의 역할
    1. 보안
    2. 자원관리
    3. 추상화
  • 자원을 효율적으로 관리하기 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등의 업무 수행

질문: 커널의 주요 역할은 무엇인가요?

답변: 커널의 주요 역할은 보안, 자원 관리, 추상화입니다. 자원을 효율적으로 관리하기 위해 CPU 스케줄링, 메모리 관리, 입출력 관리, 파일 시스템 관리 등의 업무를 수행합니다.

디바이스 드라이버

  • 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로 동작하는 프로그램
  • 입출력장치와 OS 사이의 통역 역할(중간에서 데이터 및 명령어 전달)

질문: 디바이스 드라이버의 역할은 무엇인가요?

답변: 디바이스 드라이버는 특정 하드웨어나 장치를 제어하기 위한 커널의 일부분으로, 입출력 장치와 운영체제 사이의 통역 역할을 합니다. 이를 통해 데이터 및 명령어를 전달합니다.

유저모드와 커널모드

  • 유저모드: 유저가 접근할 수 있는 영역을 제한적으로 두고 프로그램의 자원에 함부로 침범할 수 없는 모드
  • 커널모드: 모든 자원에 접근 및 명령 가능, system call을 통해 요청에 대한 값 리턴

질문: 유저모드와 커널모드의 차이점은 무엇인가요?

답변: 유저모드는 사용자 응용 프로그램이 실행되는 제한된 접근 모드로, 시스템 자원에 함부로 접근할 수 없습니다. 커널모드는 모든 자원에 접근 및 명령이 가능한 모드로, 시스템 호출을 통해 유저모드의 요청을 처리합니다.

교착상태(DeadLock)

  • 둘 이상의 프로세스가 서로가 가진 자원을 요구하면서 무한 대기 상태로 빠지는 것
  • 발생 조건
    1. 상호 배제 (Mutual Exclusion): 자원은 한 번에 한 프로세스만 사용할 수 있어야 한다.
    2. 점유 대기 (Hold and Wait): 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다
    3. 비선점 (No Preemption): 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다
    4. 순환 대기 (Circular Wait): 각 프로세스가 점유한 자원을 각 다음의 프로세스가 요구해야 한다.

질문: 교착상태가 발생하기 위한 네 가지 조건은 무엇인가요?

답변: 교착상태가 발생하기 위한 네 가지 조건은 상호 배제(Mutual Exclusion), 점유 대기(Hold and Wait), 비선점(No Preemption), 순환 대기(Circular Wait)입니다. 이 조건들이 모두 만족될 때 교착상태가 발생할 수 있습니다.

세마포어와 뮤텍스의 차이

  • 세마포어 > 뮤텍스
  • 세마포어는 뮤텍스가 될 수 있지만 뮤텍스는 세마포어가 될 수 없음
  • 세마포어는 소유 불가하나 뮤텍스는 소유 가능하며 소유주가 이에 대한 책임을 짐
  • 뮤텍스는 동기화 대상이 오직 하나뿐일 때 사용
  • 세마포어는 동기화 대상이 하나 이상일 때 사용

질문: 세마포어와 뮤텍스의 차이점은 무엇인가요?

답변: 세마포어는 공유된 자원의 접근을 여러 프로세스가 조율할 수 있게 하는 카운터 역할을 하며, 소유가 불가능합니다. 반면 뮤텍스는 특정 자원을 하나의 스레드만 사용할 수 있도록 하는 상호 배제 장치로, 소유가 가능하고 소유주가 이에 대한 책임을 집니다.