멀티 코어
프로세스와 스레드
프로세스는 하나 이상의 쓰레드로 구성된다.
쓰레드: 하나의 프로그램 실행 흐름( Fetch-decode-execute)
https://murgon.tistory.com/3?category=1034734
멀티 코어와 멀티 스레드
하나의 코어는 하나의 쓰레드를 실행한다.
멀티 코어 CPU(=멀티 코어 프로세서)는 가지고 있는 여러 개의 코어를 통해 동시에 여러 개의 쓰레드를 실행시킬 수 있다.
멀티 코어와 멀티 프로세스
모던 OS(운영체제)에서 스케줄링의 단위는 쓰레드이다. 프로세스가 아니다.
따라서, 멀티 코어 CPU에서는 병렬적으로 여러 개의 프로세스가 실행될 수 있다.
예시) 다음의 자원이 있다고 가정하자.
듀얼 코어 CPU (코어가 두개)
프로세스 A - (쓰레드 A1, 쓰레드 A2)
프로세스 B - (쓰레드 B1, 쓰레드 B2)
이 때, CPU 각각의 코어에 A1, A2, B1, B2 중 하나가 실행될 수 있는 것이다.
A1, B1 이 각각의 코어에서 병렬적으로 실행될 수도 있고, A1, B2가 병렬적으로 실행될 수도 있고, B1, B2가 병렬적으로 실행될 수 도 있다.
각 쓰레드들은 CPU 내 모든 코어에 스케줄링될 수 있으며, OS에 의해 로드 밸런싱된다.
이 예제에서 A1, A2 혹은 B1, B2 쓰레드가 동시에 실행될 수 있는 것처럼, 하나의 프로세스가 multi core에서 실행될 수도 있는 것이다.
참고
https://stackoverflow.com/questions/38733670/can-a-single-process-run-in-multiple-cores
https://www.youtube.com/watch?v=QmtYKZC0lMU
'개발자: 지식 정리 > CS 지식: 컴퓨터 구조와 운영체제' 카테고리의 다른 글
멀티코어에서 컨텍스트 스위칭은 각 코어마다 독립적으로 일어날까? (0) | 2023.08.24 |
---|---|
쓰레드가 많아질 때 해결법 (0) | 2022.06.30 |
멀티코어 CPU란 (0) | 2022.06.30 |
동기화 문제 (0) | 2021.11.10 |
메모리 관리 (0) | 2021.11.10 |