вопрос планирования процесса - PullRequest
1 голос
/ 19 апреля 2009

Например, процесс, ожидающий Дисковый ввод-вывод для завершения будет спать на адрес заголовка буфера в соответствии с данными переданы. Когда прерывание подпрограмма для драйвера диска отмечает, что передача завершена, она вызывает пробуждение по заголовку буфера. The прерывание использует стек ядра для какой бы процесс ни происходил работает в то время, и пробуждение сделано из этого системного процесса.

Не могли бы вы объяснить последнюю строку в абзаце, который я подчеркнул. Речь идет о пробуждении процесса, который ожидал какого-то события и, следовательно, спал. Этот пункт от Гальвина. Кстати, можете ли вы предложить какую-нибудь хорошую книгу или ссылку для изучения операционных систем Unix?

Спасибо.

Ответы [ 4 ]

1 голос
/ 19 апреля 2009

Морис Бах Дизайн операционной системы Unix - самая известная и всеобъемлющая книга по этому вопросу.

1 голос
/ 19 апреля 2009

В момент получения прерывания запущен некоторый процесс. Ядро не переключается на какой-то другой контекст процесса для его обработки - это займет время - оно просто делает то, что необходимо в текущем контексте, и позволяет планировщику знать, что в следующий раз, когда он планирует, процесс ожидания готов продолжить.

Вокруг много хороших внутренних книг. Мне нравятся различные книги McKusick и др. , такие как Проектирование и реализация операционной системы FreeBSD .

0 голосов
/ 19 апреля 2009

Эрик Рэймонд «Искусство программирования Unix» следует прочесть, чтобы понять философию и культуру Unix. Чтобы действительно знать и ценить причины, стоящие за его дизайном.

0 голосов
/ 19 апреля 2009

Прерывание завершения ввода / вывода будет выполнено, как только диск подаст сигнал об окончании передачи. Это делается независимо от того, что в данный момент делает ядро. Обработчики прерываний обычно очень малы и самодостаточны. Следовательно, быстрее повторно использовать текущую среду выполнения (стек, состояние ЦП и т. Д.) Вместо полного переключения контекста на отдельный поток. С другой стороны, это означает, что обработчикам прерываний разрешено выполнять очень ограниченные действия, например устанавливать флаг где-то еще или ставить рабочий элемент в очередь. Кроме того, они должны очень тщательно убирать за собой, чтобы не нарушать рабочий процесс.

...