반응형
2021. 9. 24. 17:51
2022. 6. 22. 14:17 복습을 위한 수정 시작
OS는 성능 향상을 목적으로 CPU가 한 개 일 때 프로세스를 병행 실행할 수 있고, CPU가 다수일 때 프로세스를 병렬 실행할 수 있다.
병행 프로세스와 병렬 프로세스에 대해 자세히 알아보겠다.
병행 프로세스 Concurrent Process
- CPU가 한 개일 때 실행 중인 2개 이상의 프로세스이다.
- Asynchronous Concurrent Processes
- 프로세스의 병행성을 높여야, 성능 개선을 기대할 수 있고 효율이 높아진다.
- 병행 프로그래밍의 최적화로 병행성을 극대화.
- 병행 프로그래밍을 할 때 고려해야 할 사항들이 있다. 병행 프로세스들 간의 공유 자원 문제, 병행 프로세스들 간의 상호 통신 문제, 병행 프로세스들 간의 동기화 문제 등이 있다.
- 병행 프로세스 간의 상호 통신을 인터 프로세스 커뮤니케이션이라고 한다.
- 병행성을 판별하는 기법으로는 선행 그래프 (Precedence Graph)라는 기법이 있다.
병렬 프로세스 Parallel Process
- 2개 이상의 프로세스를 물리적으로 동시에 실행 (CPU가 다수일 때)
- DATA Parallelism, Task Parallelism라고도 한다.
- 병렬 프로그래밍을 할 때 고려해야 할 사항들이 있다.
- 처리할 TASK의 적절한 분리, 처리량의 균형, 데이터의 적절한 분리(상호 의존성이 없는지),
데이터 간의 독립성, 테스트와 디버깅의 어려움 등이 존재한다.
병렬 프로그래밍 사례
- open MP - 고성능 처리를 위해서 Multi CPU를 동시에 사용할 수 있도록 프로그래밍할 수 있는 API. C, C++ API LINUX, Windows, UNIX에서 지원
- CUDA - 2007, GPU에서 고성능 처리를 위해 nvidia에 의해 개발된 HW/SW (대량의 병렬 처리), AI(딥러닝, Tensor flow), 블록체인 채굴에서 활용됨. CUDA에서 GPGPU API를 사용하여 C/C++로 병렬 프로그래밍 실현.
프로세스는 독립적으로 작업을 할 수도 있고 공유된 자원을 가지고 공동 작업을 할 수도 있다.
여러 프로세스가 한정된 자원을 가지고 공동으로 작업을 하면 문제가 발생할 수 있다.
이때 등장하는 키워드로는 공유 자원, 경쟁 조건, 임계 구역등이 있는데 이에 대해서는 아래 포스팅에서 확인할 수 있다.
https://devdebin.tistory.com/16?category=972158
https://devdebin.tistory.com/24?category=972158
이상으로 운영체제 전공 수업 복습을 마친다.
2022. 6. 22. 14:55 복습을 위한 수정 마무리
반응형
댓글