Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

SPO_VM_konspekt

.pdf
Скачиваний:
15
Добавлен:
01.03.2016
Размер:
7.34 Mб
Скачать

Министерство образования Республики Беларусь Учреждение образования «Брестский государственный технический университет»

Кафедра «ЭВМ и системы»

Конспект лекций

«Системное программное обеспечение вычислительных машин»

студента ФЭИС группы Э-41-III Шитикова Алексея

Преподаватель: Синица Дмитрий Юрьевич

Брест 2011-2012 уч. г.

Лекция №1 (11.02.2012): Основы организации операционной системы Microsoft Windows

1.1. Создание Windows

ОС Windows можно условно разделить на три класса: 1) MS-DOS + Win 3.11; 2) потребительские версии Windows 95/98/ME; 3) линейка Windows NT.

I этап. MS DOS – это 16-разрядная ОС, выпущенная в начале 80-х, для компьютеров с процессорами семейства х86. Первые версии Windows были всего лишь графическими оболочками для операционной системы MS DOS. Windows до версии 3.11 включительно была многозадачной с не вытесняющей многозадачностью.

II этап. В 1995 г. выпущена новая 32-разрядная ОС Windows 95, в которой была реализована вытесняющая многозадачность. Windows 95 включала в себя большой объем 16-разрядного кода, для совместимости с приложениями MS DOS. Windows 98 имел более продвинутый графический интерфейс и упрощал работу с большинством подключаемых устройств. Windows ME – выкидыш корпорации Microsoft, в котором была попытка объединить пользовательские версии и версии NT.

III этап. Windows NT – полностью 32-разрядная ОС, совместимая с предыдущими версиями Windows по интерфейсу. Первая версия выпущена в 1993 г., но почему-то названа Windows NT 3.1. Наибольшее распространение получила версия Windows NT 5.0 (Windows 2000). Windows XP также относится к данной линейке.

Возможности операционной системы Windows NT:

1)является полностью 32-разрядной;

2)поддерживает вытесняющую многозадачность;

3)работает на разных архитектурах, относительно легко переносится между платформами;

4)поддерживает работу с виртуальной памятью;

5)в сети может выступать как в роли клиента, так и в роли сервера;

6)совместима со всеми версиями Windows и MS DOS;

7)поддерживает многопоточность.

1.2.Структура Windows

Рисунок 1.1 - Структура Windows

2

Уровень абстрагирования от аппаратуры (HAL) – скрывает аппаратные особенности разных архитектур для потенциального переноса ОС с одной платформы на другую. Представляет устройства для всех вышестоящих уровней в абстрактном виде.

Ядро – это все компоненты ОС, находящиеся в невыгружаемой памяти и работающие в привилегированном режиме работы процессора (в режиме ядра). Ядро ОС Windows содержит низкоуровневые функции, такие как диспетчеризация прерываний, исключений, а также планирование потоков.

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

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

Подсистема поддержки окон и графики – реализует функции графического пользовательского интерфейса.

Реализация компонентов Windows:

ntoskrnl.exe – в нем реализованы исполнительная система и ядро; hal.dll – уровень абстрагирования от аппаратуры;

ntdll.dll – связь между интерфейсами системных вызовов и исполнительной системой;

win32k.sys – часть подсистемы win32, работающая в режиме ядра.

Подсистема Win32. Пользовательские приложения бывают пяти типов: Win32, MS DOS, POSIX, а также Win 3.1 и OS/2. Для выполнения пользовательских процессов Windows предоставляет три среды (три подсистемы окружения): Win32, POSIX и OS/2.

Пользовательские приложения не могут напрямую обращаться к системным вызовам, а вынуждены обращаться к DLL-подсистемам. В случае подсистемы Win32, подсистема DLL содержит следующие библиотеки: kernel32.dll, user32.dll и gdi32.dll. Библиотечные вызовы обращаются к исполнительной системе через интерфейс системных вызовов Win32 API. Win32 API – это основной интерфейс программирования в семействе операционных систем Windows.

Win API – это интерфейс, позволяющий выполнить каждое действие несколькими способами и покрывающий все области, с которыми работает ОС.

1.3. Базовые механизмы Windows

К ним относятся прерывания, ловушки, системные вызовы, исключения. Прерывание – это событие, генерируемое внешним, по отношению к

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

Обработка аппаратного прерывания:

1)приостановка программы и сохранение контекста (счетчик команд и регистр флагов являются минимальным сохраняемым набором);

2)обработка прерывания согласно вектору прерывания;

3)восстановление контекста программы и возврат управления.

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

3

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

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

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

По умолчанию сохраняются следующие данные: 1) программный счетчик; 2) регистр состояния процессора; 3) регистры и флаги; 4) указатели на стек ядра и пользовательский стек прерываемого потока; 5) указатели на адресное пространство потока (каталог таблиц страниц соответствующего процесса).

Структура контекста описана в файле winnt.h и называется CONTEXT. Посмотреть контекст можно с помощью функции GetThreadContext.

4

Лекция №2 (18.02.2012): Объекты. Менеджер объектов

