Skip to content

Latest commit

 

History

History
81 lines (55 loc) · 4.14 KB

OS.md

File metadata and controls

81 lines (55 loc) · 4.14 KB

Operating System

프로세스와 스레드의 차이점이 무엇인가요?
  • 프로세스는 운영체제로부터 자원을 할당받습니다. 즉, 프로그램이 메모리에 올라간 상태를 의미합니다.
  • 스레드는 프로세스로부터 자원을 할당받고, 프로세스의 코드/데이터/힙영역을 공유하기 때문에 좀 더 효율적으로 통신할 수 있습니다. 또한 컨텍스트 스위칭도 캐시 메모리를 비우지 않아도 되는 스레드쪽이 빠릅니다. 그리고, 스레드는 자원 공유로 인해 문제가 발생할 수 있으니 이를 염두에 둔 프로그래밍을 해야합니다.
  • 프로세스를 생성하는거보다 Thread 생성이 더 시간 적게듬
  • 프로세스를 종료하는거보다 Thread 종료가 더 시간 적게듬
  • 프로세스를 스위칭하는거보다 같은 프로세스에 있는 두 Thread 스위칭이 더 시간 적게듬
그럼 Stack, Heap 이 무엇인가요?
  • Stack 은 지역변수, 함수 호출 저장함. 함수 호출이 끝나면 Stack pop
  • Heap 은 동적 메모리 할당
멀티 스레드와 멀티 프로세스 차이가 무엇인가요?

멀티 프로세스

하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.

  • 장점

    • 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산되지 않는다.
  • 단점

    • Context Switching에서의 오버헤드
      • Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생하게 된다.
      • 프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 프로세스 사이에서 공유하는 메모리가 없어, Context Switching가 발생하면 캐쉬에 있는 모든 데이터를 모두 리셋하고 다시 캐쉬 정보를 불러와야 한다.
    • 프로세스 사이의 어렵고 복잡한 통신 기법(IPC)
      • 프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.

멀티 스레드

  • 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다.
  • 프로세스 내부의 Heap, Data, Code 영역을 공유하면서 사용한다.

멀티 프로세스 대신 멀티 스레드를 사용하는 이유가 무엇일까요?

  • 하나의 응용프로그램을 여러 개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것이다.
  • 스레드는 프로세스 내의 메모리를 공유하기 때문에 독립적인 프로세스와 달리 스레드 간 데이터를 주고 받는 것이 간단해지고 시스템 자원 소모가 줄어들게 된다.
  • 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업들 간의 통신의 부담이 줄어든다.
뮤텍스와 세마포어의 차이점은?
데드락은 언제 발생할까요?

CPU 스케줄링 알고리즘

라운드 로빈 알고리즘이 무엇인지 설명해주세요.

라운드 로빈 스케줄링(Round Robin Scheduling, RR)은 시분할 시스템을 위해 설계된 선점형 스케줄링의 하나로서, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum)로 CPU를 할당하는 방식의 CPU 스케줄링 알고리즘이다.

보통 시간 단위는 10 ms ~ 100 ms 정도이다. 시간 단위동안 수행한 프로세스는 준비 큐의 끝으로 밀려나게 된다. Context Switching의 오버헤드가 큰 반면, 응답시간이 짧아지는 장점이 있어 실시간 시스템에 유리하다.