프로세스와 스레드
1 minute read
두 단어는 보통 멀티 작업을 다룰 때 등장하는 단어이다.
-
프로세스 는 운영체제로부터 메모리, 파일 등을 할당 받는다.
-
스레드 는 프로세스 내에서 동작되는 실행의 흐름이고, 프로세스 내의 주소 공간이나 자원들을 전역변수를 이용하여 공유한다.
-
프로세스를 생성하면 하나의 메인 스레드가 자동 생성된다. 멀티 스레딩 작업을 한다면 추가 생성할 수 있다.
스레드는 전역 변수를 통해 시스템 자원과 메모리를 공유하는데 각각의 장 단점이 있다.
장점
- 시스템 자원 소모가 줄어든다.
- 프로그램의 응답시간이 단축된다. 등등
단점
- 스레드간의 미묘한 시간 차나 잘못도니 변수를 공유하여 오류를 야기할 수 있다.
- 디버깅이 어렵다.
- 파이썬에서의 멀티 스레딩은 싱글 스레드나 멀티 프로세스보다 느릴 수 있다.(파이썬 인터프리터 스레딩 문제)
멀티 스레드시 공유된 메모리에 의한 문제를 해결하기 위해, 스레드는 변수를 수정하기 전에 락을 적용할 수 있다. 이건 한 스레드가 변수를 저장하는 중에 다른 스레드가 변수를 사용하는 것을 막아준다.
스레드 프로그래밍은 멀티 프로세스보다 속도나 시스템 자원등의 장점이 있지만 디버깅이 어려운 만큼 주의를 기울여야 한다.
I feedback.
Let me know what you think of this article in the comment section below!
Let me know what you think of this article in the comment section below!
comments powered by Disqus