Всё для Учёбы — студенческий файлообменник
1 монета
zip

Лекция «Архитектура Windows 2000 и XP» по Операционным системам (Одинец М. С.)

Архитектура Windows 2000/XP.(рис. 1)

Ядро осуществляет

• управление процессами,

• управление памятью,

• диспетчеризацию прерываний и исключений,

• реализует базовые синхронизационные примитивы, необходимые исполнительной системе.

Интерфейс ядра используется только исполнительной системой и программам пользовательского режима недоступен.

Между ядром и аппаратной частью компьютера располагается слой программного обеспечения, называемый слоем абстрагирования от оборудования или уровнем аппаратных абстракций (Hardware Abstraction Layer, HAL).

Он включает программы, которые предназначены для конкретного аппаратного обеспечения, и «изолирует» систему от особенностей последнего.(В частности, эти программы осуществляют взаимодействие с контроллером прерываний или управление взаимодействием между центральными процессорами в мультипроцессорной системе).

Вызов исполнительной системы из пользовательского режима осуществляется посредством интерфейсов ее системных сервисов.

Приложения взаимодействуют с исполнительной системой опосредованно, через защищенные подсистемы среды, которые реализуют интерфейсы прикладного программирования.

Защищенные подсистемы среды могут либо взаимодействовать с клиентскими приложениями

• либо по принципу клиент-сервер,

• либо функционировать как совместно используемые библиотеки, связываемые с клиентскими приложениями во время их компоновки.

На практике часто используется сочетание этих двух механизмов.

Благодаря такой организации Windows 2000 соединяет в себе достоинства микроядерной и расширяемой библиотечной архитектур.

Компоненты исполнительной системы

Исполнительная система Windows 2000 функционирует в режиме ядра и выполняет основные функции операционной системы.

В ее состав входят следующие компоненты.

Менеджер объектов.

Создает и удаляет объекты исполнительной системы. Когда пользовательскому процессу требуется создать объект определенного типа, он вызывает соответствующую подсистему, а та направляет вызов менеджеру объектов. Последний реализует унифицированный механизм управления объектами и хранения соответствующих данных и используется всеми компонентами исполнительной подсистемы.

Дескрипторы объектов исполнительной системы Windows 2000 универсальные: с их помощью можно идентифицировать процессы, потоки и другие объекты.

Справочный монитор зашиты.

Обеспечивает защиту объектов во время работы системы, участвует в операциях с объектами и может обеспечивать аудит их использования.

Менеджер процессов.

Отвечает за управление процессами и потоками. При создании процесса в его состав сразу включается один поток(единицей диспетчеризации является поток). Во время существования процесса в нем могут быть созданы дополнительные потоки. Процесс является единицей владения ресурсами.

Средство локального вызова процедур.

(Local Procedure Call, LPC). Поддерживает взаимодействие между клиентами и серверами, расположенными на одном узле.

Менеджер виртуальной памяти.

Обеспечивает страничную организацию памяти и защиту адресного пространства каждого процесса (совместно используемого всеми его потоками).

Менеджер ввода-вывода.

Поддерживает независимые от устройств функции ввода-вывода, управляет файлами и сетевыми буферами.

Объектная модель Windows 2000/XP и менеджер объектов

Объекты – все системные ресурсы и структуры данных (процессы, потоки, файлы, семафоры и т.д.).

Объекты предоставляют унифицированный интерфейс.

Объекты подразделяются на типы. У каждого объекта есть свойства, общие для всех объектов данного типа.

• Поддержка объектов позволяет реализовать унифицированный подход к именованию ресурсов, защите от несанкционированного доступа и совместному использованию.

В Windows 2000 используется следующая объектная терминология:

• Объект -экземпляр объектного типа

• Атрибуты объекта - элементы данных состояния объекта.

• объектные сервисы операционной системы (наборы операций, связанных с объектами) используются для управления объектами.

