운영 체제와 관련하여 인터럽트 란 무엇입니까?


9

나는 여름 동안 Galvin Gagne (8 판) Silberschatz의 운영 체제 개념 을 읽기로 결정했습니다 . 나는 혼란스러운 주제에 도달했습니다-운영 체제와 관련된 인터럽트 및 그 역할.

텍스트는 운영 체제가 "init"와 같은 첫 번째 프로세스를 시작한 다음 "event"가 발생할 때까지 기다리며이 이벤트는 일반적으로 인터럽트에 의해 신호를받는다고 말합니다. 텍스트는 또한 인터럽트가 하드웨어 나 소프트웨어에서 나올 수 있다고 말합니다. 좀 더 자세하게이 기능이 어떻게 작동합니까? 운영 체제가 인터럽트에 의해 구동됩니까?

나는 단지 큰 그림 이해를 찾고 있습니다.

답변:


8

OS가 "init"와 같은 프로세스를 실행하면 메모리, I / O 장치 등과 같은 다른 하위 시스템 / 장치 관리자 등에 게 신호를 보냈을 것입니다. 인터럽트는 프로세서 또는 OS가 준비되어 있거나 새로운 입력이있는 경우 등. 초기화하는 동안 때때로 OS가 하위 시스템이 준비 될 때까지 대기하고 있으며 이러한 하위 시스템의 인터럽트는 정확히 표시합니다. 이것이 바로 "이벤트"와 관련이 있습니다.

하드웨어 또는 소프트웨어 인터럽트와 관련하여 하드웨어 인터럽트는 하드웨어에서 비롯된 것입니다. 예 : 키보드 등의 I / O 장치. 하드웨어 인터럽트로 인해 프로세서는 상태를 저장하고 인터럽트 핸들러 실행을 시작합니다. 반면에 소프트웨어 인터럽트는 명령어 세트의 명령어이므로 프로세서가 컨텍스트 스위치라고도하는 사용자-수퍼바이저의 권한 수준을 변경하게합니다. 이러한 세부 사항은 나중에 교과서에서 다룰 것입니다.


4

인터럽트는 운영 체제가 마우스 클릭과 같은 외부 이벤트를 통지 할 수있게합니다. 예외로 더 잘 알려진 소프트웨어 인터럽트를 통해 OS는 코드 실행에서 발생하는 0으로 나누기 오류와 같은 비정상적인 이벤트를 처리 할 수 ​​있습니다.

이벤트 순서는 일반적으로 다음과 같습니다.

  1. 하드웨어가 프로세서에 인터럽트 신호를 보냅니다.
  2. 프로세서가 인터럽트를 감지하고 현재 실행중인 소프트웨어를 일시 중단합니다
  3. 프로세서가 OS에서 일치하는 인터럽트 처리기 기능으로 이동
  4. 인터럽트 핸들러는 과정을 실행하고 인터럽트에서 돌아옵니다.
  5. 프로세서는 이전에 실행중인 소프트웨어에서 중단되었던 부분부터 재개

운영 체제에서 가장 중요한 인터럽트는 타이머 틱 인터럽트입니다. 타이머 틱 인터럽트를 통해 OS는 현재 실행중인 사용자 프로세스에서 주기적으로 제어권을 다시 얻을 수 있습니다. 그런 다음 OS는 다른 프로세스를 예약하고 동일한 프로세스로 되돌아 가거나 하우스 키핑 등을 수행 할 수 있습니다. 타이머 틱 인터럽트는 선점 형 멀티 태스킹 개념의 기초를 제공합니다.


4

인터럽트는 발생하는 "비정상적인"이벤트로 , 다른 상황에 관계없이 즉시 처리해야합니다 . 필자는 예상치 못했거나 나쁜 것이 아니기 때문에 인용 부호 안에 "비정상적"이라고 말하지만, CPU의 관점에서 볼 때 "비정상적"이라고 말하면 관련이없는 코드를 실행하는 동안 "정상적으로 발생"하기 때문입니다.

CPU에는 인터럽트 수신을위한 몇 가지 메커니즘이 있으며 다양한 종류의 인터럽트가 발생할 때 "수행 할 작업"을 구성하는 방법이 있습니다. 이를 통해 운영 체제는 하드웨어 장치가 작업을 수행 할 때 (정기 간격으로 인터럽트를 생성하는 중요한 하드웨어 시계 포함) 알림을 받도록 정렬 할 수 있습니다. CPU의 인터럽트 처리 구성을 통해 OS에서 지정된 코드는 인터럽트가 발생할 때마다 제어권을 얻습니다.

