- •1. Определение ос. Функции ос. Процессы и потоки. Классификация ос. История развития.
- •1.1 Определение ос.
- •Уровни вс.
- •Микроархитектура.
- •Машинный язык.
- •Системное и прикладное по.
- •1.2 Основная функция ос.
- •Варианты мультипрограммирования.
- •Состояния процессов и потоков.
- •1.4 Классификация ос.
- •1.4.1 Признаки классификации.
- •Особенности алгоритмов управления ресурсами. Поддержка многозадачности.
- •Многозадачность.
- •Вытесняющая и не вытесняющая многозадачность.
- •Классификация дисциплин обслуживания.
- •Дисциплины обслуживания.
- •Приоритетное обслуживание.
- •Динамический приоритет.
- •Поддержка многопользовательского режима.
- •Многопроцессорная обработка.
- •Системы пакетной обработки.
- •Системы разделения времени.
- •Системы реального времени.
- •Модульное ядро.
- •Микроядро.
- •Достоинства и недостатки микроядра.
- •Ооп: достоинства и недостатки.
- •1.5 Эволюция операционных систем. Появление ос.
- •Первый “баг”.
- •Этапы эволюции.
- •1 Этап (1940-60).
- •2 Этап (1965-75).
- •3 Этап (1970-80).
- •4 Этап (1980-90).
- •5 Этап (1990 – …).
- •2. Операционная система ms Windows 2000 и выше. Общая характеристика и основные функции. Структура ms Windows 2000-2003. Объекты в ms Windows 2000-2003.
- •2.2 Основная характеристика Windows 2000-2008.
- •2.3 Архитектура ос Windows 2000-2003. Краткая характеристика.
- •Структура ядра.
- •2.4 Объекты Windows 2000-2008.
- •Назначение объектов.
- •Типы объектов Windows 2000-2008.
- •Структура объектов Windows 2000-2003.
- •Удержание объектов.
- •Учет использования ресурсов.
- •Защита объектов.
- •Избирательный доступ.
- •3. Основы файловых систем. Файлы и их атрибуты. Каталоги. Логическая организация фс. Логическая, физическая организация файлов. Кэширование. Raid - системы.
- •4. Основы файловых систем. Файлы и их атрибуты. Каталоги. Логическая организация фс. Логическая, физическая организация файлов. Способы учёта свободного дискового пространства.
- •3.1 Основы файловых систем.
- •3.2, 3.3 Файлы и их атрибуты. Каталоги.
- •3.4 Логическая организация фс.
- •3.5 Логическая, физическая организация файлов.
- •3.6 Кэширование. Кэширование диска.
- •3.7 Raid - системы.
- •Сравнение raid-систем.
- •5. Файловые системы fat и fat32. Структура логического диска. Элемент каталога. Логическая, физическая организация файлов. Хранение длинных имён. Raid – системы.
- •5.1 Файловая система fat16.
- •Размеры разделов и кластеров fat16 для Windows 95-2000.
- •Файловая система vfat.
- •Элемент каталога vfat.
- •Пример длинного имени.
- •6.1 Файловая система ntfs.
- •6.2 Тома ntfs.
- •6.3 Mft и ее структура.
- •6.4 Атрибуты файлов.
- •6.5 Хранение файлов.
- •6.6 Сжатие файлов.
- •6.7 Защита целостности данных.
- •6.8 Дополнительные возможности.
- •7. Сравнение структуры логического диска fat32 и тома ntfs . Функции win32 api для работы с файлами.
- •8. Сравнение структуры логического диска Fat32 и тома ntfs. Варианты организации асинхронной работы с файлами.
- •7.1 Файловая система ntfs vs. Fat.
- •7.2 Функции win32 api для работы с файлами.
- •9. Методы распределения памяти с использованием дискового пространства. Стратегии управления виртуальной памятью. Классификация методов распределения памяти.
- •9.1 Методы распределения памяти с использованием дискового пространства.
- •Страничное распределение.
- •Сегментное распределение.
- •Сегментно-страничное распределение.
- •9.2 Стратегии управления виртуальной памятью (свопинг).
- •Понятие «trashing».
- •10. Архитектура памяти ms Windows 2000. Менеджер вп. Виртуальное ап. Средства защиты памяти. Страничное преобразование. Реализация свопинга в ms Windows 2000-2003.
- •Архитектура api управления памятью.
- •11. Архитектура памяти ms Windows 2000-2003. Организация «статической » виртуальной памяти. Блоки адресов. Состояния блоков адресов. Функции Win32 api.
- •12. Архитектура памяти в ms Windows 200-2003. Организация «динамической» виртуальной памяти. Назначение и преимущество по сравнению с кучами ansi c. Функции Win32 api.
- •13. Архитектура памяти в ms Windows 2000-2003. Проецируемые файлы, назначение и использование. Функции Win32 api. Проецируемые файлы.
- •14. Объекты управления центральным процессором и объединения ресурсов в ms Windows 2000-2003. Атрибуты процессов и потоков. Классы приоритетов.
- •14.1, 14.2 Управление центральным процессором и объединение ресурсов. Атрибуты процессов и потоков. Объекты Windows .
- •Процессы.
- •Потоки.
- •Задание (job).
- •Волокна (fibers).
- •14.3 Классы приоритетов.
- •15. Общие принципы диспетчеризация (планирование загрузки) в ms Windows 2000-2003. Классы приоритетов. Относительные приоритеты. Динамическое изменение приоритетов.
- •15.1 Общие принципы диспетчеризация (планирование загрузки) в ms Windows 2000-2003. Планирование загрузки однопроцессорной системы.
- •15.3 Относительные приоритеты потоков.
- •15.4 Динамическое изменение приоритетов.
- •16. Граф состояний потоков в ms Windows 2000-2003. Поток простоя. Принципы адаптивного планирования.
- •16.1 Граф состояний потоков в ms Windows 2000.
- •16.2 Поток простоя.
- •16.3 Принципы адаптивного планирования.
- •17. Граф состояний потоков в ms Windows 2000-2003. Особенности планирования в многопроцессорных системах.
- •17.2 Особенности планирования в многопроцессорных системах.
- •18. Граф состояний потоков в ms Windows 2000-2003. Особенности планирования в ос ms Windows Vista и Server 2008.
- •18.2 Особенности планирования в ос ms Windows Vista и Server 2008.
- •19. Планирование загрузки процессорного времени в ms windows 2000-2003. Функции win 32 api создания и завершение процессов и потоков, управление потоками
- •20. Планирование загрузки процессорного времени в ms windows 2000-2003. Функции win 32 api создания и завершения потоков. Управление потоками.
- •21. Критические секции и состязания. Семафоры, Мьютексы. Задача о читателях и писателях. Предотвращение критических ситуаций и средства синхронизации процессов
- •22. Критические секции и состязания. Семафоры , атомарные операции, critical_section. Задача о читателях и писателях. Предотвращение критических ситуаций и средства синхронизации процессов
- •23. Синхронизация потоков с использованием объектов ядра ms Windows 2000-2003. Основные принципы синхронизации. События. Семафоры. Функции win 32 api.
- •24. Синхронизация потоков с использованием объектов ядра ms Windows 2000-2003. Основные принципы синхронизации. Таймеры ожидания. Мьютексы. Функции win 32 api.
- •25. Межпроцессорное взаимодействие. Передача информации в ms Windows 2000-2003. Анонимные каналы. Почтовые ящики. Функции win 32 api.
- •26. Межпроцессорное взаимодействие. Передача информации в ms Windows 2000-2003. Именованные каналы. Почтовые ящики. Функции win 32 api.
7.2 Функции win32 api для работы с файлами.
Соответствие Win32 API и UNIX:
-
Win32 API
UNIX
Описание
CreateFile
open
создать новый файл или открыть существующий
DeleteFile
unlink
удалить существующий файл
CloseHandle
close
закрыть файл
ReadFile
read
прочитать данные из файла
WriteFile
write
записать данные в файл
SetFilePointer
Iseek
установить указатель работы с файлом
GetFileAttributes
stat
вернуть аттритбуты файла
LockFile
fcntl
заблокировать регион файла для решения взаимного исключения
UnlockFile
fcntl
разблокировать регион файла
-
CreateDirectory
mkdir
создать новый каталог
RemoveDirectory
rmdir
удалить пустой каталог
FindFirstFile
opendir
выполнить инициализацию для начала чтения записей каталога
FindNextFile
readdir
прочитать следующую запись каталога
MoveFile
rename
перенести файл из одного каталога в другой
SetCurrentDirectory
chdir
изменить текущий каталог
Работа с каталогами и файлами:
функция выполняемое действие
-
GetCurrentDirectory
Получение текущего каталога
SetCurrentDirectory
Смена текущего каталога
GetSystemDirectory
Получение системного каталога
GetWindowsDirectory
Получение основного каталога системы
CreateDirectory
Создание каталога
RemoveDirectory
Удаление каталога
CopyFile
Копирование файла
MoveFile
MoveFileEx
Перемещение или переименование файла
DeleteFile
Удаление файла
Работа с томами:
Для выяснения того, какие логические диски существуют в системе, используется функция DWORD GetLogicalDrives( void )
Каждый установленный бит возвращаемого значения соответствует существующему в системе логическому устройству. Например, если в системе существуют диски A:, C: и D:, то возвращаемое функцией значение равно 13(десятичное).
Функция DWORD GetLogicalDrivesStrings( DWORD cchBuffer, LPTSTR lpszBuffer) заполняет lpszBuffer информацией о корневом каталоге каждого логического диска в системе. В приведенном выше примере буфер будет заполнен символами: A:\<null>C:\<null>D:\<null><null>
Параметр cchBuffer определяет длину буфера. Функция возвращает реальную длину буфера, необходимую для размещения всей информации.
Для определения типа диска предназначена функция: UINT GetDriveType( LPTSTR lpszRootPathName )
В качестве параметра ей передается символическое имя корневого каталога (напр. A:\), а возвращаемое значение может быть одно из следующих:
Идентификатор |
Описание |
0 |
Тип устройства определить нельзя |
1 |
Корневой каталог не существует |
DRIVE_REMOVABLE |
Гибкий диск |
DRIVE_FIXED |
Жесткий диск |
DRIVE_REMOTE |
Сетевой диск |
DRIVE_CDROM |
Компакт диск |
DRIVE_RAMDISK |
RAM диск |
Для получения подробной информации о носителе используется функция GetVolumeInformation. Она заполняет параметры информацией об имени тома, названии файловой структуры, максимальной длине имени файла, дополнительных атрибутах тома, специфических для файловой структуры.
Функция GetDiskFreeSpace сообщает информацию о размерах сектора и кластера и о наличии свободных кластеров.
Создание и открытие файла:
HANDLE CreateFile (
LPCTSTR lpFileName, // pointer to name of the file
DWORD dwDesiredAccess, // access (read-write) mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // pointer to security descriptor
DWORD dwCreationDistribution, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to file with attributes to copy
);
В случае удачи функция CreateFile возвращает описатель открытого файла как объекта ядра. Существенно, что в противном случае она возвращает не NULL, а INVALID_HANDLE_VALUE.
Параметры CreateFile ():
Параметр dwDesiredAccess задает тип доступа к файлу. Можно определить флаги GENERIC_READ и GENERIC_WRITE а так же их комбинацию для разрешения чтения или записи в файл.
Параметр dwShareMode определяет режим совместного использования файла различными процессами. Если этот параметр равен нулю, то никакой другой поток не сможет открыть этот же файл. Флаги FILE_SHARE_READ и FILE_SHARE_WRITE а так же их комбинация разрешают другим потокам осуществлять доступ к файлу для чтения или записи.
Параметр dwCreationDistribution определяет действия функции в зависимости от того, существует ли уже файл с указанным именем.
- CREATE_NEW - Создает файл, если файл существует, то ошибка.
- CREATE_ALWAYS - Создает файл , если файл существует, то старый файл удаляется и новый создается.
- OPEN_EXISTING - Открывает существующий файл.
- OPEN_ALWAYS - Создает файл, если файл не существует, то создается новый файл.
- TRUNCATE_EXISTING - Открывает файл и урезает его до нулевой длины
Параметр dwFlagsAndAttributes определяет атрибуты файла, если он создается и задает режим работы с файлом.
- FILE_ATTRIBUTE_ARCHIVE, FILE_ATTRIBUTE_HIDDEN, FILE_ATTRIBUTE_NORMAL, FILE_ATTRIBUTE_READONLY, FILE_ATTRIBUTE_SYSTEM, FILE_ATTRIBUTE_TEMPORARY
- Атрибуты файла могут комбинироваться за исключением FILE_ATTRIBUTE_NORMAL, который всегда используется в одиночестве.
- Вместе с атрибутами могут комбинироваться и флаги, задающие режим работы с файлом.
FILE_FLAG_NO_BUFFERING - Не осуществлять кэширование и опережающее чтение
- FILE_FLAG_RANDOM_ACCESS - Кэшировать как файл произвольного доступа
- FILE_FLAG_SEQUENTIAL_SCAN - Кэшировать как файл последовательного доступа
- FILE_FLAG_WRITE_TROUGH - Не буферизовать операцию записи. Производить запись на диск немедленно.
- FILE_FLAG_DELETE_ON_CLOSE - Уничтожить файл при закрытии. Полезно комбинировать с атрибутом FILE_ATTRIBUTE_TEMPORARY.
- FILE_FLAG_OVERLAPPED - Работа с файлом будет осуществляться асинхронно.
Синхронный и асинхронный ввод/вывод:
При синхронной работе с файлами прикладная программа, запустив операцию ввода вывода, переходит в состояние блокировки до ее окончания (т.е. ожидает завершения операции ввода вывода).
При асинхронной работе с файлами прикладная программа, запустив операцию ввода вывода, не ожидает ее завершения а продолжает исполняться.
Функции файлового ввод-вывода:
BOOL ReadFile(
HANDLE hFile, // handle of file to read
LPVOID lpBuffer, // address of buffer that receives data
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // address of number of bytes read
LPOVERLAPPED lpOverlapped // address of structure needed for overlapped I/O
);
BOOL WriteFile(
HANDLE hFile, // handle to file to write to
LPCVOID lpBuffer, // pointer to data to write to file
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPDWORD lpNumberOfBytesRead, // pointer to number of bytes written
LPOVERLAPPED lpOverlapped // address of structure needed for overlapped I/O
);
Параметры функция файлового ввода-вывода:
Параметры функции ReadFile () имеют следующее предназначение:
- hFile – описатель объекта ядра “файл”, полученный в результате вызова функции CreateFile
- LpBuffer – адрес буфера, в который будет производиться чтение
- nNumberOfBytesToRead – количество байт, которые необходимо прочитать
- lpNumberOfBytesRead – адрес переменной, в которой будет размещено количество реально прочитанных байт. Существенно, что сразу после выполнения функции ReadFile, этот параметр не может быть установлен, так как операция чтения только началась.
- lpOverlapped – указатель на структуру OVERLAPPED, управляющую асинхронным вводом выводом.
Параметры функции WriteFile () аналогичны параметрам функции ReadFile ().
Пример синхронного копирования файла:
/* Open files for input and output. */
inhandle = CreateFile("data", GENERIC_READ, 0, NULL, OPEN_EXlSTING, 0, NULL);
outhandle = CreateFile ("newf", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
/* Copy the file. */
do {
s = ReadFile(inhandle, buffer, BUF_SIZE, &count, NULL);
if (s && count > 0) WriteFile(outhandle, buffer, count, Socnt, NULL);
} while (s>0 && count>0);
/* Close the files. */
CloseHandle (inhandle):
CloseHandle (outhandle);
Асинхронный ввод-вывод:
Для организации асинхронной работы с файлами необходимо при вызове функции CreateFile () установить флаг FILE_FLAG_OVERLAPPED в параметре dwFlagsAndAttributes.
После этого функции ReadFile () и WriteFile () будут работать асинхронно, т.е. только запускать операции ввода вывода и не ожидать их завершения.
В отличие от синхронных операций, при организации асинхронного чтения (записи) необходимо явно указать позицию, начиная с которой производится операция. Это связано с тем, что текущей позиции не существует, так как несколько операций чтения и записи могут производиться одновременно с разных позиций в одном файле.
typedef struct _OVERLAPPED {
DWORD Internal; //Используется операционной системой. Хранит статус завершения операции.
DWORD InternalHigh; //Используется ОС. Хранит количество переданных байт.
DWORD Offset; //Позиция в файле, начиная с которой необходимо
производить операцию чтения (записи).
DWORD OffsetHigh; //Количество байт для передачи.
HANDLE hEvent; //Описатель события, которое произойдет при завершении операции чтения (записи).
} OVERLAPPED;
Вариант 1 организации асинхронного ввода-вывода:
Перед запуском операции создается объект ядра “событие” и его описатель передается в функцию ReadFile () или WriteFile () в качестве элемента hEvent параметра lpOverlapped.
Программа, выполнив необходимые действия одновременно с операцией передачи данных, вызывает одну из функций ожидания (например, WaitForSingleObject), передавая ей в качестве параметра описатель события.
Выполнение программы при этом приостанавливается до завершения операции ввода-вывода.
Вариант 2 организации асинхронного ввода-вывода:
Событие не создается. В качестве ожидаемого объекта выступает сам файл. Его описатель передается в функцию WaitForSingleObject ().
Этот метод прост и корректен, но не позволяет производить параллельно несколько операций ввода-вывода с одним и тем же файлом.
Вариант 3 организации асинхронного ввода-вывода:
“Тревожный” асинхронный ввод-вывод. Схема построена на использовании функций ReadFileEx () и WriteFileEx (). В качестве дополнительного параметра в эти функции передается адрес функции завершения, которая будет вызываться всякий раз при завершении операции ввода-вывода.
Существенно, что эти функции выполняются в том же самом потоке что и функции файлового ввода/вывода. Это значит, что поток, запустивший операции чтения записи должен обратиться к функции ожидания, чтобы разрешить системе вызвать функцию завершения.
