Multi-Processing에 관하여

노아카프카·2022년 7월 12일
0

CS

목록 보기
1/1

Multi-Processing

: 두 개 이상의 프로세스가 '동시에' 실행되는 것.

여기서 '동시에'가 의미하는 바는 두 가지로 나눌 수 있다.

  • 동시성 : CPU Core 하나가 여러 Process를 짧은 시간동안 시분할 시스템으로 실행하는 것. (동시에 실행되는 것처럼 보이게)
  • 병렬성 : 여러 개의 CPU Core가 각각의 Process를 연산하는 것.
    (Literally 동시에)

1. 동시성

하나의 CPU Core는 한번에 하나의 작업만 할 수 있다. 그렇다면 어떻게 여러 프로세스를 동시에 처리하는 것처럼 보이게 할 수 있는 것일까?

답은 아주 빠르게 여러 프로세스를 왔다갔다 하면서 처리하는 것이다.


1.1 프로세스의 Memory Load

프로세스는 작업을 하기 위해서, Memory에 공간을 할당받는다.
이러한 공간은 운영체제의 관리하에 해당 프로세스만 접근할 수 있으며, [ stack, heap, data, code ] 영역으로 구성된다.


1.2 시분할 시스템 ( Time- Sharing )

: CPU의 작업시간을 여러 프로세스가 나누어서 쓰는 것.


1.3 Context Switch

context switch를 알기 위해서는 먼저 context와 PCB에 대해서 알아야 한다.

  • Context : 프로세스가 현재 어떤 상태로 수행되고 있는 지에 대한 총체적인 정보
  • PCB(Process Control Block) : context 정보를 저장하는 자료구조
    -> 보호된 메모리 영역에 저장된다.

'Context Switching = 현재 수행되고 있는 프로세스를 변경하는 것.'
Context Switching 의 과정에 대해 알아보자.

  1. 진행중인 Process를 PCB에 저장
  2. 새롭게 진행할 프로세스의 PCB를 읽어서 보관된 상태를 복구.
  3. 복구된 Context로 작업 진행.

1.4 PCB의 구성

PCB에는 아래와 같은 정보들이 저장된다.

  • Process Number
  • Process State
  • Process Counter(PC)
  • CPU 스케쥴링 정보, 우선순위
  • 메모리 정보

이 중 State는 세 가지로 분류 된다.

  • 실행 ( runnig )
  • 준비 ( ready ) : CPU만 할당 받으면 즉시 실행가능.
  • 봉쇄 ( wait, sleep, blocked ) : CPU를 할당 받아도 즉시 실행불가( 다른 작업에 대한 대기 등의 이유로 )

2. 병렬성

: Multi-Core CPU를 적극적으로 활용하는 방법.

Process Pool을 core갯수만큼 만들어서 작업을 할당한다.

0개의 댓글