프로세스와 스레드

on under tip
1 minute read

두 단어는 보통 멀티 작업을 다룰 때 등장하는 단어이다.

  • 프로세스 는 운영체제로부터 메모리, 파일 등을 할당 받는다.

  • 스레드 는 프로세스 내에서 동작되는 실행의 흐름이고, 프로세스 내의 주소 공간이나 자원들을 전역변수를 이용하여 공유한다.

  • 프로세스를 생성하면 하나의 메인 스레드가 자동 생성된다. 멀티 스레딩 작업을 한다면 추가 생성할 수 있다.

스레드는 전역 변수를 통해 시스템 자원과 메모리를 공유하는데 각각의 장 단점이 있다.

장점

  • 시스템 자원 소모가 줄어든다.
  • 프로그램의 응답시간이 단축된다. 등등

단점

  • 스레드간의 미묘한 시간 차나 잘못도니 변수를 공유하여 오류를 야기할 수 있다.
  • 디버깅이 어렵다.
  • 파이썬에서의 멀티 스레딩은 싱글 스레드나 멀티 프로세스보다 느릴 수 있다.(파이썬 인터프리터 스레딩 문제)

멀티 스레드시 공유된 메모리에 의한 문제를 해결하기 위해, 스레드는 변수를 수정하기 전에 락을 적용할 수 있다. 이건 한 스레드가 변수를 저장하는 중에 다른 스레드가 변수를 사용하는 것을 막아준다.

스레드 프로그래밍은 멀티 프로세스보다 속도나 시스템 자원등의 장점이 있지만 디버깅이 어려운 만큼 주의를 기울여야 한다.

tip
comments powered by Disqus