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

Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5

.pdf
Скачиваний:
86
Добавлен:
12.02.2015
Размер:
4.09 Mб
Скачать

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

поименованные каналы, сокет.

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

также для совместного использования памяти.

Такие объекты называются проекциями файлов (на оперативную па-

мять) (file-mapping object). Для создания проекции файла сначала вызывается функция CreateFileMapping(). Ей передается дескриптор (уже открытого)

файла или указывается, что нужно использовать page file операционной сис-

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

Она отображает представление файла (view of a file) в адресное пространство процесса. По окончании работы вызывается функция UnmapViewOfFile().

Она освобождает память и записывает данные в файл (если это не файл под-

качки). Чтобы записать данные на диск немедленно, используется функция

FlushViewOfFile(). Проекция файла, как и другие объекты ядра, может ис-

пользоваться другими процессами через наследование, дублирование деск-

риптора или по имени.

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

ный канал или соединение, "трубу", соединяющую процессы. Программа,

имея один конец такого соединения, может читать и/или писать в него дан-

ные, обмениваясь таким образом информацией с программой на другом кон-

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

61

сами. Операции чтения/записи в канал похожи на подобные операции при работе с файлами. Поименованные каналы используются для двустороннего обмена данными между процессом-сервером и одним или несколькими про-

цессами-клиентами. Как и анонимные каналы, они используют файлоподоб-

ный интерфейс, но, в отличие от первых, пригодны также для обмена данны-

ми по сети.

Сокет - это абстрактный объект для обозначения одного из концов се-

тевого соединения, в том числе и через Internet. Сокеты Windows бывают двух типов: сокеты дейтаграмм и сокеты потоков. Интерфейс Windows Sockets (WinSock) основан на BSD-версии сокетов, но в нем имеются также

расширения, специфические для Windows.

Для синхронизации в Win API используются (табл.5): уведомление об

изменении файла, мьютекс, семафор, события, таймер ожидания.

Механизмы для синхронизации параллельных вычислений Таблица 5

Тип объекта

Определение

Условие

перехода

в сиг-

Ожидающие по-

нальное состояние

 

токи

 

 

 

 

Процесс

Программа, включающая ад-

Завершение последнего по-

Освобождаются

 

ресное пространство и ресур-

тока

 

 

все потоки

 

сы, требуемые для её выпол-

 

 

 

 

 

нения

 

 

 

 

 

Поток

Выполняемая единица внутри

Завершение работы потока

Освобождаются

 

процесса

 

 

 

 

все потоки

Файлы

Открытый файл или устрой-

Завершение операций вво-

Освобождаются

 

ство ввода/ вывода

да/вывода

 

все потоки

Консольный

Буфер текстового окна ис-

Имеется введённая инфор-

Освобождается

ввод

пользуется для операций I/O в

мация доступная процессу

один поток

 

MS-DOS

 

 

 

 

 

 

 

Объекты специально для синхронизации

 

 

Уведомление

Уведомление о любых изме-

Изменение в ФС соответст-

Освобождается

об изменении

нениях ФС

вующее заданным объектом

один поток

файла

 

 

фильтру

 

 

 

Мьютекс

Механизм обеспечения взаи-

Поток

освобождает

мью-

Освобождается

 

моисключений в Win 32

текс

 

 

один поток

Семафор

Счётчик, регулирующий ко-

Счётчик семафора обнуля-

Освобождается

 

личество

потоков, которые

ется

 

 

один поток

 

могут использовать ресурс

 

 

 

 

События

Извещение о наступлении не-

Поток осуществляет

собы-

Освобождаются

 

которого события в системе

тие

 

 

все потоки

Таймер ожи-

Счётчик,

учитывающий про-

Наступил указанный момент

Освобождаются

дания

шедшее время

времени

или истёк

указан-

все потоки

 

 

 

ный интервал времени.

 

62

Семафоры – это переменные, имеющие целое значение и над которыми

определены три операции:

инициализация неотрицательным числом;

операция уменьшения значений семафора: если значение отрица-

тельное, то процесс, выполняющий эту операцию блокируется;

операция увеличения значений семафора: если значение было отри-

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

Каждый объект синхронизации ОС может находиться в сигнальном и несигнальном состоянии, когда объект входит в сигнальное состояние ис-

полняющая система ОС освобождает все потоки, находящиеся в состоянии ожидания этого объекта.

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

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

2.5. Управление потоками в Windows

Система управления виртуальной памятью контролирует распределе-

ние памяти и работу страничной организации. Диспетчер памяти может ис-

пользовать страницы размером от 4 до 64 кб. Каждый пользовательский про-

цесс получает отдельное 32-битное адресное пространство, предоставляющее процессу 4 Гб памяти (диапазон адресов 232). Часть памяти зарезервирована под ОС так, что каждому пользователю доступны только 2 Гб виртуального адресного пространства.

