반응형


스레드 사용 이유


운영체제는 시스템 작업을 효율적으로 관리하기 위해 스레드를 이용한다.


즉, 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행하게 되면 프로세스를 생성하여 자원을 할당하는 과정도 줄어들 뿐더러 프로세스를 컨텍스트 스위칭(Context Switching)하는 것 보다 오버헤드를 더 줄일 수 있게 된다.


뿐만 아니라 프로세스간의 통신 비용보다 하나의 프로세스 내에서 여러 스레드간의 통신 비용이 훨씬 적으므로 작업들 간의 통신 부담을 줄일 수 있게 된다.


예를들어보자. 구글 docs를 이용하여 어떤 문서를 함께 작성해야한다.


이때 하나의 구글 docs를 프로세스라 생각하고 문서에 참여하는 사용자를 스레드라 생각해보자.


만약 멀티 프로세스라면 사용자 한명당 하나의 구글 docs를 켜서 자신이 해야하는 임무를 마무리 하고 도출된 결과를 합쳐야 할 것이고

멀티 스레드라면 하나의 구글 docs에서 여러 사람들이 분배받은 커서를 이용하여 자신의 임무를 마무리 하면 된다.


위 예시를 살펴보면 여러 구글 docs가 아닌 하나의 구글 docs를 만들었기에 자원 할당에서도 유리한 모습을 보였고, 모든 구글 docs를 하나의 구글 docs로 합치는 것을 통신 비용이라 생각한다면 하나의 구글 docs에서 여러 사용자들이 함께 임무를 수행하는게 더 효율적이라고 쉽게 생각 할 수 있다.





스레드가 프로세스보다 안좋을 때

멀티 프로세스 구조에서 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 자식 프로세스 하나만 죽는다 해서 다른 곳에 영향을 끼치지는 않는다.


 

하지만 멀티 스레드 구조에서 자식 스레드중 하나에 문제가 생긴 경우에는 전체 프로세스가 영향을 받게 된다.(ex : thread I/O)




그리고 멀티 스레딩을 너무 자주 사용하게 된다면 컨텍스트 스위칭의 비용이 상당히 높기 때문에 오히려 시스템 성능 저하를 초래 할 수도 있고

 

메모리가 공유되기 때문에 안정성 및 보안을 좀 더 추구하는 경우에는 멀티 스레드보단 멀티 프로세싱이 더 좋다.

 

스레드 더 많은 내용 알아보기


https://www.crocus.co.kr/search/스레드

반응형