2011-02-04 4 views
0

유닉스가 프로세스 A를 실행하고 더 높은 레벨의 인터럽트가 발생한다고 가정하자. 그런 다음 OS가 인터럽트 번호를 받고 IVT에서 호출 할 루틴을 찾습니다.인터럽트가 발생하면 유닉스 커널은 어떤 프로세스를 결정 하는가

지금 어떻게 OS는이 인터럽트는 프로세스 A의 것을 아는가 및 프로세스 B. 것은 그 프로세스 B가 디스크 읽기 발행 한 수 있으며 OS는 프로세스 A를 실행하는 동안이 돌아왔다되었을 수 있습니다하지

감사

이와
+0

인터럽트가 발생하면 그 자체가 –

답변

3

시작 : http://en.wikipedia.org/wiki/MINIX

이동 책을 사서 읽어; 그것은 많은 도움이 될 것입니다.

인터럽트는 "for"프로세스가 아닙니다. 그것들은 장치 용이고 장치 드라이버에 의해 처리됩니다.

장치 드라이버가 인터럽트를 처리하고 장치의 상태를 업데이트합니다.

장치 드라이버가 I/O 작업이 완료되었다고 결론을 내면 I/O 요청 큐를 업데이트하여 완료된 작업을 확인할 수 있습니다. 보류중인 조작 대기 행렬에서 조작이 제거됩니다.

해당 작업을 대기중인 프로세스가 바로 실행 준비가되었으며 실행을 다시 시작할 수 있습니다.

1

하드웨어 인터럽트는 프로세스를 대상으로하지 않습니다.

프로세스 A가 파일을 요청하면 이미 커널에있는 파일 시스템 계층이 블록 장치에서 파일을 가져옵니다. 블록 장치 자체는 드라이버에 의해 처리됩니다.

블록 장치에 의해 트리거 된 인터럽트가 발생하면 OS에 드라이버와 관련된이 인터럽트가 있습니다. 그래서 드라이버는 인터럽트를 처리하라는 지시를받습니다. 그런 다음 어떤 블록을 읽었는지 묻고 요청한 블록을 확인합니다.

요청 된 데이터가 준비되었음을 파일 시스템에 알린 후 추가 처리 할 수 ​​있습니다. 그런 다음 프로세스는 차단 된 상태를 유지합니다.

스케줄러의 다음 라운드에서 스케줄러는이 프로세스를 깨우도록 선택할 수 있습니다. 또한 다른 프로세스를 먼저 깨우기 위해 선택할 수도 있습니다.

보시다시피, 인터럽트 발생은 프로세스 작업에서 완전히 분리됩니다.

관련 문제