본문 바로가기
면접 스터디

면접스터디 : 프로세스와 스레드

by iOS 개린이 2023. 1. 6.

면접 단골 질문이라고 하는 "프로세스와 스레드에 관하여" 이 질문의 의도는 운영체제가 시스템 자원을 어떤 단위로 할당해주고, 프로세스 내에서 스레드는 이 자원을 어떻게 활용하는 지라고 생각한다.

1. 프로세스

-사전적인 의미로는 "운영체제로부터 할당받는 시스템 자원의 작업 단위", "메모리에 올라와 실행되고 있는 프로그램의 인스턴스" 라고 한다.

 

-먼저 프로그램이란 운영체제로부터 아직 시스템 자원을 할당받지 못한 정적인 상태의 코드 덩어리 라고 할 수 있다. 

이 프로그램이 실행하는 순간 운영체제가 시스템 자원을 할당해주고 메모리에 올라가게 되는데 이 상태를 프로세스라고 하는 것이다.

 

단점

1. 프로세스는 독립적인 메모리 영역(code, data, heap, stack)을 할당 받는다. 

그래서 프로세스끼리는 서로 접근할 수가 없어 프로그램간의 통신방법을 사용해야 한다. 

-> 서로 접근이 불가해서 통신의 어려움

 

2. 프로세스는 생성될 때 큰 오버헤드를 가지고 온다. 

 

이 단점들을 보완해주기 위해서 스레드가 나왔다.

 

 

2. 스레드

-프로세스가 할당받은 자원을 이용하여 실행하는 작업의 단위

-프로세스 내에서 실행되는 작업의 단위

 

-프로세스의 단점을 보완하기 위해 나온 것인 만큼 특징도 알맞다.

1. 스레드는 메모리 영역 중 독립적으로 stack 영역만 할당 받고 code, data, heap 영역은 서로 공유한다. 

-> 프로세스는 서로 접근이 힘들다고 했는데 스레드는 공유가 가능하기 때문에 단점이 보완된다.

 

2. 프로세스 내에서 실행되는 작업의 단위이니 당연히 프로세스에 비해 오버헤드가 덜 함.

 

단점

-스레드를 이용하면 시스템 자원을 효율적으로 사용한다는 장점이 있다.

하지만 스레드는 자원을 서로 공유하기 때문에 멀티스레딩을 할 때 프로그래머가 동기화에 대해서 주의해야한다.

 

 

 

-Reference

프로세스와 스레드의 차이 (velog.io)