Одна часть этих сервисов является внутренней и используется только компонентами исполнительной системы, а другая часть открыта для процессов пользовательского режима и составляет интерфейс исполнительной системы (рис. 7.2).

Термин метод, который в соответствии с традиционной объектной терминологией используется для обозначения интерфейсной операции объекта, в Windows 2000 имеет специфическое значение.

• Менеджер объектов создает и удаляет объекты, а также отслеживает их использование.

Каждый тип объектов поддерживается определенной подсистемой.

В табл. 1 перечислены основные типы объектов исполнительной системы Windows 2000 и указано, к какой из ее подсистем относится каждый из них.

Использование объектов

Использование объектов в операционной системе Windows 2000 осуществляется согласно общим принципам: открытие, работа с объектом, закрытие.

Объекты могут быть:

Постоянными (файлы),

Динамическими (потоки).

Постоянные объекты открываются с помощью операции открыть(), а динамические - с помощью операции создать(), в составе которой выполняется и операция открыть().

Схема именования объектов — иерархическая.

Она поддерживается с помощью объектов-каталогов

Имя объекта применяется для его открытия, совместного использования и защиты.

Процесс, который знает имя требующегося ему объекта, может его открыть в одном из поддерживаемых режимов.

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

Дескрипторами открытых объектов процессов могут пользоваться все его потоки.

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

Защита объектов

Для того чтобы соответствовать требованиям класса защиты С2, система должна поддерживать защищенную процедуру входа, управление доступом, аудит и защиту памяти.

Когда пользователь входит в систему, подсистема защиты производит его аутентификацию, а затем связывает с его процессом объект, называемый маркером доступа.

Этот объект служит официальным «удостоверением личности» процесса, когда тот запрашивает какой-либо системный ресурс.

Он содержит список контроля доступа (Access Control List, ACL) - список прав доступа, присоединяемый к каждому создаваемому пользователем объекту в том случае, если пользователь не задал права доступа к объекту явно, и они не наследуются от другого объекта.

Управление оперативной памятью и виртуальной памятью в Microsoft Windows 2000/XP.

Логическое распределение адресного пространства процесса приведено на рис. 2.

• Все системные программные модули находятся в своих собственных виртуальных адресных пространствах, и доступ к ним со стороны прикладных программ невозможен.

• Ядро системы и некоторые драйверы работают в нулевом кольце защиты в отдельном адресном пространстве.

• остальные программные модули самой операционной системы, которые выступают как серверные процессы по отношению к прикладным программам (клиентам), функционируют также в своем собственном системном виртуальном адресном пространстве, невидимом для прикладных процессов.

• Прикладным программам выделяется 2 Гбайт локального (собственного) линейного (неструктурированного) адресного пространства от границы 64 Кбайт до 2 Гбайт (первые 64 Кбайт полностью недоступны).

Прикладные программы изолированы друг от друга, хотя могут общаться через буфер обмена (clipboard), механизмы DDE и OLE.

• В верхней части каждой 2-гигабайтной области прикладной программы размещены системные DLL кольца 3, которые выполняет перенаправление вызовов в совершенно изолированное адресное пространство, где содержится уже собственно системный код. Этот системный код, выступающий как сервер-процесс (server process), проверяет значения параметров, исполняет запрошенную функцию и пересылает результаты назад в адресное пространство прикладной программы. Хотя сервер-процесс сам по себе остается процессом прикладного уровня. он полностью защищен от вызывающей его прикладной программы и изолирован от нее.

При вызове API из прикладной программы, DLL клиентской стороны обращаются к локальным процедурам(Local Process Communication-LPC), которые передают вызов в совершенно изолированное адресное пространство, где содержится собственно системный код.

Между отметками 2 и 4 Гбайт расположены низкоуровневые системные компоненты Windows NT кольца 0, в том числе ядро, диспетчер потоков и диспетчер виртуальной памяти. Системные страницы в этой области наделены привилегиями супервизора, которые задаются физическими схемами кольцевой защиты процессора.