В страничной организации каждая страница может находится, в сле-

дующих состояниях:

1. доступна, т.е. страница используется процессом;

63

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

зования; 3. размещена – страница, для которой диспетчер выделяет память в

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

Диспетчер памяти управляет резидентным множеством страниц каждо-

го процесса, загруженного в основную память. При первой активации про-

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

сутствующей в основной памяти, одна из страниц этого процесса выгружает-

ся в файл подкачки страниц, а на ее место загружается в зависимости от при-

оритета, другая информация (страница).

При выполнении процесса (потока) ОС должна принимать 3 типа ре-

шений, связанных с планированием: долгосрочное, среднее и краткосрочное

(рис.24). Долгосрочное определяет, когда новый процесс должен поступить в систему. Среднесрочное является частью свопинга и определяет, какой из го-

товых к выполнению процессов будет выполняться процессором следующим.

При краткосрочном планировании планировщик использует ряд крите-

риев. Основные: время отклика системы (для пользователя) и степень исполь-

зования процессора (для системы) [3]. Они противоречивы. Имеется ряд аль-

тернативных критериев для выбора среди готовых к выполнению процессов. 1. Первым поступил – первым обслужен. Выбирается процесс, ожи-

дающий обслуживания дольше других.

2.Круговое планирование. Использует кванты времени для ограничения времени непрерывного выполнения процесса (они выполняются циклически).

3.Выбор самого короткого процесса. Выбирается процесс с минималь-

ным времени работы. Вытеснение процессов не применяется.

4. Наименьшее остающееся время. Выбирается процесс с минимальным ожидаемым временем оставшейся работы. Процесс может быть вытеснен.

64

Выполняющийся

Готовый

Заблокированный

Краткосрочное планирование

Заблокированный,

приостановленный

Готовый,

приостановленный

Среднесрочное планирование

Новый

 

Выход

 

 

 

Долгосрочное планирование

Рис.24. Уровни планирования загрузки процессора

5.Наивысшее отношению отклика. Принимаемое решение опирается на оценку нормализованного времени оборота процесса по состояниям.

6.Снижение приоритета. Определяет множество очередей и распределя-

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

Выбор алгоритмов или их комбинации зависит от ожидаемой произво-

дительности и сложности реализации.

В Windows NT реализован планировщик с вытеснением и гибкой сис-

темой уровней приоритетов, включая круговое планирование на каждом уровне, а для уровней «переменных приоритетов» – динамическое изменение приоритета на основе текущей активности потоков. В Windows NT две груп-

пы (класса) приоритетов: реального времени и переменные, по 16 уровней в каждом (рис. 25). При появлении потока с большим приоритетом, чем у вы-

полняющегося потока, выполняющийся поток вытесняется и начинает вы-

полняться поток с большим приоритетом.

65

Наивысший (31)

Класс приоритетов реального времени

Наинизший (16)

Наивысший (15)

Класс переменных приоритетов

Наинизший (0)

Рис. 25 Приоритеты потоков в Windows

В классе РВ все потоки имеют ориентированные приоритеты от 16 до

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

Приоритеты потоков в период исполнения остаются постоянными [3].

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

шую или меньшую сторону в зависимости от деятельности потоков. Таким образом, на каждом уровне приоритета имеется своя очередь, но потоки мо-

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

Начальный приоритет потока в классе переменных приоритетов опре-

деляется двумя величинами: базовым приоритетом процесса и базовым при-

оритетом потока (рис.26).

Одним из атрибутов процесса является его базовый приоритет, кото-

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

вает базовый приоритет потока по отношению к приоритету процесса. Он может отличаться от базового приоритета процесса не более чем на 2 уровня

66

в большую или меньшую сторону. Так, например, если базовый приоритет процесса равен 4, а базовый приоритет одного из его потоков равен -1, то на-

чальный приоритет (при создании потока) этого потока равен 3.

15

 

 

 

 

 

14

 

 

 

 

 

13

 

 

 

 

 

12

 

 

 

 

 

11

 

 

 

 

 

10

 

 

 

 

 

9

 

 

 

 

 

8

 

 

 

 

 

7

 

 

 

 

 

6

 

 

 

Наивысший

 

5

 

 

 

Повышенный

 

4

 

 

Базовый приоритет

Обычный

 

3

 

 

 

Пониженный

Начальный

2

 

 

 

Наинизший

 

1

 

 

 

 

 

0

 

 

Приоритет

Базовый

 

 

 

 

Динамический

 

 

 

процесса

приоритет потока

приоритет

Диапазон динамических приоритетов потока

Рис. 26 Пример отношения приоритетов в Windows NT

После активизации потока из класса переменных приоритетов его дей-

ствительный приоритет (именуемый динамическим приоритетом потока)

может колебаться в определенных пределах. Он не может упасть ниже наи-

меньшего базового приоритета потока и не может подняться выше макси-

