2009-04-19 3 views
1

는 처리는 데이터가 전송되는 에 대응하는 버퍼의 헤더 주소자는 것이다 완료 디스크 I/O를 대기. 디스크 드라이브에 대한 루틴의 인터럽트가 전송이 완료되면 버퍼 헤더에서 웨이크 업을 호출합니다. 인터럽트는 에 대해 커널 스택을 사용하며이 때 실행 된 프로세스는 이고 해당 시스템 프로세스에서 웨이크 업은 입니다.프로세스 스케쥴링 힌트 예

내가 강조한 마지막 단락을 설명해주십시오. 그것은 어떤 사건이 일어나기를 기다리고있는 과정을 깨우므로 잠을 자곤했습니다. 이 파라는 갈빈에게서 왔습니다. 그런데 유닉스 운영체제를 공부할 좋은 책이나 링크를 제안 해 줄 수 있습니까?

감사합니다.

+0

커널에 대해 배우기위한 좋은 책을 찾고 있다면 Linux 커널에 대한 이해는 Linux 내부에 대한 훌륭한 책입니다. – Zifre

답변

1

일부 프로세스가 인터럽트를 받았을 때 실행 중입니다. 커널은 그것을 처리하기 위해 다른 프로세스 컨텍스트로 바뀌지 않습니다. 시간이 걸릴 것입니다. 현재 컨텍스트에서 필요한 것만 수행하고 스케줄러는 다음에 스케줄을 지정하면 대기 프로세스가 준비되었음을 알립니다 계속하려면.

주위에 좋은 책이 많이 있습니다. 나는 The Design and Implementation of the FreeBSD Operating System과 같은 다양한 McKusick 서적을 좋아합니다.

+0

정말 that.can에 대한 감사도 PLZ이 설명; FreeBSD는 페이징 큐를 사용하여 페이지 색상을 구현합니다. 대기열은 프로세서의 L1 및 L2 캐시의 크기에 따라 정렬됩니다. 새로운 페이지가 할당 될 필요가있을 때, FreeBSD는 캐시를 위해 최적으로 정렬 된 페이지를 얻으려고합니다. 감사합니다. – mawia

+0

와우, 의견에 없습니다. 할 수 없습니다. –

0

디스크가 전송 종료를 알리는 즉시 I/O 완료 인터럽트가 실행됩니다. 이것은 커널이 현재하고있는 것에 관계없이 수행됩니다. 인터럽트 처리기는 일반적으로 매우 작고 독립적입니다. 따라서 별도의 스레드로 전체 컨텍스트 전환을 수행하는 대신 현재 런타임 환경 (스택, CPU 상태 등)을 재사용하는 것이 빠릅니다. 아래쪽면에서는 인터럽트 핸들러가 플래그를 어딘가에 설정하거나 작업 항목을 큐에 넣는 것과 같이 매우 제한된 작업 만 허용된다는 것을 의미합니다. 또한, 그들은 실행 프로세스가 방해받지 않도록 자신을 매우 조심스럽게 정리해야합니다.

0

에릭 레이몬드 (Eric Raymond)의 'The Art of Unix Programming'은 유닉스 철학과 문화를 이해하기 위해 읽어야합니다. 실제로 설계를 뒷받침하는 이유를 실제로 알기를 바랍니다.