단일 CPU의 단일 코어 CPU에서는 복수 실행 단위가 없기 때문에 한 스레드 만 일반적으로 한 번에 실행할 수있는주의 사항이 있지만 threadmulti-tasking (멀티 스레딩)을 사용할 수 있습니다. 여러 실행 단위 (하드웨어 멀티 스레딩)가 없으면 하드웨어는 저수준 운영 체제 소프트웨어가 정의한 "software multi-threading"전략을 사용하여 실행할 대상과시기를 결정합니다.
Preemption은 타이머 기반 인터럽트를 사용하여 부분적으로 구현되는 단일 경로를 따라 이러한 여러 실행 스트림을보다 능동적으로 제어하는 전략입니다. 우선권의 반대 - cooperative scheduling -은보다 방대한 접근 방식을 채택하여 활성 스레드까지 남겨 놓고 완료 신호를 보냅니다. 협력 스케줄링 방식은 하나 개의 스레드 프로세스의 스레드가 이상 (이 경우) 유일한 컴퓨팅 리소스에 보유 할 수있는 결과
:

그러나 만약 이러한 활성 스레드 계획은 영원히 계속 활동하기위한 것이 었습니다. 그것은 본질적으로 여기서 일어나는 일입니다.
스핀 록은 요청 된 리소스를 잠 그려면 활성 대기입니다. 스레드는 다른 스레드가 리소스를 잠그기를 기다리면서 거기에 머물러 있습니다. 텍스트는 하드웨어 상황이 한 번에 하나의 활성 스레드 만 허용한다는 것을 나타내므로 요청 된 자원이 잠겨 있으면 비활성 스레드에 의해 잠겨 있음을 의미합니다.
우선 순위없이 실행을 중지 할 시점은 스레드에 달려 있습니다. 따라서 활성 스레드가 스핀 락 (spinlock)하면 영구적으로 멈춰 있습니다. 이를 막으려면 사용자가 실제로 캐시/동적 메모리를 지우는 시스템을 실제로 끄도록 강요받을 것입니다.
선점 예약 스레드는 time slices으로 구현됩니다. 추가 작업이 스레드에서 완료되기 전에 특정 리소스에 액세스하는 것이 필수적 일 때 spinlock - 바쁜 대기 시간이 중요합니다.
선점과 함께 커널은 지정된 시간이 지나면 자동으로 force context switch이됩니다. 따라서 단일 CPU가 있더라도 커널이 멈추지 않습니다. 결국 lock 리소스가있는 스레드는 시간을 가지며 리소스를 해제합니다. 스핀 록 스레드가 다음 예약 시간을 얻으면 자원을 잠그고 계속할 수 있습니다.
전반적으로 이는 중단이 적음을 의미합니다. 두 스레드가 서로의 자원을 누른 상태에서 각 spinlocked 때 그러나
, 스핀은 아직 ... 같은 교착 등의 선점 스케줄링과 더 복잡한 문제를 겪을 수 그러나

를, 이러한 경우는 자원 잠금 요청에 대한 커널 보호를 통해 피할 수있는 경우가 많습니다.
완벽한 세계에서 신중한 스레드 설계로 협업 일정을 계획하면 잠재적으로 중요한 프로세스를 조금 더 빠르게 실행할 수 있습니다. 따라서 Mac OS 및 Windows 3.x와 같은 마른 오래된 OS에서 일반적인 접근 방식이었습니다. 그러나 계산 요구가 증가함에 따라 협업 스케줄링의 단점을 피하기가 더 어려워졌습니다. 따라서 모든 최신 운영 체제 커널은 선점 형 스케줄러를 사용합니다.
* "선매없이 ..."* –
오호 .. 알았어! 감사!! –