Это делает низкоуровневый системный код невидимым и недоступным для записи для программ прикладного уровня, но приводит к падению производительности во время переходов между кольцами.

• При запуске приложения создается процесс со своей информационной структурой.

• В рамках процесса, запускается поток.

• При необходимости этот поток (задача) может запустить множество других потоков (задач), которые будут выполняться параллельно в рамках одного процесса. Множество запущенных процессов также выполняются параллельно и каждый из процессов может представлять из себя мультизадачное приложение.

Потоки в рамках одного процесса выполняются в едином виртуальном адресном пространстве, а процессы выполняются в различных виртуальных адресных пространствах.

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

Для обеспечения взаимодействия между выполняющимися приложениями и между приложениями и самой операционной системы используются механизмы защиты памяти, поддерживаемые аппаратурой микропроцессора.

Процессами выделения памяти, ее резервирования, освобождения и подкачки , управляет диспетчер виртуальной памяти (virtual memory manager. VMM).

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

• Каждая виртуальная страница памяти, отображаемая на физическую страницу, переносится в так называемый страничный фрейм (page frame).

• Прежде чем код или данные можно будет переместить с диска в память, диспетчер виртуальной памяти (VMM) должен найти или создать свободный страничный фрейм или фрейм, заполненный нулями.

Заполнение страниц нулями представляет собой одно из требований стандарта на системы безопасности уровня С2 . принятого правительством США. Страничные фреймы должны заполняться нулями для того, чтобы исключить возможность использования их предыдущего содержимого другими процессами. Чтобы фрейм можно было освободить, необходимо скопировать на диск изменения в его странице данных, и только после этого фрейм можно будет повторно использовать. Программы, как правило, не меняют страницы кода. Страницы кода, в которые программы не внесли изменений, можно удалить.

Диспетчер виртуальной памяти может быстро и относительно легко удовлетворить программные прерывания типа «ошибка страницы» (page fault).

Что касается аппаратных прерываний типа «ошибка страницы», то они приводят к подкачке (paging), которая снижает производительность системы.

В Windows 2000 выбрана дисциплина FIFO для замещения страниц, а не более эффективные дисциплины LRU и LFU.

Когда процесс использует код или данные, находящиеся в физической памяти, система резервирует место для этой страницы в файле подкачки Pagefile.sys на диске. Это делается с расчетом на тот случай, что данные потребуется выгрузить на диск. Файл Pagefile.sys представляет собой зарезервированный блок дискового пространства, который используется для выгрузки страниц, помеченных как «грязные», при необходимости освобождения физической памяти.

Этот файл может быть как непрерывным, так и фрагментированным; он может быть расположен на системном диске либо на любом другом и даже на нескольких дисках. Размер этого страничного файла ограничивает объем данных, которые могут храниться во внешней памяти при использовании механизмов виртуальной памяти. По умолчанию размер файла подкачки устанавливается равным объему физической памяти плюс 12 Мбайт, однако пользователь имеет возможность изменить его размер по своему усмотрению. Проблема нехватки виртуальной памяти часто может быть решена за счет увеличения размера файла подкачки.

В системах Windows NT объекты, создаваемые и используемые приложениями и операционной системой, хранятся в так называемых пулах памяти (memory pools). Доступ к этим пулам может быть получен только в привилегированном режиме работы процессора, в котором работают компоненты операционной системы. Поэтому для того, чтобы объекты, хранящиеся в пулах, стали видимы потокам приложений, эти потоки должны переключиться в привилегированный режим.

• Перемещаемый или нерезидентный пул (paged pool) содержит объекты, которые могут быть при необходимости выгружены на диск.

