×
Crocus
공부한 내용을 정리하는 블로그로 시작한
Crocus는 2014년 1월 14일 부터 시작하여
현재 월 6만명, 총 2,238,771명의 방문자 수를 기록하고 있습니다.
Donation
이제 많은 사용자들이 이용하는 만큼
더 다양한 서비스 개발/제공을 위해 후원금을 모금하고자 합니다.
후원을 해주시는 분들은 Donators 명단에 성명, 후원금을 기입해드리며
Crocus 블로그가 아닌 다른 곳에 정리해둔 저만의 내용을 공유해 드리고자 합니다.
Account
예금주 : 고관우
신한은행 : 110-334-866541
카카오뱅크 : 3333-01-7888060

👉 후원 페이지 바로가기 Donators
익명 : 5000원(Crocus응원합니다.)
busyhuman: 5000원(유용한 지식 감사합니다.)
익명 : 5000원(알고리즘 학습러)
반응형


스레드 사용 이유


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


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


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


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


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


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

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


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





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

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


 

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




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

 

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

 

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


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

반응형