운영체제

멀티프로세스, 멀티쓰레드, 멀티프로그래밍, 멀티태스크

코딩고구마 2020. 11. 20. 15:58

멀티프로세서(Multi-Processor)

프로세서(Processor)란?

  하드웨어적 측면에서 컴퓨터 내의 프로그램을 수행하는 하드웨어 유닛

  CPU나 microprocessor를 말함

 

멀티프로세서란?

  하나의 컴퓨터에 CPU(프로세서)가 여러 개 붙어있는 것을 의미

  각각의 프로세서에는 서로 다른 작업(task)가 수행될 수 있다

 

 

멀티프로그래밍(Multi-Programming)

초기의 컴퓨터하나의 프로그램이 메모리에 올라가 하나의 프로그램만 CPU가 처리를 수행했다.
이런 구조는 프로세서의 처리 속도와 I/O 속도 간의 차이로 I/O가 완료될 때까지 프로세서는
다음 명령을 수행하지 못하고 IDLE한 상태가 됨 즉, 프로세서의 자원 낭비 발생

 

멀티프로그래밍은 프로세서가 어떤 프로그램의 I/O작업을 대기할 동안 다른 프로그램을 수행하도록 하는 것

이를 위해 메모리에 적재되는 프로그램은 하나가 아닌 여러 프로그램이 동시에 올라간다

 

멀티태스킹(Multi-Tasking)

Task란 운영체제에서 처리되는 작업의 단위 혹은 특정 일을 위한 명령어 집합을 뜻한다.

멀티 태스킹은 OS 스케줄링에 의해 *시분할(Time sharing)로 Task를 번갈아가며 수행하는 것을 의미한다

여러 개의 Task를 빠르게 번갈아 수행해 사용자는 동시에 여러 Task가 수행된다고 느낌

 

 

멀티 프로세싱(Multi-Processing)

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

프로세스는 기본적으로 하나의 쓰레드를 갖는다

 

  [장점]

    - 프로세스는 각각 개별 자원을 할당받는다. 따라서 여러 개의 자식 프로세스 중 하나가 문제가 발생하더라도

      해당 자식프로세스가 죽는 것 외에 다른 영향으로 확산되지 않는다.

 

  [단점]

    - Context Switch에 따른 오버헤드 발생

      Context Switch 발생 시 Cache에 있던 데이터를 모두 리셋하고 새로운 프로세스에 대한 데이터를 불러와야 함

 

    - 프로세스는 각각 독립된 메모리 영역을 할당받기 때문에 자원을 많이 사용함

 

    - 프로세스는 각각 독립된 메모리 영역을 할당받아 하나의 프로그램에 속하는 프로세스끼리 변수를 공유할 수 없다

      따라서 프로세스 간의 통신 방법(IPC, Inter Process Communication)이 필요한데 복잡하고 어렵다.

 

멀티 쓰레딩(Multi-Threading)

하나의 프로세스가 다수의 작업을 각각의 쓰레드를 이용해 동작시킬 수 있다

 

 [장점]

    - 시스템 자원 소모 감소(자원 효율성 증가)

      개별적인 자원을 할당하는 프로세스와 달리 하나의 프로세스에 할당된 자원을 쓰레드 간에 공유

 

    - 시스템 처리량 증가(처리 비용 감소)

      프로세스 간의 통신에 비해 쓰레드 간의 통신이 비용이 적음

      쓰레드는 프로세스의 Stack 영역을 제외한 모든 자원을 공유한다

      쓰레드 사이 작업량이 작아 Context Switching이 빠름

       

 

  [단점]

    - 동기화 문제 발생!!

      쓰레드 간의 자원 공유는 전역 변수를 이용하므로 쓰레드 간의 충돌이 발생할 수 있어 조심해야함

반응형