운영체제

병행 프로세스와 병렬 프로세스

chaeit1904 2024. 9. 29. 23:20

병행성과 병렬성

병행실행 :  single code로 이룰어진다. 따라서 번갈아가면서 실행된다.

병렬 실행 : 2개 이상의 코어를 이용해서 실행되며 동시에 실행된다.

운영체제는 성능 향상을 위해서 병행과 병렬 프로세스를 상황에 맞게 이용한다.

 

병행성을 통한 성능향상

프로세스의 병행성을 이용해 성능을 향상시키는 것을 말한다.

암달의 법칙이란..

프로세서, 즉 코어의 개수 N과 병행처리 비율 P를 이용한 성능 계산 식이다.

예를 들어 병행처리를 60%만큼 가능하고 코어가 1개라면 성능은 1이다.

즉 병행처리율을 높여야 성능이 향상된다.

 

프로세스의 병행성에서...

프로세스를 병행으로 처리하는 것은 멀티코어 CPU환경에서의 프로그래밍 환경에서 특히 중요하다.

병행 프로그래밍의 최적화로 병행성의 효율을 최대로 끌어올릴 수있다.

 

이렇게 중요한 병행처리에서 병행 프로세스들 간의 고려할 사항이 있는데 

1. 공유자원 문제

2. 상호통신 문제

3. 동기화 문제

3가지 문제가 발생할 수 있기 때문에 조심해야 한다.

 

병행성을 판단하기 위해 선행그래프 기법을 사용한다.

오른쪽 그래프를 보면 s3을 위해 s1, s2이 필요하다.

또한 s4를 위해 s3이 필요하다.

즉 1,2번은 동시 실행이 가능하고 3,4번은 순차실행이 가능하다.

 

위 사진을 보면 또한 병행처리가 가능한 것들을 알 수 있다.

s2번부터 s6까지 와 s3는 병행처리가 가능하다.

또한 s5와 s6은 병행처리가 가능하다.

 

이런 선행그래프에서 만약 사이클이 발생한다면 이는 실행모순을 일으키기 때문에 문제가 발생할 수 있다.

 

병행 프로세스에는 2가지 예가 있는데

fork, join함수이다.

fork : 병행실행을 가능하게 한다.

join : 병행실행된 프로세스들을 합친다.

 

 

이제 병렬 프로세스에 대해서 알아보자..

 

병렬프로세스란 두개 이상의 프로세스를 물리적으로 동시에 실행하는 것을 말한다.

데이터를 코어의 수만큼 나누어 분할하여 실행한다.

 

이런 병렬프로그래밍 또한 고려사항이 존재한다.

1. 처리할 Task의 적절한 분리

2. 처리량의 균형

3. 데이터의 적절한 분리

4. 데이터간의 독립성

5. 테스트와 디버깅의 어려움

총 5개를 고려해야한다.

 

병렬프로그래밍의 사례와 원리를 알아보자 .

OpenMP

고성능 처리를 위해서 멀티 CPU를 동시에 사용할 수 있도록 하는 API이다.

CUDA

GPU에서 고성능 처리를위해 엔비디아에서 개발된 아키텍쳐이다,

 

 

'운영체제' 카테고리의 다른 글

IPC, 사례연구  (0) 2024.10.12
동기화와 세마포어  (0) 2024.10.10
비동기 병렬프로세스  (1) 2024.09.29
운영체제 프로세스  (1) 2024.09.25
운영체제-  (1) 2024.09.24