MultiPle_Processor Scheduling
> SMP( Symmetric Multiprocessing Prcoessing )
대칭적이다..: 모든 CPU 가 동일한 HW 구조
> 개별적으로 Queue 가 있더라도 같은 유형의 작업 수행 > Task 다른 Queue로 이동
1. Common ready Queue : 스케쥴러가 모두 균등하게 분배 ( load balancing )
/*
Load Balancing
> Push Migration : (주체) 바쁜놈 > idle 한테 주기적으로 Push!
> Pull Migration : (주체) idle > 바쁜놈한테 있는 waiting하고있는 것을받아옴
Prcoessor Affinity
>C1 의 P1의 T1 <> C2의 P2의 T2는 분리되어있음 > cash-missing 큼 !
> if) 다른 Process 에서 Thread를 쓰려면..
> RAM 에서 그 해당 Process 에서 데이터를 따로 가져온뒤
> 내 Prcoss의 데이터에 넣어서 Thread에 적용해주어야함 > 매우 비효율..
> soft : 가능한 (무조건 보장은 X) : C1의 T1은 C1에서, C2의 T2는 C2에서 할수있도록
> Hard : 바쁘든말든 Hard! : C1의 T1은 C1에서 바쁘든 말든 꼭!
*/
2. Per_core run Queue : cpu 마다 다 다른 queue 를 가짐
MultiCore Processer : CPU가 1개 그안에 core가 여러개
> Fast/ power comsume less
> Process 단위로서 서로 다른 작업 나누어 하기에
ex)
core 0 : Compute > Memory stall > compute..
core 1 : " " "
"
MultiThreaded Multicore system
한 Core 안에 .. 2개의 HW Thread(HW chip//CPU) .. 또 그안에 SW Thread (kernel //OS)
ex)
core 0 : HW Process1 : Compute > Memory stall > Compute..
: HW Process2 : Compute > Memory stall > "
한 작업안에서 나누어서 한쪽에서 Compute, 한쪽에서 Memory stall..
> 병렬 처리는 아니며,, CPU가 빠르게 전환됨 // Not OS 스케쥴러
>> OS view 로는 CPU가 2개인것처럼 보임
> Quad Core MultiThreaded Multicore system > 8개의 CPU 처럼 보임
// OS view) 8개의 process 를 CS
NUMA ( Non_uniform_memory_Access ) : 슈퍼컴에서 씀
> Many CPU, Many RAM
> Thread 를 가장 가까운 RAM 에서 처리하도록 정해야함
// CPU <-> Memory 가 멀수록 속도저하 Big!