시스템 호출과 인터럽트 간의 차이

Anonim

시스템 호출과 인터럽트

일반적인 프로세서는 명령어를 하나씩 실행합니다. 그러나 프로세서가 일시적으로 정지하고 현재 명령어를 보유하고 다른 프로그램이나 코드 세그먼트 (다른 ​​장소에 상주)를 실행해야하는 경우가있을 수 있습니다. 이렇게하면 프로세서는 정상 실행으로 돌아가고 중단 된 부분부터 계속됩니다. 시스템 호출과 인터럽트가 그런 경우입니다. 시스템 호출은 시스템에 내장 된 서브 루틴 호출입니다. 인터럽트는 외부 하드웨어 이벤트로 인한 프로그램 제어 인터럽트입니다.

시스템 콜이란 무엇입니까?

시스템 호출은 운영체제와 통신하기위한 인터페이스를 컴퓨터에서 실행하는 프로그램을 제공합니다. 프로그램이 운영 체제의 커널에서 서비스를 요청해야 할 때 (시스템 자체에 권한이없는 경우) 시스템 호출을 사용합니다. 사용자 수준 프로세스에는 운영 체제와 직접 상호 작용하는 프로세스와 동일한 권한이 없습니다. 예를 들어 외부 I / O 장치와 통신하거나 다른 프로세스와 상호 작용하려면 프로그램이 시스템 호출을 사용해야합니다.

인터럽트 란 무엇입니까?

컴퓨터 프로그램을 정상적으로 실행하는 동안 CPU가 일시적으로 중단 될 수있는 이벤트가 발생할 수 있습니다. 이와 같은 이벤트를 인터럽트라고합니다. 인터럽트는 소프트웨어 또는 하드웨어 결함으로 인해 발생할 수 있습니다. 하드웨어 인터럽트는 (간단히) 인터럽트라고하며 소프트웨어 인터럽트는 예외 또는 트랩이라고합니다. 인터럽트 (소프트웨어 또는 하드웨어)가 발생하면 제어는 인터럽트에 의해 발생하는 조건을 처리 할 수있는 ISR (인터럽트 서비스 루틴)이라는 특수 서브 루틴으로 전송됩니다.

위에서 언급했듯이 인터럽트라는 용어는 일반적으로 하드웨어 인터럽트를 위해 예약되어 있습니다. 외부 하드웨어 이벤트로 인해 프로그램 제어가 중단됩니다. 여기서 외부는 CPU 외부에있는 것을 의미합니다. 하드웨어 인터럽트는 일반적으로 타이머 칩, 주변 장치 (키보드, 마우스 등), I / O 포트 (직렬, 병렬 등), 디스크 드라이브, CMOS 클록, 확장 카드 (사운드 카드, 비디오 카드 등). 즉, 실행중인 프로그램과 관련된 일부 이벤트로 인해 하드웨어 인터럽트가 거의 발생하지 않습니다. 예를 들어, 사용자가 키보드를 누르는 것과 같은 이벤트 또는 내부 하드웨어 타이머가 시간 초과되면 이러한 종류의 인터럽트가 발생할 수 있으며 CPU에 특정 장치의주의가 필요함을 알릴 수 있습니다. CPU가 현재하고있는 일을 중단 (즉, 현재의 프로그램을 일시 정지)하는 것과 같은 상황에서, 장치에 요구되는 서비스를 제공하고 정상적인 프로그램으로 돌아갈 것이다.

시스템 호출과 인터럽트의 차이점은 무엇입니까?

시스템 호출은 시스템에 내장 된 서브 루틴 호출이며, 인터럽트는 프로세서가 일시적으로 현재 실행을 보유하게하는 이벤트입니다. 그러나 하나의 큰 차이점은 인터럽트가 동기식이 아니라는 점입니다. 즉, 시스템 호출은 고정 된 시간 (보통 프로그래머에 의해 결정됨)에서 발생하지만 사용자가 키보드를 누르는 것과 같은 예기치 않은 이벤트로 인해 언제든지 인터럽트가 발생할 수 있습니다. 따라서 시스템 호출이 발생할 때 프로세서는 어디로 돌아갈 지 기억 만하면되지만 인터럽트가 발생하면 프로세서는 시스템을 되돌릴 장소와 시스템의 상태를 기억해야합니다. 시스템 호출과 달리 인터럽트는 대개 현재 프로그램과 관련이 없습니다.