Объекты – это абстрактная концепция, которая используется в Windows для регулирования доступа к системным ресурсам. Достоинствами объектов являются:

1)единый и единообразный интерфейс ко всем системным ресурсам и структурам данных (например, процессы, потоки, семафоры и т.д.);

2)единая схема именования объектов и доступа к нему;

3)использование объектов позволяет изменять функционал системы, не затрагивая программного интерфейса приложений;

4)простота обеспечения безопасности – каждый объект имеет список прав доступа, который проверяется при создании описателя объекта;

5)простота организации совместного доступа;

6)отслеживание неиспользуемых ресурсов.

Создание объекта производится функцией CreateObject(). Данная функция исполняется в режиме ядра. В ядре создается объект, а приложению возвращается описатель объекта.

Рисунок 2.1 - Создание объекта

2.1. Структура объекта

Рисунок 2.2 - Структура объекта

5

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

Множество объектов делится на типы. У каждого типа есть атрибуты, неизменные для всех его объектов. Данные атрибуты находятся по ссылке «Тип объекта» из заголовка. Также в состав объекта входят методы, позволяющие открывать, закрывать, удалять объекты и т.п.

2.2. Описатели объектов

Создание новых объектов или открытие уже существующих осуществляется с помощью Win32-функций Create[Obj…]() и Open[Obj…](). Это библиотечные функции, которые запускают сервисы Windows или методы объектов. В случае успешного выполнения функции, создается 64-битный описатель – таблица описателей процессов. На данную таблицу есть ссылка из блока управления процессом. Сама таблица располагается в адресном пространстве процесса в пространстве ядра. Таким образом, описатель объекта принадлежит процессу, создавшему или открывшему объект.

Из 64-х разрядов описателя, 29 используются в качестве адреса места расположения объекта, 3 разряда – для флагов и 32 – для маски прав доступа. Win32функции возвращают приложению не описатель, а индекс в таблице описателей (т.е. не 64-разрядное число, а значительно меньше). Именно индекс в таблице передается функциям в качестве аргумента.

Рисунок 2.3 - Представление объекта в системе (объекты в естественной среде обитания)

2.3. Именование объектов

Большинство объектов системы имеют имена, что удобно для их учета и поиска. Имя объекта может быть использовано для получения доступа к нему, в том числе и совместное использование. Пространство имен объектов организовано в виде древовидной иерархической структуры (*). В качестве вершины используется объект – «каталог имен».

6

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

2.4. Совместное использование объектов

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

Рисунок 2.4 - Совместное использование объектов

2.5. Реестр

Операционная система управляет большим объемом информации, необходимой для ее загрузки и конфигурирования. В ранних версиях Windows эта информация хранилась в файлах .ini и .cfg. Начиная с Windows 95, вся информация содержится в централизованной общесистемной базе, называемой реестром. Данные реестра хранятся в виде иерархической древовидной структуры, каждый узел называется разделом. Разделы верхнего уровня начинаются с префикса HKEY_. Вся информация хранится в ключах.

Существует шесть корневых разделов: HKEY_CLASSES_ROOT (описание установленных приложений и поддерживаемых файлов), HKEY_CURRENT_USER (конфигурация текущего пользователя), HKEY_LOCAL_MACHINE (конфигурация системы), HKEY_USERS (конфигурация пользователя по умолчанию), HKEY_CURRENT_CONFIG (временная конфигурация), HKEY_PERFORMANCE_DATA (скрытый раздел, информация о состоянии системы).

Пространство имен реестра интегрировано с общим пространством имен ядра. Оно является третьим пространством имен, наряду с пространствами имен объектов и имен файлов (*).

Реестр хранится на диске в виде набора файлов, называемых ульями (hives), в каталоге \%windir%\system32\config\. Для доступа к данным реестра поддерживается объект «раздел реестра».

7

Рисунок 2.5 - Пространства объектов, файлов и реестра

8

Лекция №3 (25.02.2012): Реализация процессов и потоков

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

Для описания такого объекта операционная система поддерживает набор структур, главной из которых является блок управления процессом (PCB, Process Control Block). В состав PCB включают:

состояние процесса;

программный счетчик;

содержимое регистров;

данные для планирования (приоритет, размер адресного пространства, величина кванта времени и т.п.);

учетные данные (идентификатор процесса – PID, имя пользователя, время нахождения в системе, время использования процессора);

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

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

Рисунок 3.1 - Структура PCB

Процесс создается с помощью функций CreateProcess, CreateProcessAsUser и CreateProcessWithLogon.

9

3.1.Реализация потоков

3.1.1.Состояние потоков

Рисунок 3.2 - Состояния потока

Ready – поток получил все ресурсы, ожидает процессорное время.

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

Простаивает (Standby) – в этом состоянии может находиться только один выбранный для выполнения поток на каждом процессоре. При освобождении процессора он будет запущен первым.

Block – ожидание события либо завершение операции ввода/вывода. При наступлении события поток переходит в состояние готовности, однако, если его стек ядра выгружен из памяти, поток попадает в переходное состояние.

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

3.1.2. Блок управления потоком

Рисунок 3.3 - Блок управления потоком

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]