프로세스와 스레드의 차이를 어렴풋이 알고 있었는데, 좀 더 자세히 정리하고 싶어서 글을 쓴다.

"프로세스와 스레드의 차이에 대해 설명해 주세요"

- 프로세스는 운영체제로 부터 자원을 할당 받는 작업의 단위이고, 스레드는 할당 받은 자원을 활용하는 실행의 단위 입니다. (참조글 인용)

그럼 위에서 말하는 할당 받는 자원은 무엇인가요?

- CPU 시간, 운영되기 위해 필요한 주소 공간, 독립 메모리 영역(Code, Data, Stack, Heap)

멀티 프로세싱과 멀티 스레딩의 차이는 무엇인가요? 

- 멀티 프로세싱을 하게 되면 프로세스에 할당 해야 하는 자원의 양도 많아지고 자원 할당을 위한 시스템콜 이 많아져 , 하나의 프로세스에서 멀티 스레딩으로 구현하게 된다면 자원 할당도 효율적으로 처리 할 수 있으며, 하나의 자원을 여러 스레드가 활용해야 한다면 스레드간의 통신 비용이 프로세스간의 통신 비용보다 낮기 때문에 효율적입니다. 하지만, 그만큼 프로그래머의 주의를 요구합니다.

무슨 주의가 필요하고, 멀티 스레딩의 단점은 무엇인가요?

- 일단, 동기화 문제 때문에 디버깅이 까다롭습니다. 또한 하나의 스레드의 문제가 생기면 전체에 영향을 줍니다. 추가로, 하나의 자원을 공유할 때 병목 현상이 발생할 수 있습니다. 

병목현상을 막기 위해선 어떻게 해야 할까요?

- 과도한 Lock의 사용을 자제하고, 적절한 범위의 Lock을 걸 수 있도록 해야 합니다.

스레드가 프로세스로 부터 할당 받는 자원은 무엇인가요?

- 같은 프로세스안의 여러 스레드들은 프로세스의 자원(code, data, stack, heap)중에 개별 Stack을 할당 받습니다. 나머지 영역은 다른 스레드와 공유합니다.

 

 

 

[참조]

정리에 참조한 글 1 (OS 전공 지식 글)

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

정리에 참조한 글 2 (고차원 적인 글)

 

프로세스와 스레드의 차이

기술 면접 단골손님 feat. 운영체제 | 프로세스와 스레드에 대해서 설명해주세요. 익숙한 질문입니다. 신입 개발자 면접 질문 목록에 빠지지 않고 등장하는 질문인데요. 아무리 쉽고 익숙한 질문도 머릿속에서만 생각한다면 질문을 받았을 때 말로 표현하기 힘듭니다. 때문에 이 포스팅을 작성합니다. 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행

brunch.co.kr

 

+ Recent posts