Миргородская 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
