[운영체제 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 |