Оценка характеристик и возможностей сетевых ОС локальных сетей

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование

/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. Этот интерфейс проверяет данные, поступающие от пользовательских программ, прежде чем передать их в ядро. Таким образом осуществляется защита от краха ядра от некорректно написанных программ.

В дополнение к различию между режимами, ядро и пользовательские программы занимают различные области памяти. Каждый процесс имеет свое виртуальное адресное пространство четыре гигабайт, где в большинстве случаев ядро занимает один гигабайт памяти, программа получает три гигабайта. Программы поль