멀티스레딩과 멀티프로세싱

·2023년 4월 25일
0

데일리 과제

목록 보기
10/15

멀티스레딩 (Multithreading)과 멀티프로세싱 (Multiprocessing)의 차이점은 무엇인가요?

멀티 스레드와 멀티 프로세스의 가장 큰 차이점은 "메모리를 공유하는가?" 이다.

멀티 스레드의 경우 여러 스레드가 하나의 프로세스 내에서 같은 메모리를 사용합니다. 반면 멀티 프로세스는 각 프로세스가 별도의 메모리 공간을 가집니다.

공유 메모리를 두거나, 파일, 파이프 등등 프로세스 간의 통신을 위한 기술로 프로세스끼리 통신해야 한다.
=> IPC를 유지하는 비용과 프로세스를 전환하는 비용이 멀티 프로세싱의 단점

반면 스레드의 경우 프로세스의 데이터와 코드, 힙을 공유하다 보니 작업(스레드) 사이에 통신 메커니즘을 구축할 필요가 없다. 바로 공유하고 있는 데이터를 참조하면 그만이다.

멀티프로세싱

  • 컴퓨터 시스템에서 1개 이상의 프로세스가 동시적으로 실행가능하다는 것을 의미

  • 여러 개의 프로세스 유닛(CPU)을 가진 하드웨어에서 활용 가능하다. 다수의 프로세서로 다수의 "프로세스"를 협력적으로 동시에 처리하는 것이다.

  • fork()를 통해 자식 프로세스를 생성하는데, 생성된 프로세스는 자신만의 메모리 영역(Heap, Stack, Code, Data)을 소유한다.

  • 프로세스끼리 독립되기에 프로세스 사이에서 공유할 자원이 있다면 프로세스 간 통신 메커니즘(Inter Process Communication : IPC)을 활용해야 한다.

특징

  1. 멀티 프로세싱을 사용하면 프로세스를 독립적으로 운영할 수 있어 시스템의 안정성을 높일 수 있다.
  2. 병렬적으로 처리 가능한 작업으로 분해하여 성능을 향상시킬 수 있다.

멀티스레딩

  • 하나의 프로세스 안에 여러 개의 실행 흐름(스레드)를 두는 방식으로 여러 실행을 동시에 실행하도록 하나의 프로세스를 운영하는 방식

  • 소프트웨어적인 기법으로 프로세스를 작은 단위의 스레드로 분할하여 운영하기에 반드시 다중 CPU가 지원될 필요는 없다. [ 파이프라인 기법으로 구현 ]

  • 프로세스 내에서 데이터, 힙, 코드 영역을 공유하기 때문에 자원의 관점문맥 교환 관점에서 멀티프로세싱 방법보다 효율적이다.

장점

  1. 작업 효율성
  • 하나의 프로세스에서 여러 스레드를 병렬적으로 수행하기에 작업의 효율성이 높다.

    	EX. 입출력 처리 부분과 CPU 처리 부분을 스레드로 나누어 처리하는 방식
  1. 응답성 향상
  • 다른 스레드가 작업을 계속 수행하면서 입출력 스레드를 진행시킬 수 있어 사용자의 작업 요구에 빠르게 응답이 가능하다.
  1. 자원 공유
  • 독립적인 스레드는 레지스터와 스택 메모리 영역을 가지면 된다. 그 외의 필요한 정보는 프로세스의 데이터, 코드, 힙 영역을 공유하면 된다. 이는 불필요한 자원의 중복을 막아주며 시스템의 효율을 높여준다.

참고자료

https://kkongchii.tistory.com/entry/dsd

https://murphymoon.tistory.com/entry/%EB%A9%80%ED%8B%B0%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1multiprocessing%EA%B3%BC-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%94%A9multithreading%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90-OS-%EB%A9%B4%EC%A0%91%EC%A7%88%EB%AC%B8-2

https://iambeginnerdeveloper.tistory.com/186

profile
개발자가 되는 과정

0개의 댓글