4-2장. 다중코어 프로그래밍

기타/[운영체제]

2019. 4. 5. 22:45

[운영체제 4-2장. 다중코어 프로그래밍(Multicore Programming)]

: 코어가 여러 CPU 칩 형태를 띄거나, 칩안에 여러 코어가 존재하는 시스템

- 다중 계산 코어를 더 효율적 사용가능, 병행실행 향상.

 

 

 

 

 

[병렬실행과 병행실행]

- 병렬성(Parallelism)

  : 동시에 한개이상의 일을 수행하는 시스템

 

- 병행성(Concurrency)

  : 모든 테스크가 진행하게끔 함으로서 하나 이상의 테스크를 수행.     (여러 코어 병행)

   * 병렬 실행 없이 병행 실행 가능. 둘의 차이 숙지.

 

 

 

 

 

 

 

[프로그래밍 도전과제]

: 운영체제 설계자가 병렬 수행될수 있도록 여러 코어 활용하는 스케줄링 알고리즘을 개발해야한다.

 

- 다중코어 시스템 프로그래밍 위한 5개의 도전과제

 1) 실행 분리(Dividing activities) : 응용을 분석해 독립된 병행가능 테스크로 나누는 영역 찾는 작업(=테스크식별)

 2) 균형(Balance) : 병렬로 나눈 부분들이 전체 작업에 균등한 기여도 가지도록 하는것

 3) 데이터 분리(Data spliting) : 테스크가 접근하고 조작하는 데이터 또한 개별 코어에서 사용되도록 나누는작업.

 4) 데이터 종속성(Data dependency) : 테스크가 접근하는 데이터가 여러 테스크 사이에 종속성 없는지 검토

 5) 시험 및 디버깅(Testing and Debugging) : 단일보다 훨씬 어렵.

 

 

 

 

 

[병렬 실행의 유형]

1. 데이터 병렬(Data parallelism) : 같은 일(동일한 연산)을 나누어 실행

2. 테스크 병렬(Task parallelism) : 일들을 서로다른 코어에 분배. 서로다른 일 나누어 실행.

 

 

 

 

[Amdahl's Law]

: 병렬 실행 구조에 추가의 계산 코어 더했을때 얻을수 있는 잠재적 성능 공식.

- N : 병렬실행 구성요소 (처리 코어의 개수)

- S : 순차적으로 실행되어야만 하는 구성요소

 

 

- N이 무한대면 속도는 1/S로 수렴( = 코어 아무리추가해도 일정수준이상 성능X)

  : N이 무한대(코어 아무리 추가해도)라해도 응용의 40%가 순차실행부분이면 2.5배 이상 속도향상 X.

- 오늘날 H/W 성능 기술 발전 고려 x. 컴퓨터 코어 개수 증가할수록 적용 불가.

 

 

'기타 > [운영체제]' 카테고리의 다른 글

4-4장. 스레드 라이브러리  (0) 2019.04.06
4-3장. 다중 스레드 모델  (0) 2019.04.05
4-1장. 스레드  (0) 2019.04.05
3-3장. 프로세스에 대한 연산  (0) 2019.03.29
3-2장. 프로세스 스케줄링  (0) 2019.03.29