Как убедить моего коллегу в том, что код ядра linux является повторным? - PullRequest
5 голосов
/ 13 октября 2009

Да, я знаю ... Некоторых людей иногда трудно убедить в том, что звучит естественно для остальных из нас, и мне нужна ваша помощь прямо сейчас ТАКОЕ сообщество (или я скоро отправлю почту ..)

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

Сегодня другое. Очевидно, что вызов одного и того же системного вызова из разных процессов, работающих параллельно на одной и той же архитектуре, не приведет к неопределенному поведению. Ядро Linux широко распространено в настоящее время и известно своей надежностью, хотя работает на многоядерных архитектурах. Это мой аргумент на данный момент. Но что бы вы могли доказать объективно ?

Я думал показать ему какую-нибудь функцию в ядре linux (на lxr website ) как системный вызов mutex_lock (). Eveything настроен, чтобы заставить его работать в параллельной среде. Но код может быть не так очевиден для новичка (как и я).

Пожалуйста, помогите мне ..; -)

Ответы [ 4 ]

5 голосов
/ 13 октября 2009

Поиск в архиве списка рассылки ядра по "BKL". Это означает «Большой замок ядра», который использовался для предотвращения проблем. Была проделана большая работа, чтобы разбить его на куски, чтобы позволить повторный вход, пока разные части ядра используются разными процессами. В последних упоминаниях о «BKL» (по крайней мере, я это заметил) в основном говорится о ком-то, кто пытается упростить свою жизнь, блокируя больше, чем кто-либо другой одобрил, и в этот момент они часто говорят что-то о «возвращении во времена». из BKL ", или что-то в этом порядке.

2 голосов
/ 13 октября 2009

Самый простой способ доказать, что несколько процессоров могут выполняться в ядре одновременно, это написать программу, которая выполняет много работы внутри ядра (например, ищет длинные пути в тесном цикле), а затем запустить две копии в то же время на двухъядерном компьютере и показать, что «системный» процент в top превышает 50%.

1 голос
/ 13 октября 2009

С риском быть заядлым: почему бы просто не прочитать код? Если ни один из вас не достаточно опытен, чтобы следовать коду через обработчик прерываний в какую-то подсистему, где вы можете считывать код синхронизации, тогда ... зачем? Разве это не просто танец на спине? Это как креационист, требующий «доказательства» эволюции, когда они не заинтересованы в изучении биологии.

0 голосов
/ 28 октября 2009

Может быть, вам нужно, чтобы ваш друг доказал, что Linux не реентерабельный. Бремя не должно быть на вас, чтобы доказать это.

...