Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - Mach - Проблемы с производительностью13 мая 2011Оглавление: 1. Mach 2. Концепция 3. Разработка 4. Проблемы с производительностью 5. Возможные решения 6. Следующее поколение 7. Операционные системы и ядра, основанные на Mach Mach изначально позиционировался как замена классическому Unix, и по этой причине содержит множество Unіховых идей. К примеру, Mach использует систему прав и безопасности, основанную на Unix’овой файловой системе. Так как ядро исполняется в привилегированом режиме и возможно, что некоторая программа пошлет команду, которая повредит систему, ядру приходится проверять каждое сообщение. Также большинство функционала было расположено в программах, исполняющихся в непривилегированном режиме, это значит, что необходим некоторый способ разрешения таким программам дополнительных действий, например работа с аппаратным обеспечением. Некоторые возможности Mach базировались на тех же механизмах IPC. К примеру, Mach с легкостью может поддерживать многопроцессорные компьютеры. В традиционном ядре экстенсивная работа проделывается, чтобы обеспечить реентерабельность или прерываемость программ, запущенных на разных процессорах и способных вызывать функции ядра в одно и то же время. В Mach кусочки операционной системы изолированы в серверах, которые могут запускаться, так же, как и другие программы на любом процессоре. Потому теоретически ядро Mach также должно быть реентерабельным, но на практике это не проблема, так как все, что нужно Mach это направить запрос какой-нибудь непривилегированной программе. Mach также включал сервер, который может перенаправлять сообщения не только между программами, но и по сети. Работа в этой области была проделана в конце 1980-х и начале 1990-х. Использование IPC для большинства задач снижает производительность. Сравнения, проведенные в 1997 году, показали, что Unix, построенный на Mach 3.0, на 50 % медленнее, чем традиционный Unix.
Фактически, исследование природы проблем производительности выявило несколько интересных фактов: один IPC сам по себе не является проблемой, проблема в необходимости отображения памяти для его поддержки, что добавляет небольшие временные затраты. Большинство времени тратится на дополнительные задачи в ядре на обработку сообщения. В первую очередь проверку прав порта и целостность сообщения. В тестах на Intel 80486DX-50 стандартный Unix вызов занимает около 21 микросекунды, соответствующий вызов в Mach занимает 114 микросекунд. Из них 18 микросекунд относятся к аппаратному обеспечению, остальное относится к различным функциям ядра Mach. Когда Mach впервые был использован в серьезных разработках, производительность была ниже, чем в традиционных ядрах примерно на 25 %. Эта цена не вызывала беспокойство, потому что система хорошо портировалась и работала на множестве процессоров. Фактически, система скрыла серьезные проблемы с производительностью до выхода Mach 3, когда множество разработчиков попыталось создать системы, запускаемые в непривилегированном режиме. Когда Mach 3 попытался переместить ОС в непривилегированный режим, потеря производительности стала заметной. Рассмотрим простой пример: задача узнаёт текущее время. Посылается сообщение ядру Mach, это вызывает переключение контекста, отображение памяти, затем ядро проверяет сообщение и права, если все хорошо, то вызывается переключение контекста на сервер, затем сервер выполняет действия и посылает сообщение назад, ядро выделяет ещё памяти, и переключает контекст дважды. Но тут ещё есть проблема. Она заключается в системе подкачки виртуальной памяти. Традиционные монолитные ядра знают, где ядро и его модули, а где память, которую можно выгружать. В то время как Mach не имеет ни малейшего представления о том, из чего состоит система. Вместо этого он использует единое решение, добавляющее проблем с производительностью. Mach 3 дает простой менеджер памяти, который обращается к другим менеджерам, выполняющимся в непривилегированном режиме, что заставляет систему делать дорогие IPC вызовы. Многие из этих проблем существуют в любой системе, которой необходимо работать на многопроцессорной машине, и в середине 1980-х казалось, что будущий рынок будет наполнен ими. Фактически эволюция не работает как ожидается. Мультипроцессорные машины использовались в серверных приложениях в начале 1990-х, но затем исчезли. Тем временем производительность CPU возрастала на 60 % в год, умножая неэффективность кода. Плохо, что скорость доступа к памяти растет только на 7 % в год, это значит, что цена обращения к памяти не уменьшилась, и вызовы IPC Mach’а, которые не сохраняются в кэше, работают очень медленно. Несмотря на возможности Mach, такие потери производительности в реальном мире не приемлемы, поэтому большая часть сообщества разработчиков ОС посчитала, что использование IPC в качестве основы ОС изначально провально. Просмотров: 5975
|