구리구리구리

[기술면접] CS 기술면접 - 운영체제 본문

기타

[기술면접] CS 기술면접 - 운영체제

guriguriguri 2021. 11. 19. 23:19

공부한 것을 바탕으로 정리하는 것이지만 잘못된 부분이 있을 수 있습니다. 오류는 댓글로 알려주시면 감사하겠습니다!

 

* 프로세스, 쓰레드 차이

 

프로세스

  • 메모리에 올라와 실행되고 있는 프로그램의 인스턴스
  • 운영체제로부터 독립된 메모리 영역을 할당받음 (다른 프로세스의 자원에 접근할 수 없음)
  • 프로세스들은 독립적이기 때문에 통신하기 위해 IPC 사용

IPC란?

프로세스간 통신 가능하도록 자원을 공유하는 방법으로 독립된 공간에서 서로간 통신이 어렵기에 커널 영역에서 IPC는 프로세스들 간에 통신을 제공한다. (Message Queue, Shared Memory 등)

 

쓰레드

  • 프로세스 내에 할당받은 자원을 이용해 동작하는 실행 단위
  • 쓰레드는 프로세스 내에서 Stack 영역만 따로 할당 받음 (Code, Data, Heap 영역은 공유)
    • Stack만 분리하는 이유는 ? 
    • Stack에는 함수 호출 정보를 저장하기에 Stack 영역을 공유하게 되면 LIFO 구조에 의해 실행순서가 복잡해지게 된다. 따라서 실행 흐름을 원활히 하기 위해 분리하여 사용한다.
  • 쓰레드는 프로세스의 자원을 공유하기에 다른 쓰레드에 의한 결과를 즉시 확인할 수 있다.
  • 프로세스 내에 존재하기에 프로세스가 할당받은 자원을 이용해 실행한다.

이미지 출처 : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

* Context Switching이란?

  • 인터럽트를 발생시켜 CPU에서 실행중인 프로세스를 중단하고 다른 프로세스를 처리하기 위한 과정
    1. 현재 실행중인 프로세스 상태(context) 저장
    2. 다른 프로세스 동작시켜 작업 처리
    3. 이전에 저장된 프로세스 상태 복구 시킴

 

  • 인터럽트란? 
  • CPU가 프로세스를 실행중일때, 입출력 하드웨어 등의 장치가 예외상황을 발생시켜 처리가 필요함을 CPU에게 알림
  • 쓰레드를 구현하기 위한 인터페이스, 클래스는?
  • Runnable 인터페이스 상속, Thread 클래스 상속