인터럽트 핸들러 실행이 시작될 때 컴퓨터는 매우 불쾌한 상태입니다 (응용 프로그램 프로그래머에게). 기계가 다른 작업을 수행하는 데 바빴으며 ( 무엇이든 가능 ) 이제 OS에 "무슨 일이 발생했다"는 알림이 표시됩니다. 실제로 시스템의 어느 곳에서나 인터럽트를 처리하고 CPU에서 실행중인 "무엇이든"을 방해하지 않으면 서 필요한 처리를 수행하는 데 필요한 다른 정보를 수집해야합니다. OS가 현재 실행중인 응용 프로그램 프로세스를 전환하려면 나중에 컨텍스트를 방해하지 않고 복원 할 수 있도록 컨텍스트를 충분히 저장해야하며 다른 컨텍스트를로드 한 다음 CPU가 정상적으로 재개되도록하십시오. 그 맥락에서 실행.

언급 한 바와 같이, 인터럽트는 하드웨어 장치로부터 알림을받는 데 사용되며 (단일 대안은 주기적으로 확인하는 것임) 시간을 추적하고 애플리케이션 프로세스에서 제어권을 다시 확보 할 수있는 기회를 얻습니다 (어떤 애플리케이션이 실행 중인지 전환하기 위해) 잘못된 명령을 실행하는 응용 프로그램 프로세스에서 복구하고 응용 프로그램이 OS를 요청할 수 있도록합니다. 이러한 것을 시스템 호출이라고합니다. 응용 프로그램이 기계를 서로 엉망으로 만드는 것을 방지하기 위해 응용 프로그램은 일반적으로 "사용자 모드"로 기계와 함께 실행되므로 응용 프로그램이 기본적으로 이미 할당 된 읽기 및 쓰기 (가상) 메모리 이외의 다른 작업을 수행 할 수 없습니다. 이것은 무엇이든 있음을 의미합니다그렇지 않으면 (파일 읽기 / 쓰기, 더 많은 메모리 요청, 장치 액세스 등) 응용 프로그램이 시스템 호출을해야합니다. 그것은 기본적으로 OS가 그것을 찾을 것이라는 것을 알고 어딘가에하고 싶은 것에 대한 정보를 남겨두고 올바른 종류의 인터럽트를 일으키는 CPU 명령을 실행함으로써 그렇게합니다. 그런 다음 OS는 응용 프로그램에서 수행하려는 작업을 확인하고 해당 요청을 수행해야하는지 여부를 결정할 수 있습니다. 이렇게하면 OS가 프로세스 외부에 영향을 미치는 작업을 수행하려는 프로세스의 모든 시도에 관여하게됩니다. 액세스 정책을 적용 할 수있는 유일한 방법입니다.

기본적으로 OS는 인터럽트에 의해 구동됩니다. "추상"OS는 기계를 "정상 작동"상태로 부트 스트랩하고 어느 시점에서 제어를 "정상"프로세스로 전환합니다. 정상적인 상황에서 OS는 인터럽트를 처리하여 제어권을 다시 얻습니다. 그러나 인터럽트없이 흥미로운 것은 거의 없기 때문에 OS는 기본적으로 모든 것을 항상 제어합니다.


3

운영 체제는 인터럽트에 의해 구동됩니다. 이것은 다음을 의미합니다.

실행할 프로세스, 서비스 할 I / O 장치 및 응답 할 사용자가없는 경우, 운영 체제는 조용히 앉아 무언가 일어나기를 기다립니다. 이벤트는 거의 항상 인터럽트 또는 트랩의 발생에 의해 신호를 보내며, 트랩은 유효하지 않은 명령이 제공 될 때 생성 된 하드웨어 인터럽트이며, 제어를 OS로 리턴합니다.

유효하지 않은 명령어의 예는 프로그램이 권한없이 다른 프로그램의 메모리 공간에 액세스하려고 할 때입니다.


인터럽트는 항상 뭔가 잘못되었거나 유효하지 않은 당신이 설명대로 할 필요는 없습니다

오류 또는 잘못된 명령으로 인해 트랩 인터럽트가 발생했다는 것을 알기 만하면 트랩 인터럽트를 설명하고있었습니다. 알려 주셔서 감사합니다
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.