Миргородская 7сессия / Операционные системы / %D0%9E%D0%A1_%D0%A1%D0%93%D0%A2%D0%A3%20v5
.pdfжду процессами. Важнейшими из них являются: разделяемая память, каналы,
поименованные каналы, сокет.
Система виртуальной памяти в 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