2011-08-17 2 views
1

프로세스 P1이 단일 CPU 만있는 시스템에서 무한 루프로 실행 중입니다. 또한 P2, P3와 같은 다른 프로세스가 있지만 CPU를 얻기 위해 대기 중이지만 P1이 이미 실행 중일 때 대기 큐에 있습니다. 그래서단일 프로세서 시스템에서 무한 루프 실행

int main() 
{ 
    while(1); 
} 

, 최종 결과가 될 것입니다 무엇을 :

프로그램은 무엇인가, 무엇입니까? 시스템 충돌이 발생합니까?

의심스러운 대답은 CPU가 충돌하지 않고 모든 프로세스가 특정 시간 조각을 가지고 있기 때문에 P1의 시간 조각이 만료 된 후 다른 대기 프로세스가 CPU를 확보 할 수 있기 때문입니다.

그러나 커널 (O/S)은 시간 조각이 만료되었는지 확인합니다. 단 하나의 CPU 만 있고 프로세스가 무한 루프에서 실행되고 있기 때문입니다. 왜냐하면 검사를해야한다면 CPU가 필요하기 때문에 CPU는 이미 무한 루프에서 실행중인 프로세스 P1에 의해 점유되어 있기 때문입니다.

이 경우 어떻게됩니까?

+3

인터럽트. 인터럽트의 작동 방식에 대해 알아보십시오. – Gabe

+0

@ 게이브 : 인터럽트가 작동하려면 타이머가 별도의 스레드에서 실행되어야합니다. 그러나 프로세서가 하나뿐이라면 타이머 스레드와 프로세스 스레드가 어떻게 병렬로 실행됩니까? - kingsmasher1 0 초 전 – kingsmasher1

+0

아니요, 타이머 인터럽트는 대개 CPU의 일부가 아닌 다른 칩에서 생성됩니다. – Gabe

답변

2

정말 사용하는 운영 체제와 하드웨어에 따라 다릅니다. 인터럽트는 코드 실행을 다른 위치 (인터럽트 핸들러)로 전송할 수 있습니다. 이러한 인터럽트는 소프트웨어 (프로그램의 코드가 이러한 인터럽트 처리기를 호출 할 수 있음) 또는 하드웨어 (CPU가 해당 핀 중 하나에서 신호를 수신 함) 일 수 있습니다. 마더 보드에는 일정한 인터럽트 스트림 (타이머 인터럽트)을 생성 할 수있는 PIC (Programmable Interrupt Controller)라는 것이 있습니다. OS는 타이머 인터럽트 처리기를 사용하여 실행중인 프로세스를 중지하고 다른 프로세스를 계속할 수 있습니다.

다시 말하지만 실제로는 OS, 하드웨어와 관련이 있습니다. 자세한 내용이 없으면 확실한 대답을하기에는 너무 일반적인 질문입니다.

+0

타이머 인터럽트에는 CPU가 필요하지 않습니까? – kingsmasher1

+0

UNIX 시스템이라고 가정합니다. – kingsmasher1

+0

아니요, 타이머 인터럽트는 CPU에서 실행되지만 CPU 외부의 무언가에 의해 트리거 될 수 있습니다. _Unix_는 실제로 그것을 좁히지 않습니다. 손목 시계는 _unix_ 버전을 실행할 수도 있습니다. –

0

프로세서에는 인터럽트라는 것이 있습니다. OS (windows와 같은) 프로세서에게 : -이 프로세스를 X 시간 동안 사용하고 나서 말해주십시오. 그래서 procesor는 타이머를 시작하고 프로세스에서 작동합니다. 시간이 지나면 procesor가 interupt를 전송하고 OS에게 시간이 경과했음을 알립니다. OS는 이제 다음 단계에서 작동 할 프로세스를 결정합니다.

희망 사항. 질문에 대한 답변입니다.

+0

그러나 프로세서가 하나뿐이라면 타이머 스레드와 프로세스 스레드가 어떻게 병렬로 실행됩니까? – kingsmasher1