본문 바로가기

CS/운영체제

Multi-Process VS Multi-Thread

이전까지 프로세스스레드에 대해 알아보았다. 운영체제 입장에서 작업의 단위는 프로세스이고 CPU 입장에서의 작업 단위는 스레드이다. 이번 포스팅을 통해 멀티 프로세스와 멀티 스레드의 기능 및 차이점을 알아보고, 관련 용어들을 알아보려고 한다.

<쉽게 배우는 운영체제> 책을 참고하였습니다.


용어정리

1. 멀티 프로그래밍

컴퓨터 시스템에서 실행 또는 대기 중인 프로세스들이 있다. 이들은 차례를 기다리며 CPU를 할당받고 처리가 되어진다. 시분할(Time-Sharing)에 의해 차례가 종료되어 다시 Ready Queue에 들어가거나, I/O 작업 처리가 필요해 Block(Waiting) Queue에 들어가기도 한다. 이처럼 운영체제는 여러 작업들을 빠르게 처리하며 CPU가 낭비되지 않도록 적절히 Context Switching을 하며 성능을 최대화 한다. OS의 빠른 처리 덕분에 실제로는 특정시간에 하나의 프로세스/ 작업만 실행되지만 사용자는 작업들이 동시적으로(Concurrency) 처리되는 것처럼 보여지게 한다. 이렇게 프로그램들이 동시에 실행될수 있도록 유지하는 것을 멀티 프로그래밍이라고 한다.

 

2. 멀티태스킹

멀티 프로그래밍의 확장된 의미로, 메모리에 올라와 있는 프로세스들을 운영체제가 CPU에 작업을 할당할 때 타임 슬라이스를 두고 배분하는 기법(라운드 로빈 스케줄링)을 의미한다. 멀티 프로그래밍의 특징 중 Context Switching에 Time Sharing 방식을 더한 개념이다.

 

3. 멀티프로세싱

단일 프로세서 시스템에서는 한번에 하나의 프로세스만 실행이 된다. 멀티 프로세싱은 컴퓨터 내의 2개 이상의 프로세서(여러 개의 CPU나 CPU 내의 여러 개의 core)를 할당받아 작업을 병렬적(Paralleism)으로 처리하는 것을 의미한다.

 

4. 멀티스레딩

멀티 스레드는 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는  프로세스 운영기법을 의미한다. 여러 개의 스레드가 작업을 분산하여 하기 때문에 한 쓰레드에서 실행이 오래 걸리거나 지연될 경우 CPU는 다른 스레드를 처리함으로써 CPU의 대기 시간을 줄였다.

하드웨어적인 방법으로도 하나의 CPU에서 여러 스레드를 동시에 처리하는 병렬처리 기법인 CPU 멀티스레드 기법도 존재한다.

[참고]: https://www.geeksforgeeks.org/difference-between-multitasking-multithreading-and-multiprocessing/?ref=rp 

 

Difference between Multiprogramming, multitasking, multithreading and multiprocessing - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

 

 

멀티 프로세싱

멀티 프로세싱은 하나의 프로그램을 여러 개의 프로세스로 나누어 각각의 프로세스가 하나의 작업을 병렬적으로 처리하도록 하는 것이다. 하나의 작업을 하는 각각의 프로세스들은 메모리 공간이 독립되어져 있다. 따라서 한 프로세스에서 문제가 생기더라도 다른 프로세스에 영향을 미치지 않는다. 하지만 그렇다고 하더라도 프로세스 간 커뮤니케이션은 필요하다. 메모리 공간이 독립되어 있는데 어떻게 통신을 할 수 있을까?  결론부터 이야기하면 통신은 가능하다. 이 통신은 IPC(Inter-Process Communication)라고 불린다. 주요 IPC 방식으로 파일, 소켓, 메시지 큐, 파이프, 세마포어, 메시지 전달, 공유 메모리 등의 방식으로 통신이 가능하다. 따라서 개발자는 통신 방법을 별도로 구현해야 한다.

 

종류

대칭 멀티 프로세싱(Symmetric Multiprocessing) : 마스터 - 슬레이브 관계가 아니며, 운영체제나 사용자 스레드가 모든 프로세서에서 실행이 가능

