NullNull

멀티 프로그래밍, 멀티 태스킹, 멀티 쓰레딩, 멀티 프로세싱 본문

Computer Science

멀티 프로그래밍, 멀티 태스킹, 멀티 쓰레딩, 멀티 프로세싱

KYBee 2022. 9. 29. 23:18

프로그램

  • 컴퓨터가 실행할 수 있는 명령어들의 집합

프로세스

  • 컴퓨터에서 실행 중인 프로그램
  • 각각의 프로세스는 독립된 메모리 공간을 할당 받음
  • 명령어들과 데이터를 가짐

PCB - Process Control Block

  • 특정한 프로세스를 관리할 때 필요한 정보를 포함하는 운영체제 커널의 자료구조
  • 운영체제가 프로세스를 표현하는 방식

CPU

  • 명령어를 실행하는 연산장치

메인 메모리

  • 프로세스가 CPU에서 실행되기 위해 대기하는 곳

단일 프로세스 시스템

  • 한 번에 하나의 프로그램만 실행됨 → 먼저 실행하고 있던 프로그램이 끝나야 다음 프로그램이 실행됨
  • CPU 사용률이 좋지 않음
    • 어떤 프로그램이 I/O작업을 한다고 할 때, CPU에서 작업하는 시간이 2초, I/O작업을 하는 시간이 8초라고 했을때 CPU는 총 10초 중 2초만 사용된다. 즉 CPU를 20%만 사용하게 된다.
  • 해결법
    • 여러 개의 프로그램을 메모리에 올려두고 동시에 실행해보자!
    • CPU를 실행하다가 I/O작업을 하게 된다면 다른 프로그램이 CPU에서 동작한다.
    • 멀티 프로그래밍!

멀티 프로그래밍

  • 여러 개의 프로그램이 동시에 실행됨
  • CPU의 사용률을 극대화 시키는 목적
  • 단점
    • CPU 사용 기간이 길어지면 다른 프로세스는 대기해야 한다.
  • 해결법
    • 한 번 CPU를 사용할 때 아주 짧은 시간만 CPU에서 실행하도록 하자
    • 멀티 태스킹!

멀티 태스킹

  • 동시에 여러 프로그램을 짧은 시간동안 번갈아가면서 실행됨
  • 프로그램의 응답시간을 최소화 시키는 목적

하지만

  • 여러 프로세스가 동시에 실행되지만, 하나의 프로세스가 동시에 여러 작업을 수행하지 못함
    • 하나의 프로그램을 여러 개의 프로세스로 나눌 수도 있지만, Context Switching에서 많은 시간이 소요된다.
    • 프로세스 끼리는 데이터의 공유가 까다롭다.
      • 프로세스 끼리는 독립된 PCB를 가지고 이를 서로 공유하지 않기 때문이다.
  • 해결책
    • 쓰레드!

쓰레드

  • 프로세스는 한 개 이상의 쓰레드를 가질 수 있음
  • 쓰레드는 프로세스의 실행 흐름
  • CPU에서 실행되는 단위
  • 쓰레드는 PCB를 공유
    • 같은 프로세스의 쓰레드끼리는 Context Switching이 많은 시간이 소요되진 않는다.
    • PCB를 공유하기 때문이다.
    • 즉, 같은 프로세스안의 쓰레드끼리 데이터 공유가 쉽다.
  • 각 쓰레드는 동일한 프로세스 PCB의 힙 메모리 영역을 공유함
  • 각 쓰레드는 고유한 영역을 가지게 됨 (스택, 스택 포인터, 프로그램 카운터)

 

멀티 쓰레딩

  • 하나의 프로세스가 동시에 여러 작업을 실행하기 위함
  • 멀티 태스킹의 개념이 여러 프로세스와 여러 쓰레드가 짧게 쪼개어진 CPU time을 나누어 가짐

멀티 프로세싱

  • 두 개 이상의 CPU를 활용하는 시스템

 

 

정리

멀티 프로그래밍

: 하나의 프로그램이 CPU를 사용하다가 다른 작업으로 인해 남는 시간이 발생했을 때, 다른 프로그램을 실행하는 것

멀티 태스킹

: CPU의 작업 단위를 짧게 쪼개서 여러 개의 프로그램을 번갈아가며 짧은 시간 동안 실행하는 것

멀티 쓰레딩

: 프로세스 내에서 여러 개의 쓰레드를 형성하여 실행하는 것

멀티 프로세싱

: 여러 개의 CPU가 하나의 컴퓨터에 존재하여, 하나 이상의 프로세스를 동시에 처리하는 것

Comments