본문 바로가기

Solution/면접

[개발자 면접] 프로세스와 스레드의 차이점

728x90

Q. 프로세스와 스레드의 차이점은?

프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다. 

프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당 받는다.(code, heap, stack)

스레드는 이중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다.

 

# 요약

프로세스 : 자신만의 고유 공간과 자원을 할당받아 사용

스레드 : 다른 스레드와 공간과 자원을 공유하면서 사용

 

Q. 프로세스의 문제점은?

- 프로세스 생성에 큰 오버헤드가 있다. ( 프로세스를 생성할때 많은 시간이 소요됨0

- 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가큼

- 프로세스 사이에 통신이 어렵다는점 (IPC사용해야함)

 

Q. 스레드의 출현 목적은?

- 프로세스보다 크기가 작은 실행 단위 필요

- 프로세스의 생성 및 소멸에 따른 오버헤드 감소

- 빠른 컨텍스트 스위칭

- 프로세스들의 통신 시간, 방법 어려움 해소

 

Q. 스레드 주소공간에 대해서 설명?

하나의 스레드가 동작하기 위해 총 6개의 공기 있다. 

사적공간, 공유공간, 커널 스택

사적공간은 스레드 코드 공간, 스레드 전용 전역변수 공간, 스택 공간이 있다.

공유공간에는 데이터 공간, 힙 공간이 있다. 그리고 커널 스택이 있다. 

 

 

728x90