추천, 2024

에디터의 선택

OS에서 인터럽트와 폴링 간의 차이점

우리는 마우스, 키보드, 스캐너, 프린터 등과 같이 CPU에 부착 된 많은 외부 장치를 가지고 있습니다. 또한이 장치는 CPU주의가 필요합니다. CPU가 PDF를 표시하는 데 많은 시간을 소비하고 바탕 화면의 창 미디어 플레이어 아이콘을 클릭한다고 가정합니다. CPU가 이와 같은 이벤트가 발생할 때 어떤 생각이 들지는 않지만 I / O 장치에서 이러한 입력에 응답해야합니다. 인터럽트 및 폴링은 CPU가 다른 프로세스를 실행하는 동안 어떤 순간에 발생할 수있는 장치에 의해 생성 된 이벤트를 처리하는 두 가지 방법입니다.

폴링 및 인터럽트를 사용하면 CPU가 현재 수행중인 작업을 중단하고 더 중요한 작업에 응답 할 수 있습니다. 폴링과 인터럽트는 여러 측면에서 서로 다릅니다. 그러나 폴링과 인터럽트를 구별하는 기본 포인트는 폴링 (polling)에서 CPU가 일정한 간격으로 I / O 장치를 계속 점검한다는 것입니다. 반면 인터럽트 에서는 I / O 장치가 CPU를 인터럽트하고 CPU에 CPU 서비스가 필요하다는 것을 CPU에 알려줍니다 . 인터럽트와 폴링 간의 차이점에 대해서는 아래 비교 차트에서 살펴 보았습니다.

비교 차트

비교의 근거일시 정지투표
기본장치는 CPU에 CPU주의가 필요함을 CPU에 알립니다.CPU는 CPU 상태에 상관없이 장치 상태를 지속적으로 확인합니다.
기구인터럽트는 하드웨어 메커니즘입니다.폴링은 의정서입니다.
서비스인터럽트 처리기는 장치를 서비스합니다.CPU가 장치를 서비스합니다.
표시인터럽트 요청 라인은 장치가 서비스해야 함을 나타냅니다.Comand-ready 비트는 장치의 수리가 필요함을 나타냅니다.
CPUCPU는 장치의 서비스가 필요할 때만 방해를받으며 CPU주기를 절약합니다.CPU는 기다려야하고 장치가 CPU 사이클을 많이 소모하는 서비스를 필요로하는지 확인해야합니다.
발생인터럽트는 언제든지 발생할 수 있습니다.CPU는 정기적 인 간격으로 장치를 폴링합니다.
능률인터럽트는 장치가 CPU를 계속해서 인터럽트하는 경우 비효율적입니다.
CPU가 드물게 서비스 준비가 된 장치를 찾지 못하면 폴링이 비효율적이됩니다.
종소리가 나서 문을 열어 누가 왔는지 확인하십시오.끊임없이 문을 열어 다른 사람이 왔는지 확인하십시오.

인터럽트의 정의

인터럽트는 CPU가 장치의주의가 필요함을 감지 할 수있게 해주는 하드웨어 메커니즘 입니다. CPU에는 모든 단일 명령어 실행 후 CPU가 검사하는 와이어 인터럽트 요청 라인 이 있습니다. CPU가 인터럽트 요구 라인에서 인터럽트 신호를 감지하면 CPU는 현재 실행중인 태스크를 중지하고 제어를 인터럽트 핸들러 에 전달하여 I / O 디바이스에 의한 인터럽트 전송에 응답 합니다 . 인터럽트 처리기는 장치를 서비스하여 인터럽트를 해결합니다.

CPU는 인터럽트가 언제 발생하는지 알지 못하지만 인터럽트가 발생할 때마다 인터럽트에 응답해야합니다.

인터럽트 핸들러가 인터럽트 실행을 완료하면 CPU는 인터럽트에 응답하기 위해 중단 한 태스크의 실행을 다시 시작 합니다. 소프트웨어, 하드웨어, 사용자, 프로그램의 일부 오류 등으로 인해 인터럽트가 발생할 수도 있습니다. CPU의 특성을 다루는 인터럽트는 멀티 태스킹으로 이어집니다. 즉, 사용자는 동시에 여러 가지 작업을 수행 할 수 있습니다.