мально возможного значения приоритета для данного класса, т.е. 15. В при-

веденном выше примере (рис.26) это диапазон приоритетов от 2 до 15.

2.6. Файловые системы Windows

Для большинства приложений центральным элементом является файл.

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

67

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

Файловая система состоит из системы управления файлами и совокуп-

ности файлов на определенном виде носителя (CD, DVD, FDD, HDD, Flash и

т.д.). Система управления файлами обеспечивает пользователям и приложе-

ниям возможность доступа к файлам, их сохранения и поддержку целостно-

сти их содержимого. Наиболее распространенным долговременным носите-

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

ку с аэродинамической конструкцией считывающих магнитных головок.

Файловые системы современных операционных систем устанавлива-

ются в разделы жесткого диска.

Раздел (англ. partition) — часть долговременной памяти жёсткого диска,

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

память которых можно разбить на два раздела, причём один раздел можно за-

щитить паролем, при этом система «увидит» составное устройство из двух флеш-карт (на самом деле любую флеш карту можно разбить на два и более разделов, однако драйвер в Windows отображает только первый из них; работа с ними возможна при подмене драйвера или при работе с другими ОС).

Выделение на одном жёстком диске нескольких разделов даёт следую-

щие преимущества [1]:

на одном физическом жёстком диске можно хранить информацию в разных файловых системах, или в одинаковых файловых системах, но с раз-

ным размером кластера (например, выгодно хранить файлы большого разме-

ра — например, видео — отдельно от маленьких, и задавать больший размер кластера для хранилища больших файлов);

можно отделить информацию пользователя от файлов ОС;

на одном жёстком диске можно установить несколько ОС;

68

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

Информация о размещении разделов на жёстком диске хранится в таб-

лице разделов (англ. partition table), которая является частью главной загру-

зочной записи (MBR). MBR располагается в первом физическом секторе жё-

сткого диска.

Раздел может быть либо первичным (основным), либо дополнитель-

ным. В первом секторе каждого основного раздела находится загрузочный сектор (Boot Record), отвечающий за загрузку ОС с этого раздела. Информа-

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

рационной системы, тоже записана в главной загрузочной записи.

В MBR под таблицу разделов выделено 64 байта. Каждая запись зани-

мает 16 байт. Всего на жестком диске может быть создано не более 4 разде-

лов. Когда разрабатывалась структура MBR, это считалось достаточным. Од-

нако, позднее был введён дополнительный раздел, структура которого (EBR)

может поддерживать неограниченное число логических дисков (разделов).

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

мальной конфигурации MBR на жёстком диске может быть сформировано три основных раздела и один дополнительный. При этом, некоторые ОС спо-

собны загружаться только с основного раздела. Обойти эти ограничения по-

зволяет дополнительное программное обеспечение (менеджеры разделов).

Первичный раздел (англ. primary partition) обязательно должен быть на физическом диске. Этот раздел всегда содержит только одну файловую сис-

тему (рис.27). На физическом диске может быть до четырёх первичных раз-

делов. Некоторые старые операционные системы - например, MS-DOS и ран-

ние версии Windows - могли быть установлены только на первичный раздел.

Основная таблица разделов может содержать не более 4 первичных разделов, поэтому был изобретён Расширенный (дополнительный) раздел

69

(англ. extended partition). Это первичный раздел, который не содержит собст-

венной файловой системы, а содержит другие логические разделы.

 

Первичный раздел 1

(Логический раздел 1): ФС

Физический

 

 

 

Расширенный раздел

Логический раздел 4:

ФС

диск (HDD)

(Первичный раздел 2,Логический раздел 2):

 

 

Логический раздел 5:

ФС

 

 

 

 

Первичный раздел 3

(Логический раздел 3): ФС

 

 

 

 

Рис. 27. Пример разбиения жёсткого диска на разделы

Для работы с разделами используются следующие программы, которые обычно называют «дисковыми утилитами»:

Acronis Disk Director;

Paragon Partition Manager;

fdisk - утилита, входящая в комплект ОС MS-DOS, позволяет созда-

вать разделы FAT, удалять любые разделы и выбирать активный;

fdisk, cfdisk и sfdisk — стандартные текстовые утилиты для работы с разделами диска под GNU/Linux;

Disk Druid — утилита для работы с разделами диска под GNU/Linux с

графическим пользовательским интерфейсом;

GParted — GNOME Partition Editor (free, GUI);

оснастка «Управление дисками», являющаяся частью консоли

Windows NT/2000/XP (Windows Management Console), позволяет просматри-

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

Файловые системы FAT. Существуют три файловые системы FAT: FAT12 (для гибких дисков FDD), FAT16, FAT32. Они различаются количест-

вом бит (12, 16, 32) для указания номера кластера в системе управления фай-

лами . В файловых системах FAT логическое дисковое пространство любого логического диска делится на системную область и область данных (рис. 28).

70