Оценка характеристик и возможностей сетевых ОС локальных сетей
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
/p>
Переносимость достигается двумя способами:имеет многоуровневую структуру. Специфичные для архитектуры процессора или платформы низкоуровневые части системы вынесены в отдельные модули. Благодаря этому высокоуровневая часть системы не зависит от аппаратных платформ. Ключевые компоненты, обеспечивающие переносимость - ядро и уровень абстрагирования от оборудования HAL.
Подавляющее большинство компонентов Windows написано на C, и лишь часть из них на C++. Язык ассемблера применялся только для частей программы, требующих исключительного быстродействия.
Симметричная многопроцессорная обработка
Одна из ключевых целей разработки Windows была поддержка многопроцессорных компьютерных систем. Windows поддерживает симметричную многопроцессорную обработку SMP, в этой модели нет главного процессора, операционная система, как и пользовательские потоки, может выполняться на любом процессоре и все процессоры используют одну и ту же память. При асимметричной многопроцессорной обработке ASMP система выбирает один из процессоров для кода ядра операционной системы, а другие процессоры выполняют только пользовательский код. Windows Server 2003 поддерживает два новых типа многопроцессорных систем: логические процессоры (hyperthreading) и нетипичная архитектура памяти NUMA.в NUMA- системе по-прежнему работает как SMP - система, в которой все процессоры имеют доступ ко всей памяти, просто доступ к памяти, локальной для узла, осуществляется быстрее, чем к памяти в других узлах.
АРХИТЕКТУРА LINUX
Самое большое достоинство Linux - открытый процесс разработки. Поскольку исходный код ядра свободно доступен всем, любой может вносить изменения, которые станут доступными опять-таки всем.
Скотт Максвелл писал5): Если вы отыскали ошибку, лучше исправить ее самостоятельно, нежели просить кого-либо сделать это. Если вы размышляете о повышении производительности либо о добавлении новых возможностей, проще сделать это самостоятельно. Когда обнаруживается дыра в системе безопасности, залатывайте ее самостоятельно и не ждите, пока этим займется поставщик ОС.
Ядро Linux написано на языке С и ассемблере. Был найден обычный компромисс между этими двумя языками: код на С более переносим и прост в поддержке, тогда как код на ассемблере обеспечивает большую скорость выполнения. В общем случае ассемблер в ядре используется только в тех местах, где наиболее критичным показателем является скорость, либо там, где требуется реализация кода, специфичного для конкретной платформы.
В основном ядро Linux - монолитное, однако оно не является чистым монолитным ядром. Монолитный проект ядра достаточно модульный внутри, поэтому внесение изменений и дополнений не вызывает особых трудностей.
Упрощенная архитектура Linux-подобной ОС, со всеми низкоуровневыми деталями, какие только могут понадобиться для платформенно-независимой ОС. Стоит подчеркнуть две характерные особенности ядра:
Ядро отделяет прикладные приложения от аппаратных средств.
Часть ядра учитывает специфику архитектуры и аппаратуры, другая же часть ядра является переносимой.
Архитектуру ядра представлена на рисунке 14 в приложении.
Ядро достигает переносимости, частично за счет применения по отношению к себе тех же самых трюков, что и по отношению к пользовательским приложениям. Это означает, что подобно тому как ядро отделяет пользовательские приложения от аппаратных средств, определенная часть ядра обеспечивает отделение оставшейся части ядра от той же аппаратуры. Благодаря такому разделению, и приложения, и часть ядра, становятся переносимыми.
Независимая от архитектуры часть кода в общем случае определяет интерфейс для низкоуровневой, зависящей от архитектуры части.
Таким образом, перенос ядра на новую платформу сводится к идентификации возможностей, наподобие рассмотренных выше, и реализации их, как того требует новая платформа.
Переносимость пользовательских приложений получает дальнейшую поддержку посредством слоя между приложениями и ядром - стандартной библиотекой С (libc). Приложения никогда не взаимодействуют с ядром напрямую, а только через libc.
Способ взаимодействия с ядром через libc является независимым от архитектуры, причем libc предохраняет пользовательский код от излишней детализации. По причине существования вышеупомянутого механизма, все пользовательские приложения, и даже большая часть библиотеки С, взаимодействуют с ядром способом, не зависящим от архитектуры.
Операционная система, состоящая из ядра Linux, почти полностью изолировании от всех прикладных программ. Ядро функционирует в зацищенном режиме процессора, известном как режим ядра. Пользовательские программы, такие как Web-обозреватели, почтовые клиенты и игры запускаются вне режима ядра в пользовательском режиме. Ядро имеет прямой, неконтролируемый доступ к системным ресурсам, таким как память, процессор, периферия. Запросы пользовательских приложений перехватываются ядром посредством системных вызовов интерфейса syscall. Этот интерфейс проверяет данные, поступающие от пользовательских программ, прежде чем передать их в ядро. Таким образом осуществляется защита от краха ядра от некорректно написанных программ.
В дополнение к различию между режимами, ядро и пользовательские программы занимают различные области памяти. Каждый процесс имеет свое виртуальное адресное пространство четыре гигабайт, где в большинстве случаев ядро занимает один гигабайт памяти, программа получает три гигабайта. Программы поль