본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

멀티프로세싱(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 9. 19.
728x90
반응형
멀티프로세싱

멀티프로세싱

멀티프로세싱(Multiprocessing)은 컴퓨터 과학 및 소프트웨어 개발에서 사용되는 중요한 개념으로, 

하나 이상의 프로세서(또는 CPU 코어)를 사용하여 여러 작업을 동시에 처리하는 기술입니다.

 

멀티프로세싱 이점

성능 향상: 

멀티프로세싱을 사용하면 작업을 병렬로 처리할 수 있으므로, 

여러 작업을 동시에 수행하여 시스템의 전체 성능을 향상할 수 있습니다.

작업 분리: 

멀티프로세싱은 하나의 큰 작업을 여러 개의 작은 작업으로 분리하고, 

각 작업을 별도의 프로세서에서 실행하여 복잡한 작업을 단순화하고 가속화할 수 있습니다.

응답성 향상: 

멀티프로세싱을 사용하면 다른 작업이 진행 중이더라도 시스템이 계속해서 응답하고 

작업을 수행할 수 있어 사용자 경험을 향상시킬 수 있습니다.

 

멀티프로세싱 형태

멀티프로세서(Multi-Processor): 

 형태에서는 하나의 컴퓨터 시스템에 여러 개의 독립적인 프로세서가 존재하며, 

각 프로세서는 독립적으로 작업을 수행합니다. 

이는 대규모 서버 및 고성능 컴퓨팅 시스템에서 주로 사용됩니다.

멀티스레딩(Multi-Threading): 

이 형태에서는 하나의 프로세서 내에서 여러 스레드가 병렬로 실행됩니다. 

스레드는 프로세스 내에서 공유된 자원을 사용하므로, 

멀티프로세서보다 자원 관리 및 동기화가 더 복잡할 수 있지만, 

더 경제적으로 멀티코어 CPU를 활용할 수 있습니다.

멀티프로세싱을 구현하려면 병렬 프로그래밍 기술과 도구를 사용해야 하며, 

이를 통해 작업을 분할하고 관리할 수 있습니다. 

대표적인 멀티프로세싱 기술 및 프레임워크로는 Python의 multiprocessing 모듈, 

Java의 멀티스레딩 기능, C/C++의 POSIX 스레딩 등이 있습니다.

멀티프로세싱은 현대 컴퓨터 시스템에서 매우 중요한 역할을 하며, 

다양한 응용 프로그램에서 성능 향상과 병렬 처리를 가능하게 합니다.

 

멀티프로세서 자세히알기!

예시 1: 웹 서버

가상의 웹 서버를 고려해 보겠습니다. 

이 웹 서버는 여러 클라이언트로부터 동시에 웹 페이지 요청을 받아야 합니다. 

멀티프로세서를 사용하면 다음과 같이 작동할 수 있습니다:

웹 서버는 클라이언트 요청을 받으면 각 요청을 하나의 프로세스로 할당합니다.
이러한 프로세스는 독립적으로 작동하므로 각각의 클라이언트 요청을 병렬로 처리할 수 있습니다.
결과적으로, 

웹 서버는 여러 클라이언트에 대한 웹 페이지 요청을 동시에 처리하여 빠른 응답을 제공할 수 있습니다.


예시 2: 과학 계산
과학 연구에서, 멀티프로세서는 대규모 계산 작업을 가속화하는 데 사용됩니다. 

예를 들어, 날씨 모델링이나 유전자 분석과 같은 복잡한 계산을 수행하는 프로그램은 멀티프로세서를 

활용하여 다음과 같이 작동할 수 있습니다:

연구 작업을 여러 개의 프로세서에 분할하여 각각 병렬로 계산합니다.
각 프로세서는 독립적으로 계산을 수행하며 결과를 모아 최종 결과를 얻습니다.
멀티프로세서를 사용하면 계산 작업을 더 빠르게 완료할 수 있습니다.

 

멀티스레딩 자세히 알기!

예시 1: 그래픽 애플리케이션
그래픽 애플리케이션에서 멀티스레딩을 사용하면 다양한 작업을 병렬로 처리할 수 있습니다. 

예를 들어, 3D 게임 엔진은 다음과 같은 방식으로 멀티스레딩을 활용할 수 있습니다.

렌더링 스레드: 게임 화면을 렌더링 하고 그래픽 처리를 수행합니다.
입출력 스레드: 사용자 입력을 처리하고 네트워크 통신을 담당합니다.
물리 엔진 스레드: 물리 시뮬레이션 및 충돌 감지를 수행합니다.
각 스레드는 동시에 실행되므로 게임은 부드럽게 진행되고, 사용자 입력과 그래픽 처리가 동시에 처리됩니다.

예시 2: 웹 서버
멀티스레딩을 사용하여 웹 서버를 구현할 때, 

각 클라이언트 연결에 대해 별도의 스레드를 생성할 수 있습니다. 이렇게 하면 다음과 같은 이점이 있습니다:

여러 클라이언트가 동시에 서버에 연결하더라도 각 클라이언트 연결을 별도의 스레드로 처리하여 

서버 응답 시간을 단축시킵니다.
각 스레드는 독립적으로 클라이언트 요청을 처리하며, 이로써 다중 클라이언트 지원을 향상합니다.
이러한 예시들은 멀티스레딩을 사용하여 작업을 병렬로 처리하여 성능을 향상하는 방법을 보여줍니다.

 

 

*바쁜 사람을 위한 깜찍한 정리

멀티프로세싱이란 컴퓨터 과학 및 소프트웨어 개발에서 사용되는 개념으로 하나 이상의 프로세서를 사용하여 여러 작업을 동시 처리하는 기술입니다. 멀티프로세싱은 두 가지 형태로 나뉘는데 하나의 컴퓨터 시스템에 여러 개의 프로세서를 독립적으로 실행할 수 있는 멀티프로세서, 하나의 프로세스 내에서 여러 개의 스레드를 병렬로 실행되게 하는 멀티스레딩이 있습니다.
728x90
반응형