P1 및 P2 모두 준비 대기열에 동시에 추가 할 수 없습니다. 준비된 대기열에 프로세스를 추가하려면 이 준비 대기열에 대한 액세스를과 동기화해야하기 때문에 추가 순서가 있어야합니다 (P1이 P2보다 먼저 추가되거나 P2가 P1보다 먼저 추가됨). 대기열이 손상되지 않도록 주문하십시오. 단일 코어 시스템에서는 대기열을 수정하는 동안 인터럽트를 비활성화하여이를 수행 할 수 있습니다. 멀티 코어 시스템에서는 커널의 구현에 따라 잠금의 일부 조합과 인터럽트를 비활성화하여이를 수행 할 수 있습니다.
예를 들어 단일 코어에서 P1을 선점하게하는 타이머 인터럽트가 발생했다고 가정 해 보겠습니다. 타이머 인터럽트가 수신되면 인터럽트를 비활성화합니다. 대기열에 P1을 추가하는 동안 P2를 위해 완료된 일부 I/O 또는 사용자가 P2를 시작하는 등의 이유로 인해 P2를 사용할 수 없습니다. 인터럽트가 비활성화되어 커널이 얻었습니다 P1을 대기열에 추가하고 인터럽트를 활성화 할 때까지는 P2와 관련된 모든 이벤트에 신경을 써야합니다. P2에 대해서도 마찬가지입니다. P2를 대기열에 추가하고 P1이 선점 될 수있는 타이머 인터럽트가 도착하면 타이머 인터럽트는 P2가 대기열에 추가 될 때까지 무시됩니다.
먼저 잠금을 얻은 사람은 누구입니까? –
@ M.ShawCan 당신은 정교합니다 – user3256888
일반적으로 컴퓨팅에서는 동시에 어떤 일도 발생하지 않습니다. 정말 가까이에 있을지 모르지만, 뭔가 다른 것들보다 먼저 발생합니다. –