[CS] 면접질문 정리 - 운영체제

Myeonghyeon Ryu·2023년 8월 22일
0

cs

목록 보기
1/1

운영체제

프로세스

  • 프로세스와 스레드의 차이는 무엇인가요?
    • 프로세스는 실행되어 작업중인 컴퓨터 프로그램을 뜻하고, 스레드는 프로세스 내에서 동시에 진행되는 작업 갈래, 흐름의 단위를 뜻합니다.
    • 예를 들어 브라우저를 실행했을 때 실행한 순간 프로그램을 작동하기 위한 프로세스하나가 생성되는 것이고, 브라우저에서 파일을 다운 받으며 온라인 쇼핑을 하거나 동영상을 보는 등 하나의 프로세스에서 여러 작업을 동시에 수행하게 해주는 것이 바로 스레드입니다.

  • 교착상태란 무엇이며, 교착상태가 발생하기 위해서는 어떤 조건이 있어야 하나요?
    • 교착상태 즉 데드락은 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미합니다.
      데드락이 발생하기 위해선 총 네가지의 조건이 충족해야 합니다.
      1. 상호배제
      2. 점유와 대기
      3. 비선점
      4. 원형 대기

  • 교착상태의 해결법은 무엇인가요?
    • 교착상태를 해결하는 방법에는 prevention, avoidance, detection, recovery가 있습니다.
    • prevention과 avoidance는 애초부터 교착 상태가 되지 않도록 하는 방법이고
    • detection과 recovery는 교착 상태가 감지되면 시스템에 문제가 발생하지 않도록 조치를 취하는 방법입니다.

  • 뮤텍스와 세마포어에 대해서 설명해 보시오.
    • 뮤텍스란 공유된 자원의 데이터 혹은 임계영역에 동시에 하나의 프로세스 혹은 쓰레드만 접근할 수 있도록 하는 기술입니다.
      공유 자원에 접근하기 위한 하나의 키 객체가 존재하며 공유 자원에 접근 중인 쓰레드나 프로세스가 그 키를 취함으로써 다른 쓰레드나 프로세스가 접근하지 못하도록 합니다.
    • 세마포어는 공유된 자원에 여러 개의 프로세스 혹은 쓰레드가 접근할 수 있는 기술입니다.
      공유 자원에 접근할 수 있는 최대 허용치가 존재하며 접근 중인 프로세스의 개수가 최대 허용치에 도달하지 않았다면 대기 중인 프로세스가 즉시 자원을 사용할 수 있습니다.

  • 컨텍스트 스위칭이란 무엇인가요?
    • 여러 개의 프로세스가 실행되고 있을 때 기존에 실행되던 프로세스를 중단하고 다른 프로세스를 실행하는 것입니다. 즉 CPU에 실행할 프로세스를 교체하는 기술입니다.
    • A프로세스에서 B프로세스로 교체될 때 A프로세스의 Stack pointer값과 Program Counter값을 PCB에 저장함으로써 A프로세스가 실행중인 상태를 스냅샷해둡니다.

  • 경쟁 상태란 무엇인가요?
    - Race Condition이라 불리는 경쟁상태란 두 개 이상의 프로세스들이 하나의 자원에 접근하기 위해 경쟁하는 상태를 말합니다.
    뮤텍스와 세마포어를 이용해 이를 해결할 수 있습니다.

  • 프로세스 혹은 스레드의 동기화란 무엇인가요?
    - 여러 프로세스 혹은 쓰레드가 공유하는 자원의 일관성을 유지하는 것입니다.

    • 멀티 프로세스 혹은 멀티 스레드는 동시에 여러 개가 실행되는 것처럼 보이지만 사실 컴퓨터가 매우빠른 속도로 스위칭을 해서 동시에 여러 개가 보이는 것처럼 실행되는 것입니다.
      따라서 여러 개의 쓰레드 혹은 프로세스가 동시에 하나의 데이터 값을 바꿔야 될 경우 하나의 쓰레드 연산이 끝나기 전에 다른 하나의 쓰레드 연산을 수행해버려서 우리가 원하는 값을 얻지 못할 수 있습니다.
      이를 방지하기 위해 동기화를 사용합니다.

  • 사용자 수준의 스레드와 커널 수준의 스레드의 차이는 무엇인가요?

    • 커널 레벨 쓰레드와 유저 레벨 쓰레드는 생성 주체가 누구냐에 따라 구분됩니다.
    • 프로그래머의 요청에 따라 쓰레드를 생성하고, 스케줄링하는 주체가 커널이면 커널레벨 쓰레드라고 하며, 커널이 쓰레드 모델을 지원하지 않거나 제공하는 쓰레드 모델이 마음에 들지 않을 경우, 커널에 의존하지 않고 쓰레드의 기능을 제공하는 라이브러리를 활용할 수 있는데 이러한 방식으로 제공되는 쓰레드가 유저레벨 쓰레드입니다.

  • CPU 스케줄링이란 무엇인가요?

    • CPU가 항상 실행 중인 프로세스를 갖게 하도록 하는 기법입니다.

    • 어떤 프로세스가 대기해야 할 경우, 운영체제가 CPU를 그 프로세스로부터 회수한 뒤 다른 프로세스를 할당해 CPU 이용률을 최대화 하는 것이 목적입니다.


  • CPU 스케줄링 방법에는 대표적으로 어떤 것들이 있나요?

    • 선점 스케줄링과 비선점 스케줄링이 있습니다. 선점 스케줄링이란 우선순위가 높은 프로세스가 cpu를 사용하고 있는 프로세스를 중지시키고 cpu를 차지할 수 있는 기법으로 빠른 응답시간을 요구하는 시스템에 유용합니다.

    • 비선점 스케줄링이란 이미 사용중인 cpu를 뺐을 순 없고 사용이 끝날 때까지 기다리는 스케줄링 기법으로 일괄처리방식에 유용합니다.


  • 동기와 비동기, 블로킹과 넌블로킹의 차이는 무엇인가요?

    • 블로킹과 넌블로킹은 A함수가 다른 B함수를 호출했을 때 제어권을 어떻게 처리하느냐에 따라 달라집니다.
      블로킹의 경우, A함수가 B함수를 호출하면 제어권을 A가 호출한 B함수에 넘겨주기 때문에 B함수의 실행이 완료되기까지 A함수가 실행을 멈추게됩니다.
      논블로킹의 경우 A함수가 B함수를 호출하더라도 제어권은 그대로 자신이 갖고 있기 때문에 B함수를 호출하더라도 A함수는 그대로 실행됩니다.
    • 동기는 함수 A가 함수 B를 호출 했을 때 함수 B의 리턴값을 계속확인합니다.
      비동기는 함수 B를 호출할 때 콜백함수를 함께 전달해 함수 B의 작업이 완료되면 함께 보낸 콜백 함수를 실행하게 됩니다.

