Глава 5, Конкуренция и состояния состязаний |
До сих пор мы уделяли мало внимания проблеме конкуренции - то есть тому, что происходит, когда система пытается сделать больше, чем что-то одно одновременно. Управление конкуренцией является, однако, одной из основных проблем в программировании операционных систем. Ошибки, связанные с конкуренцией, одни из самых лёгких для создания и те, которые труднее всего найти. Даже опытные программисты ядра Linux в конечном итоге периодически допускают ошибки, связанные с конкуренцией.
В ранних ядрах Linux было относительно мало источников конкуренции. Симметричные многопроцессорные системы (Symmetric multiprocessing systems, SMP) не поддерживались ядром и единственной причиной одновременного исполнения было обслуживание аппаратных прерываний. Такой подход предлагает простоту, но это больше не работает в мире, который ценит производительность систем со всё большим и большим числом процессоров, и настаивает на том, чтобы система быстро реагировала на события. В ответ на эти требования современного оборудования и приложений ядро Linux превратилось в точку, где происходит одновременно много больших событий. Эта эволюция привела к гораздо более высокой производительности и масштабируемости. Это, однако, значительно усложняет программирование ядра. Программисты драйверов устройств должны теперь учитывать конкуренцию в их разработке с самого начала и они должны иметь чёткое понимание возможностей, предоставляемых ядром для управления конкуренцией.
Цель этой главы - начать процесс создания такого понимания. С этой целью мы вводим средства, которые сразу же применяются в драйвере scull из Главы 3. Другие средства, представленные здесь, не будут использоваться ещё некоторое время. Но сначала мы взглянем на то, что может пойти не так с нашим простым драйвером scull и как избежать этих потенциальных проблем.
Переведено на сайте www.notabenoid.com
http://notabenoid.com/book/11832/38274
Внимание! Этот перевод, возможно, ещё не готов,
так как модераторы установили для него статус
"перевод редактируется"
Переведено на сайте www.notabenoid.com
http://notabenoid.com/book/11832/38274
Внимание! Этот перевод, возможно, ещё не готов,
так как модераторы установили для него статус
"перевод редактируется"
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.