운영체제

멀티스레딩과 멀티프로세싱 차이점

♠디지털 모험일지♠ 2024. 10. 26. 16:18
728x90
반응형
SMALL

1. 멀티스레딩 (Multithreading)

  • 정의: 하나의 프로세스 내에서 여러 스레드를 사용해 동시에 여러 작업을 수행하는 방식입니다. 모든 스레드는 하나의 메모리 공간을 공유하면서 실행됩니다.

  • 쉽게 말하면 한 사무실(프로세스) 안에 여러 직원(스레드)이 있고, 각 직원이 동시에 다양한 일을 하는 상황과 비슷합니다. 이때, 이 직원들은 사무실 내의 모든 자료(메모리)를 함께 사용합니다.

  • 장점

    • 자원 효율성

      모든 스레드가 같은 메모리 공간을 공유하므로, 메모리 사용량이 줄어듭니다. 즉, 추가적인 메모리 공간을 할당하지 않아도 되니 자원을 덜 씁니다.

      • 쉽게 말하면 같은 자료실을 여러 직원이 함께 사용하면 새로운 자료실을 만들 필요가 없는 것과 같아요.
    • 빠른 통신

      스레드 간 통신이 메모리 공유를 통해 이루어져, 데이터 교환 속도가 빠릅니다.

      • 쉽게 말하면 한 사무실 안에서는 직원들이 말로 대화하는 것처럼, 자료를 빠르게 주고받을 수 있습니다.
    • 응답성 향상

      사용자와의 인터랙션이 중요한 프로그램(예 게임, GUI 프로그램)에서 멀티스레딩을 사용하면, 사용자 인터페이스가 멈추지 않고 응답성을 유지할 수 있습니다.

      • 쉽게 말하면 게임을 하면서 동시에 그래픽을 처리하고, 사용자의 입력에 반응하는 걸 생각하면 돼요.
  • 단점

    • 동기화 문제

      스레드가 같은 메모리 공간을 공유하기 때문에, 동시에 같은 데이터를 수정하면 오류가 발생할 수 있어요. 이를 해결하려면 상호 배제(Mutual Exclusion)와 같은 기법이 필요합니다.

      • 쉽게 말하면 여러 직원이 같은 자료를 동시에 수정하려고 하면 자료가 꼬일 수 있어요. 그래서 누가 언제 자료를 사용할지 정해야 합니다.
    • 디버깅 복잡성

      여러 스레드가 동시에 실행되기 때문에, 버그가 발생하면 원인을 찾기가 어려울 수 있습니다.

      • 쉽게 말하면 여러 사람이 동시에 말하면 누가 무엇을 잘못했는지 알아내기 어려운 것과 같아요.

2. 멀티프로세싱 (Multiprocessing)

  • 정의: 여러 개의 프로세스를 사용해 동시에 작업을 수행하는 방식입니다. 각 프로세스는 독립적인 메모리 공간을 사용하고, 서로 간섭하지 않습니다.

  • 쉽게 말하면 여러 사무실(프로세스)에 각각 한 명의 직원이 있고, 각 직원이 다른 사무실에서 독립적으로 일을 하는 상황과 비슷합니다. 이때, 각 사무실(프로세스)은 독립적인 자료실(메모리)을 사용합니다.

  • 장점

    • 안정성

      각 프로세스는 독립적인 메모리 공간을 가지기 때문에, 한 프로세스가 문제가 생겨도 다른 프로세스에 영향을 미치지 않습니다.

      • 쉽게 말하면 한 사무실에서 문제가 생겨도 다른 사무실에 영향이 없어서, 회사 전체에 큰 문제가 생기지 않아요.
    • 병렬 처리 능력

      멀티코어 CPU에서는 여러 프로세스를 동시에 실행시켜, 실제로 여러 작업을 동시에 병렬로 처리할 수 있습니다.

      • 쉽게 말하면 여러 사무실이 각자 독립적으로 동시에 일하면 회사의 전체 작업 처리 속도가 빨라져요.
    • CPU 집중 작업에 적합

      계산량이 많은 작업을 여러 프로세스에 나누어 처리할 때 효과적입니다.

      • 쉽게 말하면 수학 문제를 풀 때 한 사람에게 모두 맡기기보다는, 여러 사람에게 나눠주면 전체적으로 더 빠르게 풀 수 있는 것과 같아요.
  • 단점

    • 높은 메모리 사용

      각 프로세스가 독립적인 메모리 공간을 가지기 때문에, 메모리 사용량이 많아집니다.

      • 쉽게 말하면 각 사무실마다 별도의 자료실을 두면 공간이 많이 필요해지는 것처럼, 메모리가 더 필요해요.
    • 프로세스 간 통신 비용

      서로 다른 프로세스가 데이터를 주고받으려면 IPC 같은 통신 방법을 사용해야 해서, 속도가 느리고 복잡할 수 있습니다.

      • 쉽게 말하면 각 사무실이 편지나 전화로 소통하는 건 한 사무실 내에서 대화하는 것보다 느리고 불편해요.
    • 프로세스 생성/종료 속도

      새로운 프로세스를 생성하거나 종료하는 속도가 스레드보다 느립니다.

      • 쉽게 말하면 새 사무실을 만들고 없애는 게, 사무실 안에서 새로운 직원 한 명을 뽑고 내보내는 것보다 시간이 오래 걸려요.

멀티스레딩과 멀티프로세싱의 차이 요약

구분 멀티스레딩 멀티프로세싱
메모리 사용 하나의 프로세스 내에서 메모리 공유. 효율적이지만 충돌 위험 있음. 각 프로세스가 독립적인 메모리 사용. 안정적이나 메모리 소모 많음.
통신 속도 빠름 (메모리 공유) 느림 (IPC 사용 필요)
안정성 한 스레드의 오류가 프로세스 전체에 영향을 줄 수 있음. 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않음.
생성/종료 속도 스레드 생성과 종료가 빠름. 프로세스 생성과 종료가 느림.
적합한 작업 I/O 작업 (예 웹 서버, 게임) 계산량이 많은 작업 (예 영상 처리, 데이터 분석)

쉽게 요약

  • 멀티스레딩은 한 방 안에서 여러 직원이 같이 일하는 거라서 자료를 쉽게 공유하지만, 서로 충돌하지 않도록 주의해야 합니다.
  • 멀티프로세싱은 여러 방에서 각자 일하는 거라서 더 안정적이고 강력하지만, 각 방이 독립적이라 공간(메모리)이 많이 필요하고 대화(통신)도 더 어렵습니다.
반응형
SMALL