Context Switching이 무엇인가? 멀티프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값(Context)을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값(Context)를 교체하는 작업을 Context Switch(Context Switching)라고 한다. 질문에 대한 답변은 이정도로 하고 좀 더 명확하게 이해해본다. * Context Switching을 문맥 교환으로 번역하지 말자. Context는 무엇인가? 사용자와 다른 사용자, 사용자와 시스템 또는 디바이스간의 상호작용에 영향을 미치는 사람, 장소, 개체등의 현재 상황..
[Spin Lock] Lock과 Unlock을 busy-waiting 방식으로 하는 것. 단일 프로세서의 경우 비지웨이팅에 들어가면 임계영역에 존재하는 프로세스들이 작업을 할 수 없기 때문에 무한루프에 빠지게 된다. 스핀락은 멀티프로세서 시스템의 운영체제에서 내부적으로 임계영역 문제를 해결하기 위해 수행한다. CPU를 선점하고 있는 비지웨이팅 상태로 대기하기 때문에 권한이 해제되는 대로 빨리 작업을 수행할 수 있는 장점이 있지만, 선점 기간동안 다른 프로세스 작업이 지연될 수 있는 오버헤드도 존재한다. 그래서 짧게 수행할 수 있는 작업에 주로 사용된다. 스핀락은 크리티컬 섹션처럼 스레드가 임계 영역을 획득하지 못하게 되면(Lock을 획득하지 못하게 되면) 스레드가 블로킹 되는 것을 극복하기 위해 착안된 ..