메모리

  • 프로세스에 할당되는 메모리의 각 영역에 대해서 설명해 주세요.
    • 프로세스에 할당되는 메모리는 Code, Data, Stack, Heap 총 4개의 영역으로 이루어져 있습니다.
    1. Code영역엔 실행할 프로그램의 코드가 저장됩니다. CPU는 이 영역에서 명령어를 하나씩 가져와 처리하게 됩니다.
    2. Data영역엔 전역변수와 정적변수가 저장됩니다. 이 변수들은 프로그램이 시작될 때 할당되어 프로그램 종료 시 소멸됩니다.
    3. Stack영역엔 지역변수, 매개변수, 리턴값 등 잠시 사용되었다 사라지는 데이터를 저장하는 영역으로 함수 호출 시 할당되고 함수 반환 시 소멸됩니다.
    4. Heap은 동적데이터 영역으로 메모리 주소 값에 의해서만 참조되고 사용되는 영역입니다. 따라서 프로그램 동작 시에 크기가 결정됩니다.

  • 메모리 구조의 순서가 어떻게 되는가? CPU에서 가까운 순으로 말해보시오.
    • CPU에서 가장 가까운 저장공간은 레지스터이며, 레지스터, CPU 캐시 메모리, 메인 메모리, 보조기억장치, 외부기억장치 순으로 멀어집니다.
    • CPU로부터 멀어질수록 데이터를 저장하는 용량이 커지고 속도가 느려진다는 특징이 있습니다.

  • 페이지와 세그멘테이션에 대해서 설명해 보시오.
    • 여러 프로그램들이 메모리에 할당되고 해제되는 것이 반복되다 보면 메모리 공간이 조각조각 나뉘게 되어 총메모리가 충분함에도 불구하고 프로그램에 메모리를 할당하는 것이 불가능한 메모리 단편화 현상이 발생합니다.
      이를 해결하기 위해 페이징 또는 세그멘테이션 기법을 사용합니다.
    • 먼저 페이지란 프로세스를 고정된 크기로 나눈 블록을 뜻합니다. 페이징은 이 페이지를 이용한 방법으로 프로세스의 주소 공간을 고정된 사이즈의 페이지 단위로 나누어 물리적 메모리에 불연속적으로 할당하는 기법입니다.
    • 세그멘테이션은 프로세스를 서로 크기가 다른 논리적인 블록 단위인 세그먼트로 분할하여 메모리에 할당하는 기법입니다.

  • 외부 단편화란? 내부 단편화란?
    • 메모리에 프로세스가 할당될 때 발생하는 현상들입니다.
    • 내부 단편화란 메모리가 할당될 때 프로세스가 필요한 양보다 더 큰 메모리가 할당돼서 프로세스에서 사용하는 메모리 공간이 낭비되는 현상입니다.
    • 외부 단편화란 메모리가 할당 및 해체 작업의 반복으로 작은 메모리가 중간중간에 존재해 총 메모리 용량은 충분하지만 실제로 새로운 프로세스를 할당할 수 없는 현상입니다.

  • First Fit, Best Fit, Worst Fit에 대해서 설명해 보시오.
    • 프로세스를 메모리에 할당하는 방법들입니다.
    • first fit은 프로세스가 가장 먼저 발견하는 메모리공간에 할당하는 방식입니다.
    • best fit은 여러 공간에 전부 대입해서 가장 공간낭비가 되지 않는 곳에 할당하는 방식입니다.
    • worst fit은 가장 공간낭비가 심한 곳에 할당하는 방식입니다. 이는 오히려 내부단편화를 최소화한다면 다른 프로세스가 더 널널하게 들어올 수 있지 않느냐는 발상에서 나온 방법입니다.

  • 페이지 교체 알고리즘 종류에는 어떤 것들이 있나요?
    • 페이지 교체 알고리즘엔 FIFO, OPT, LRU, LFU, MFU 등이 있습니다.
    1. FIFO는 이름 그대로 가장 먼저 메모리에 올라온 페이지를 가장 먼저 내보내는 알고리즘입니다.
    2. OPT는 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 알고리즘입니다.
    3. LRU은 가장 오랫동안 사용하지 않은 페이지를 교체하는 알고리즘입니다.
    4. LFU는 참조횟수가 가장 적은 페이지를 교체하는 알고리즘입니다.
    5. MFU는 LFU와 반대로 참조 횟수가 가장 많은 페이지를 교체하는 알고리즘입니다.

0개의 댓글