• Неперемещаемый или резидентный пул (nonpaged pool) содержит объекты, которые должны постоянно находиться в памяти. В частности, к такого рода объектам относятся структуры данных, используемые процедурами обработки прерываний, а также структуры, используемые для предотвращения конфликтов в мультипроцессорных системах.

Исходный размер пулов определяется объемом физической памяти, доступной Windows NT. В последствии размер пула устанавливается динамически и в зависимости от работающих в системе приложений и сервисов будет изменяться в широком диапазоне.

Вся виртуальная память в Windows NT подразделяется на классы: зарезервированную (reserved), выделенную (committed) и доступную (available).

Зарезервированная память представляет собой набор непрерывных адресов, которые диспетчер виртуальной памяти (VMM) выделяет для процесса, но не учитывает в общей квоте памяти процесса до тех пор, пока она не будет фактически использована. Когда процессу требуется выполнить запись в память, ему выделяется нужный объем из зарезервированной памяти. Если процессу потребуется больший объем памяти, то дополнительная память может быть одновременно зарезервирована и использована, если в системе имеется доступная память

Память выделена, если диспетчер VMM резервирует для нее место в файле Pagefile.sys на тот случай, когда потребуется выгрузить содержимое памяти на диск. Объем выделенной памяти процесса характеризует фактически потребляемый им объем памяти. Выделенная память ограничивается размером файла подкачки. Предельный объем выделенной памяти в системе (commit limit) определяется тем, какой объем памяти можно выделить процессам без увеличения размеров файла подкачки. Если в системе имеется достаточный объем дискового пространства, то файл подкачки может быть увеличен и тем самым будет расширен предельный объем выделенной памяти.

Вся память, которая не является ни выделенной, ни зарезервированной, является доступной.

К доступной относится

• свободная память,

• обнуленная память (освобожденная и заполненная нулями),

• а также память, находящаяся в списке ожидания (standby list), которая была удалена из рабочего набора процесса, но может быть затребована вновь.

Управление процессами и потоками в Windows 2000/XP

В операционной системе Windows 2000 есть множество концепций для управления центральным процессором и объединения ресурсов.

Основные понятия

Каждый процесс содержит по крайней мере один поток, содержащий, в свою очередь, как минимум одно волокно (облегченный поток).

Для управления определенными ресурсами процессы могут объединяться в задания. Все вместе — задания, процессы, потоки и волокна — образует общий набор инструментов для управления ресурсами и реализации параллельного выполнения, как на однопроцессорных, так и на многопроцессорных машинах.

Краткое описание этих четырех понятий приведено в. табл. 2

Процессы

Процессы представляют собой контейнеры для ресурсов.

У каждого процесса есть 4-гигабайтное адресное пространство, в котором пользователь занимает нижние 2 Гбайт (в версиях Windows 2000 Advanced Server и Datacenter Server этот размер может быть по желанию увеличен до 3 Гбайт), а операционная система занимает остальную его часть.

Таким образом, операционная система присутствует в адресном пространстве каждого процесса, хотя она и защищена от изменений с помощью аппаратного блока управления памятью MMU.

У процесса есть

идентификатор процесса,

один или несколько потоков,

список дескрипторов объектов(управляемых в режиме ядра)

маркер доступа, хранящий информацию защиты.

Процессы создаются с помощью вызова Win32, который принимает на входе имя исполняемого файла, определяющего начальное содержимое адресного пространства, и создает первый поток.

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

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

Соответственно, у каждого потока есть состояние (готовый, работающий, блокированный и т. д.), тогда как у процессов состояний нет. Потоки могут динамически создаваться вызовом Win32, которому в адресном пространстве процесса задается адрес начала исполнения. У каждого потока есть идентификатор потока, выбираемый из того же пространства, что и идентификаторы процессов, поэтому один и тот же идентификатор никогда не будет использован одновременно для процесса и для потока.

Идентификаторы процессов и потоков кратны четырем, поэтому они могут использоваться в роли байтовых индексов в таблицах ядра, как и другие объекты.

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

