multithread와 multiprocess의 사용하고, OpenMP를 이용하여 실습을 하는 것을 배워보겠다.
N개의 코어가를 가진 CPU
코어를 여래 개 사용하면 속도도 물론 빨라지지만, 속도는 어느정도 한계가 있고, 데이터 양을 N배 처리할 수 있게 증가한다.
공짜 점심의 시대는 끝났다
하지만, 현재는 프로그래머가 직접 코딩을 하여 스레드를 사용하는 시대가 온 것이다.
무어의 법칙
CPU 내의 트랜지스터의 수가 증가하면서 더 많은 명령어와 캐시를 탑재할 수 있게 되었다.
이때 캐시란, 하디 디스크에 저장된 정보가 메모리와 캐시를 거쳐 레지스터에 올라와 CPU에서 연산을수행하는데, 이때 캐시 크기가
증가할수록 프로그램의 처리 속도가 증가한다. 왜냐면 더 많은 양의 정보를 받을 수 있기 때문이다.
스레드(thread)
코어 안에 스레드가 존재하여, 코어와 프로세스의 차이를 혼동할 수도 있다.
코어는 중앙 처리 장치(CPU) 내의 실행 유닛 중 하나이다. 이때 코어는 하드웨어적인 실행 유닛이다.
프로세스는 실행 중인 프로그램의 인스턴스를 나타낸다. 이때 프로세스는 소프트웨어적인 실행 단위이다.
멀티 프로세스와 멀티 스레드
이때 멀티 스레드는 메모리를 공유하므로 경쟁상태, 동기화, false sharing과 같은 문제가 발생한다.
구조를 확인 해보겠다.
위 사진을 보면 알 수 있듯이, 싱글 스레드과 싱글 프로세스에서는 6초가 걸리는 것이 3초로 줄었고, 데이터 처리하는 것이 4배가 되었다.
병렬화를 한다면 성능이 개선될 것이다. 이때의 상황을 그림으로 확인해보겠다.
운영체제- CPU 스케줄링 및 다중 큐 (0) | 2024.04.16 |
---|---|
운영체제 - 컴퓨터 구조 (0) | 2024.03.31 |
병렬프로그래밍(2) - 루프 병렬화 (0) | 2024.03.25 |
운영체제 - 커널 (1) | 2024.03.18 |
인공지능 - 인공지능과 탐색 (0) | 2024.03.14 |