프로세스와 스레드

이정아·2022년 1월 11일
0

OS

목록 보기
1/3
post-thumbnail


이미지 출처 : https://velog.io/@raejoonee/프로세스와-스레드의-차이

프로그램 >> 프로세스 >> 스레드

프로그램

  • 어떤 작업을 위해 실행할 수 있는 파일입니다.

프로세스

  • 실제 실행되고 있는 프로그램이며, 운영체제로부터 자원을 할당받은 작업의 단위입니다.

스레드

  • 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위로, 정의된 절차에 따라 실행되는 특정한 수행 경로입니다.

1. 프로세스와 스레드의 작동 방식



  • 운영체제는 프로세스마다 각각 독립된 메모리 영역을 할당해 줍니다.
  • 그리고 스레드는 프로세스가 할당받은 메모리 영역 내에서
  • Stack 메모리 영역은 따로 할당받고, 나머지 Code/Data/Heap 메모리 영역을 공유합니다.

프로세스와 스레드의 차이는?

  • 프로세스는 각각 독립된 메모리 영역을 할당받으므로, 다른 프로세스에 접근이 어렵습니다.

  • 이와 다르게 스레드는 메모리를 서로 공유할 수 있다는 차이가 있습니다.

  • 프로세스간 자원공유를 위해 별도의 IPC를 구현해야 합니다.

  • 스레드는 프로세스가 할당받은 메모리 영역 내에서 Stack 메모리 영역은 따로 할당받고, 나머지 Code/Data/Heap 메모리 영역을 공유하기에 메모리 절약을 할 수 있습니다.

IPC - 프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 뜻합니다.


2. 멀티 프로세싱, 프로그래밍, 태스킹, 스레딩 이란?

멀티 프로세싱

  • 다수의 프로세서가 다수의 프로세스를 처리하는 것입니다.
  • 각 프로세서가 자원을 공유하기 때문에, 한 프로세서가 고장나도 작업은 정지되지 않습니다.

멀티 프로그래밍

  • 하나의 프로세서로 다수의 프로세스 작업을 처리하는 것입니다.
  • 프로세서가 입/출력 작업 종료를 대기할 동안, 다른 프로세스를 처리하는 것을 말합니다.
  • 프로세서의 자원낭비를 막을 수 있습니다.

멀티 태스킹

  • 하나의 운영체제 안에서 여러 프로세스가 번갈아가며 실행되는 것을 의미합니다.
  • 동시에 처리되는 것처럼 보이지만, 프로세서는 특정 순간에 하나의 작업만 수행할 수 있습니다.
  • ex) 인터넷도 사용하고 카카오톡도 하고, 게임도 하는 것

멀티 스레드

  • 한 프로세스 내에서, 여러 개의 스레드를 수행하는 것입니다.
  • 스레드는 스택 영역을 제외한 메모리 영역을 공유하기에 효율적입니다.

멀티 프로세스

  • 한 프로그램을 여러 프로세스로 구성하는 것입니다.
  • 프로세스간 통신을 하기 위해서는IPC를 통해야 하며 메모리 사용량이 많습니다.

3. GIL

  • Global Intepreter Lock의 약자로 하나의 스레드에 모든 자원을 허락하고 나머지 스레드에 락을 걸어 다른 스레드가 실행되지 않도록 막아버리는 기능입니다.

  • 현시점 한 스레드만 실행할 수 있는 것입니다.

  • 파이썬에서 멀티 스레드를 사용했을 때 오히려 성능이 저하될 수 있습니다.

    ㄴ lock 획득,해제로 인한 오버헤드로 실행 시간이 더 길어질 수 있기 때문입니다.

오버헤드 - 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간, 메모리 등을 말합니다.


파이썬에서 멀티스레드는 의미가 없나?

  • GIL은 cpu동작에서 적용되는것을 말하며, cpu동작을 마치고 I/O (데이터 입/출력 )작업을 실행하는 동안에는 다른 스레드가 동시에 동작할 수 있습니다.

  • 즉, I/O작업이 많은 병렬 처리 프로그램에서 유용하게 사용할 수 있습니다.

0개의 댓글