У каждого потока есть два стека, один используется в режиме ядра, а другой в режиме пользователя.

Помимо состояния, идентификатора и двух стеков, у каждого потока есть

• контекст (в котором сохраняются его регистры, когда он не работает),

• приватная область для локальных переменных,

• а также может быть свой собственный маркер доступа.

Если у потока есть свой маркер доступа, то он перекрывает маркер доступа процесса, чтобы клиентские потоки могли передать свои права доступа серверным потокам, выполняющим работу для них.

Когда поток завершает свою работу, он может прекратить свое существование.

Когда прекращает существование последний активный поток, процесс завершается.

Потоки представляют собой концепцию диспетчеризации, а не концепцию владения ресурсами.

Любой поток может получить доступ ко всем объектам его процесса. Все, что ему для этого нужно сделать - это заполучить дескриптор и обратиться к соответствующему вызову Win32. Система не следит за тем, какой объект каким потоком создан. Как только дескриптор объекта помещен в таблицу дескрипторов процесса, любой поток процесса может его использовать.

Помимо нормальных потоков, работающих в процессах пользователя, в операционной системе Windows 2000 есть множество процессов-демонов, не связанных ни с каким пользовательским процессом (они ассоциированы со специальной системой или простаивающими процессами).

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

Волокна

Переключение потоков в операционной системе Windows 2000 занимает довольно много времени, так как для этого необходимо переключение в режим ядра, а затем возврат в режим пользователя.

Для предоставления сильно облегченного псевдопараллелизма в Windows 2000 используются волокна.

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

У каждого потока может быть несколько волокон, так же как у процесса может быть несколько потоков, с той разницей, что когда волокно логически блокируется, оно помещается в очередь блокированных волокон после чего для работы выбирается другое волокно в контексте того же потока.

Операционная система не знает о смене волокон, так как все тот же поток продолжает работу.

Так как операционная система ничего не знает о волокнах , то с ними, в отличие от заданий, процессов и потоков, не связаны объекты исполняющей системы.

Для управления волокнами нет и настоящих системных вызовов. Однако для этого есть вызовы Win32 API. Они относятся к тем вызовам Win32 API, которые не обращаются к системным вызовам.

Состояния потока в Windows 2000/XP (рис. 3)

Поток, созданный в операционной системе Windows 2000/XP, может находиться в одном из шести состояний .

• Готовый к выполнению. Поток, который может быть направлен на выполнение. Диспетчер микроядра отслеживает все готовые к выполнению потоки и осуществляет их планирование в соответствии с приоритетом.

• Резервный. Поток, который будет запущен следующим на данном процессоре. Поток находится в этом состоянии до тех пор, пока процессор не освободится. Если приоритет резервного потока достаточно высок, то он может вытеснить выполняющийся в данный момент поток. В противном случае резервный поток ждет, пока не произойдет блокировка выполняющегося потока или пока не истечет выделенный ему промежуток времени.

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

• Ожидающий. Поток входит в состояние ожидания, если (1) он блокирован каким-то событием (например, операцией ввода-вывода), (2) он добровольно ждет синхронизации или (3) среда подсистемы предписывает потоку, чтобы он сам себя приостановил. После того как условия ожидания будут удовлетворены, поток переходит в состояние готовности, если все его ресурсы будут доступны.

• Переходный. Поток переходит в это состояние, если он готов к выполнению, но ресурсы недоступны (например, страницы стека потока могут находиться на диске). После того как необходимые ресурсы станут доступны , процесс переходит в состояние готовности.

• Завершающийся. Завершение потока может быть инициировано самим потоком, другим потоком или может произойти вместе с завершением родительского процесса. После завершения необходимых операций освобождения ресурсов и т.п. поток удаляется из системы (или может быть сохранены исполнительной системой для дальнейшей повторной инициализации).

Показать полностью…
Похожие документы в приложении