비대칭 멀티 프로세싱(Asymmetric Multiprocessing) : 마스터 - 슬레이브 관계를 가지며, 운영체체는 특정 프로세서에서만 실행되고 그 외에 프로세서에서 사용자 스레드가 실행됨

 

장점

  • 동일 작업에 대해 여러 개의 프로세스 처리 중에 하나의 프로세스에 문제가 생겨도 다른 프로세스에 영향을 미치지 않는다.  → 안정적이다.
  • 멀티 스레드보다 큰 메모리 공간과 CPU 점유시간을 보장받는다.
  • 대용량 데이터를 처리하기 위해 빠른 처리가 필요한 경우에 사용

단점

  • IPC는 더 많은 오버헤드를 발생시키고 복잡하다.
  • 많은 메모리 영역이 필요하다.

 

멀티 스레딩

하나의 작업을 프로세스 내에서 여러 스레드로 나누어 작업을 처리한다. 스레드 간 코드, 데이터, 힙 메모리 영역을 공유하게 함으로써 자원의 중복 사용을 피하고, 메모리 낭비를 막는다. 각 스레드는, 스택 영역과 커널 영역에 Register 정보를 가지고 있다.

 

장점

  • 동일한 메모리 공간 사용함으로써 자원의 중복을 막고 메모리 낭비를 줄였다.
  • 스레드간 통신 비용 저렴
  • I/O Bound 프로세스에서 이상적
  • 새로운 스레드를 생성은 프로세스의 생성보다 빠르다.
  • 스레드간 Context Switching 속도 빠름
  • 하나의 스레드가 중단되면 다른 스레드가 작업을 계속하며 응답성을 높임.
  • 다중 CPU를 사용하여 멀티 스레드를 구성한다면 다중 CPU가 멀티 스레드를 동시에 처리하여 CPU의 사용량을 높이고, 처리시간이 단축된다.

단점

  • 스레드의 개수를 제한해 줄 필요가 있다.
  • 스레드의 생성은 오버헤드를 발생시킴
  • 자원을 공유하기 때문에 동기화 문제 발생 가능
    • 동기화를 하기 위해 과도하게 lock을 걸 경우 병목현상의 발생 가능성이 있으며 적절히 설정해 주어야 함
    • Mutex : 동일한 메모리 영역에 동시접근이 발생하는 상황에 사용. 한번에 하나의 쓰레드만 접근할 수 있도록 하자
    • Semaphore : 동일한 메모리 영역에 접근하는 쓰레드의 실행순서를 지정해야 하는 상황에 사용. 카운트르 하며 임계영역에 동시 접근 가능한 쓰레드의 수를 제한할 수 있다.
  • 테스트와 디버깅의 어려움
  • 하나의 스레드에 문제가 생기면 전체적으로 영향을 받을 수 있음

 


참고하면 좋은 사이트

 

IPC의 종류와 특징

IPC(Inter Process Communication) - 프로세스 간 통신에 대하여 종류와 특징들에 대하여 살펴보겠습니다. [리눅스 커널 구조] - 위 그림처럼 Process는 완전히 독립된 실행객체입니다. 서로 독립되어 있다

jwprogramming.tistory.com

 

멀티 프로세스 vs 멀티 스레드

하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업(테스크)을 처리하도록 하는 것

velog.io

 

[OS] 멀티프로세스, 멀티스레드, 멀티 프로그래밍, 멀티프로세스 멀티스레드에서의 데이터 통신

포스팅 시작에 앞서서 프로세스와 스레드의 생김새가 어땠더라?: 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것메모리 침범 문제를 OS 차원에

velog.io

 

대칭 및 비대칭 다중 처리의 차이점

대칭 및 비대칭 다중 처리 간의 주요 차이점은 대칭 다중 처리에서 시스템의 모든 프로세서가 OS를 실행할 수 있다는 것입니다. 그러나 비대칭 다중 처리에서는 마스터 프로세서 만이 OS를 실행

ko.gadget-info.com

 

'CS > 운영체제' 카테고리의 다른 글

Dead Lock  (0) 2022.08.11
동기화 문제의 해결  (0) 2022.08.11
Thread란  (0) 2022.08.03
Process란  (0) 2022.07.13
OSI 7 Layer와 TCP/IP 4 Layer  (0) 2022.05.08