코딩 기록들

스레드 & 프로세스 본문

면접준비하기

스레드 & 프로세스

코딩펭귄 2023. 2. 28. 01:17

Process

컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.
최소 하나의 스레드를 보유하고 있으며, 별도의 주소공간(code, data, stack, heap)을 독립적으로 할당받는다.

Thread

어떠한 프로그램 내에서 (=프로세스 내에서) 실행되는 흐름의 단위를 말한다.
스레드는 stack 만 따로 할당받고, 프로세스의 나머지 (code, data, heap) 영역은 스레드끼리 서로 공유한다. (->메모리 사용이 훨씬 효율적이게 된다.) 

 

 

 

멀티 프로세스 특징

1. 각각 독립적이라 동기화 작업이 필요가 없다.
2. 개별메모리 차지로 인한 자원소모가 크다.
3. context switching 비용이 크다. (여러개의 프로세스를 번갈아가며 cpu에 올리고, 내리고 하는것)

 

멀티스레드 특징

1. 스레드간 긴밀히 연결됨 -> 공유된 자원으로 통신비용이 절감됨 -> 메모리 사용이 효율적임 
2. 공유 자원 관리가 필요하며, context switching 비용이 적다. 
3. 단점 : 스레드간 연결되어있기때문에 한 스레드에 문제가 생기면 전체프로세스에 영향끼침 ex. 익스플로러 사용시 한 창이 오류가 뜨면 모든창들이 꺼짐)

 

 

 

Q. 스레드의 출현 목적은?
- 프로세스보다 크기가 작은 실행 단위 필요
- 프로세스의 생성 및 소멸에 따른 오버헤드 감소
- 빠른 컨텍스트 스위칭
- 프로세스들의 통신 시간, 방법 어려움 해소 


Q. 운영체제는 프로세스단위로 메모리를 할당하므로 같은 프로세스 소속의 스레드는 메모리를 공유한다. 
이때, 스레드가 메모리를 공유함으로써 생기는 프로세스와의 차이점은?

- 동시에 여러 작업을 할 때, 멀티 스레드가 시스템 자원을 더 적게 사용함.
- 프로세스는 메모리 공유를 하지 않으므로, 프로세스간 통신은 스레드간 그것에 비해 복잡함.

- 스레드의 경우 공유 자원에 대한 동기화(Synchronize)이슈 발생.

 

Q. 프로세스의 문제점은?
- 프로세스 생성에 큰 오버헤드가 있다. ( 프로세스를 생성할때 많은 시간이 소요됨0
- 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가큼
- 프로세스 사이에 통신이 어렵다는점 (IPC사용해야함)

 

 

참고
프로세스와 스레드의 차이? (+완벽 개념정리, 멀티프로세스<멀티 스레드?) (tistory.com)
[개발자 면접] 프로세스와 스레드의 차이점 (tistory.com)

'면접준비하기' 카테고리의 다른 글

IP주소(1) - ARP, 홉바이홉 통신  (0) 2023.09.14
데드락(교착상태)이란?  (0) 2023.09.14
Loss Surface 란?  (0) 2023.03.01
RDBMS / NOSQL  (0) 2023.03.01
TCP / UDP  (0) 2023.02.27