둘 이상의 인터럽트가 CPU로 전송되면 인터럽트 처리기는 처리 대기중인 인터럽트를 관리하는 데 도움이됩니다. 인터럽트 핸들러는 인터럽트 수신으로 인해 트리거 되므로 CPU에서 처리 대기중인 인터럽트의 우선 순위를 지정 하고 대기열 에 배치하여 서비스를받습니다.

폴링의 정의

우리가 인터럽트에서 보았 듯이, I / O 디바이스로부터의 입력은 CPU에 처리를 요청하는 순간에 도착할 수 있습니다. 폴링은 장치에주의가 필요하다는 것을 CPU에 알리는 프로토콜 입니다. 장치가 CPU 처리를 필요로한다는 것을 CPU가 알리는 인터럽트와 달리 폴링 CPU는 CPU 처리가 필요한지 여부를 계속 해서 I / O 장치에 요청 합니다.

CPU는 장치에 CPU주의가 필요한지 여부를 감지하기 위해 장치에 연결된 모든 장치를 지속적으로 테스트합니다. 모든 장치 에는 해당 장치의 상태 즉 CPU에 의해 실행될 명령이 있는지 여부를 나타내는 명령 준비 비트가 있습니다. 명령 비트가 1 로 설정된 경우, 비트가 0 이면 몇 가지 명령이 실행되고 다른 명령은 명령이 없습니다. CPU 에는 사용 중인지 여부에 관계없이 CPU의 상태를 나타내는 사용 중 비트 가 있습니다. 사용중인 비트가 1 로 설정된 경우 일부 장치의 명령을 실행하는 중 사용 중이며 그렇지 않으면 0 입니다.

폴링 알고리즘

  • 디바이스가 CPU에 의해 실행될 명령을 가지고있을 때, 디바이스는 그것이 clear (0) 될 때까지 CPU의 busy bit를 지속적으로 점검한다.
  • 사용중 비트가 클수록 디바이스는 명령 레지스터에 쓰기 비트를 설정하고 데이터 아웃 레지스터에 바이트를 씁니다.
  • 이제 장치는 명령 준비 비트 (1)를 설정합니다.
  • CPU가 장치 명령 준비 비트를 확인하고 set (1)을 찾으면 해당 비트를 설정합니다 (1).
  • 그러면 CPU는 장치의 명령 레지스터를 읽고 장치의 명령을 실행합니다.
  • 명령 실행 후 CPU는 명령 준비 비트, 장치의 오류 비트를 지우고 (0) 장치의 명령이 성공적으로 실행되었음을 나타내며 CPU가 실행 중임을 나타 내기 위해 사용중인 비트도 지 웁니다 (0). 다른 장치의 명령.

운영 체제에서 인터럽트와 폴링 간의 주요 차이점

  1. 인터럽트에서 장치는 CPU에 서비스가 필요함을 알리는 반면 폴링 CPU에서는 장치의 서비스가 필요한지 반복적으로 확인합니다.
  2. 인터럽트는 CPU가 인터럽트가 발생했다는 신호 인 인터럽트 요청 라인 이있는 하드웨어 메커니즘 입니다. 반면 폴링은 제어 비트 를 검사하여 장치에 실행할 항목이 있는지 여부를 알리는 프로토콜 입니다.
  3. 인터럽트 처리기 는 장치에서 생성 된 인터럽트를 처리합니다. 반면 폴링에서는 CPU가 필요할 때 장치를 서비스합니다.
  4. 인터럽트는 인터럽트 요청 라인에 의해 신호됩니다. 그러나 Command-Ready 비트는 장치가 서비스해야 함을 나타냅니다.
  5. 인터럽트에서는 CPU가 모든 장치가 인터럽트를 걸면 방해를받습니다. 반면 폴링에서는 CPU가 모든 장치의 명령 대기 비트를 반복적으로 확인하여 CPU 사이클을 많이 낭비합니다.
  6. 인터럽트는 임의의 순간에 발생할 수 있지만 CPU는 정기적 인 간격으로 장치를 폴링합니다.
  7. 폴링은 CPU가 장치를 폴링 상태로 유지할 때 비효율적이되고 서비스 할 준비가 된 장치를 거의 찾지 않습니다. 한편, 장치가 CPU 처리를 계속해서 중단 시키면 인터럽트는 비효율적이게됩니다.

결론:

폴링과 인터럽트 모두 I / O 장치에 효율적입니다. 그러나 위에 논의 된 특정 조건에서는 비효율적 일 수 있습니다.

Top