본문 바로가기
컴퓨터 과학/운영체제

[운영체제] 프로세스와 메모리 구조(6): 멀티 프로세싱과 멀티 태스킹

by webcodur 2024. 4. 27.
728x90

 

목차

     

    현대 컴퓨팅 환경에서 멀티 프로세싱과 멀티 태스킹은 필수적이다. 이 기술들은 컴퓨터 성능을 향상시키고, 여러 작업을 효율적으로 처리하는 데 중요한 역할을 한다. 멀티 프로세싱은 각 CPU가 다양한 프로세스를 동시에 수행하고, 멀티 태스킹은 단일 CPU가 여러 작업을 동시에 수행한다. 이 글에서는 두 기술의 기본 개념과 현대 컴퓨팅에서의 역할을 살펴본다.

     

    1. 멀티 프로세싱 (Multiprocessing)

    1.1 멀티 프로세싱의 정의

    여러 개의 CPU 코어로 동시에 여러 개의 프로세스를 실행하는 방식. 이 방식은 각 CPU가 독립적인 작업을 수행함으로써 전체 시스템의 처리능력과 효율을 향상시킨다. 멀티 프로세싱 환경에서는 각 프로세서의 작업 부하를 균등하게 분배하는 것이 중요하다 (Load Balancing). 적절한 부하 분산은 시스템의 전반적인 처리 능력을 극대화하고, 자원 사용률을 최적화하는 데 기여한다. 

     

    다음 그림은 멀티 프로세싱 환경에서의 CPU 배열을 보여준다. 각 'CPU'는 독립적인 작업을 수행한다.

    // Multi-Processing Architecture
    // Each CPU can work on a different task simultaneously.
    
    +------+   +------+
    | CPU1 |   | CPU2 |
    +------+   +------+
       |          |
    [ Task1 ] [ Task2 ]
       |          |
    +------+   +------+
    | CPU3 |   | CPU4 |
    +------+   +------+
       |          |
    [ Task3 ] [ Task4 ]
       |          |

     

    1.2 멀티 프로세싱의 예시와 적용

    멀티 프로세싱은 특히 대규모 데이터 처리와 복잡한 연산이 필요한 분야에서 광범위하게 활용된다. 예를 들어, 영화 산업에서는 고해상도의 시각 효과를 생성하기 위해 멀티 프로세싱을 사용하여 렌더링 시간을 대폭 줄인다. 또한, 금융 분야에서는 실시간 거래 처리를 위해 여러 프로세서가 동시에 다양한 거래를 처리하여, 시장 변동에 빠르게 대응한다.

     

    1.3 멀티 프로세싱의 장단점

    장점:

    • 병렬 처리로 인한 성능 향상: 데이터를 여러 부분으로 나누어 각기 다른 프로세서에서 동시에 처리할 수 있다. 여러 프로세서를 사용하여 동시에 여러 작업을 처리하므로 전체 시스템의 처리 능력이 크게 향상된다.
    • 신뢰성: 하나의 프로세서에 문제가 발생해도 다른 프로세서가 작업을 계속 수행할 수 있어 시스템의 전체적인 신뢰성이 증가한다.
    • 확장성: 추가 프로세서를 쉽게 추가할 수 있어 시스템의 성능을 점진적으로 향상시킬 수 있다.

    단점:

    • 비용: 여러 프로세서를 사용하기 때문에 하드웨어 및 유지보수 비용이 증가한다.
    • 복잡성: 프로세스 간 통신과 동기화를 관리하는 것이 복잡해져 프로그래밍과 시스템 설계가 더 어려워진다.
    • 자원 공유 문제: 공유 자원에 대한 접근을 제어하기 위해 복잡한 동기화 메커니즘이 필요하다.

     

    2. 멀티 태스킹 (Multitasking)

    2.1 멀티 태스킹의 정의

    하나 또는 여러 CPU에서 여러 프로그램이나 프로세스를 시간을 분할하여 동시에 실행되는 것처럼 관리하는 기술. 멀티 태스킹 시스템은 운영 체제가 작업 스케줄러로 CPU 시간을 여러 작업 사이에 분배한다. 스케줄러는 각 작업에 대한 우선 순위를 정하고, 필요에 따라 컨텍스트 스위칭을 통해 빠르게 작업을 전환하여 실행한다. 사용자는 이 때문에 여러 작업을 동시에 수행하는 것처럼 느끼게 된다.

     

    또한 스레드를 활용하면 멀티 태스킹을 더욱 효율적으로 만들 수 있다. 스레드는 프로세스 내에서 실행되는 독립적인 실행 경로로, 하나의 프로세스가 여러 스레드를 갖고 있는 경우, 각 스레드는 별도의 작업을 동시에 수행하여 프로그램의 반응성과 성능을 개선할 수 있다. 이는 웹 서버 또는 현대 멀티코어 CPU에서의 병렬 처리 작업에 특히 유용하다.

     

    다음 그림은 단일 CPU에서 멀티 태스킹을 통해 여러 작업을 시간에 따라 스케줄링하는 모습을 보여준다. 하나의 CPU는 시간의 흐름에 따라 다양한 작업을 처리한다

     

    // Multi-Tasking on a Single CPU
    // The CPU switches between tasks over time.
    
    +-----+-----+-----+-----+
    | CPU | CPU | CPU | CPU |
    +-----+-----+-----+-----+
      |     |     |     |
    [Task1][Task2][Task1][Task3]
      |     |     |     |
    +-------------------------+
           Time --->

     

    2.2 멀티 태스킹의 예시와 적용

    멀티 태스킹은 일상적인 사무 환경에서 광범위하게 적용된다. 사용자가 문서 작업을 하면서 동시에 이메일을 확인하고 음악을 듣는 등의 작업이 이에 해당한다. 이 외에도, 멀티 태스킹은 운영 체제가 시스템 자원을 효율적으로 관리하도록 하여, 다양한 애플리케이션과 프로세스가 동시에 실행되는 환경을 지원한다.

     

    2.3 멀티 태스킹의 장단점

    장점:

    • 효율성 증가: 단일 CPU에서 여러 작업을 동시에 처리할 수 있어 자원 사용이 최적화되고 시스템의 반응성이 향상된다.
    • 사용자 경험 개선: 사용자가 여러 프로그램을 동시에 사용할 수 있게 되어 생산성이 증가한다.
    • 자원 분배: 시스템 자원을 효과적으로 분배하여 모든 프로세스가 필요한 만큼의 자원을 받을 수 있게 한다.

    단점:

    • 자원 경쟁: 여러 프로세스가 동시에 자원을 요구할 때 충돌이 발생할 수 있다.
    • 오버헤드: 작업을 빈번하게 전환하는 과정에서 발생하는 컨텍스트 스위칭은 CPU 시간을 소모하여 전체적인 시스템 성능을 저하시킬 수 있다.
    • 복잡한 스케줄링: 효과적인 멀티 태스킹을 위해서는 고도로 정교한 작업 스케줄링 알고리즘이 필요하며, 잘못 관리되면 시스템의 성능 저하를 초래할 수 있다.