- •Введение
- •1. Основные понятия системного программного обеспечения
- •1.1. Понятия прикладного и системного программного обеспечения
- •1.2. Состав системного программного обеспечения
- •2. Состав и архитектура операционных систем
- •2.1. Состав операционных систем
- •2.2. Архитектура ос
- •3. Процессы и потоки
- •3.1. Концепция процессов и потоков
- •3.2. Многозадачность. Формы программной работы
- •3.3. Подсистема управления процессами и потоками
- •3.4. Роль процессов, потоков и волокон в многозадачности
- •3.5. Создание процессов
- •3.6. Потоки и их модели
- •3.7. Планирование и синхронизация процессов и потоков
- •3.7.1. Виды планирования
- •3.7.2. Алгоритмы планирования потоков
- •3.7.3. Алгоритмы приоритетного планирования
- •3.7.4. Взаимоисключения
- •3.7.5. Семафоры
- •3.7.6. Тупики
- •4. Управление памятью
- •4.1. Функции ос по управлению памятью
- •4.2. Классификация методов распределения памяти
- •4.3. Распределение памяти без использования внешней памяти
- •4.4. Методы структуризации виртуальной памяти
- •4.4.1. Страничная организация виртуальной памяти
- •4.4.2. Сегментная организация виртуальной памяти
- •4.4.3. Странично-сегментная организация памяти
- •5. Файловые системы
- •5.1. Цели и задачи файловой системы
- •5.2. Организация файлов и доступ к ним
- •5.3. Логическая организация файла
- •5.4. Каталоговые системы
- •5.5. Основные возможности файловой системы ntfs
- •5.6. Структура тома с файловой системой ntfs
- •5.7. Возможности ntfs по ограничению доступа к файлам и каталогам
- •6. Управление вводом-выводом
- •6.1. Физическая организация устройств ввода-вывода
- •6.2. Организация программного обеспечения ввода-вывода
- •6.3. Обработка прерываний
- •6.4. Драйверы устройств
- •6.5. Независимый от устройств слой ос
- •6.6. Пользовательский слой программного обеспечения
- •7. Построение операционных систем
- •7.1. Принципы построения операционных систем
- •7.1.1. Принцип модульности
- •7.1.2. Принцип функциональной избирательности
- •7.1.3. Принцип генерируемости ос
- •7.1.4. Принцип функциональной избыточности
- •7.1.5. Принцип виртуализации
- •7.1.6. Принцип независимости программ от внешних устройств
- •7.1.7. Принцип совместимости
- •7.1.8. Принцип открытой и наращиваемой ос
- •7.1.9. Принцип мобильности
- •7.1.10. Принцип обеспечения безопасности вычислений
- •7.2. Построение интерфейсов операционных систем
- •7.3. Интерфейс прикладного программирования
- •7.3.1. Реализация функций api на уровне ос
- •7.3.2. Реализация функций api на уровне системы программирования
- •7.3.3. Реализация функций api с помощью внешних библиотек
- •7.4. Классификация системных вызовов
- •7.5. Интерфейс пользователя
- •7.6. Пользовательский интерфейс приложений
- •7.7. Архитектура, управляемая событиями
- •8. Семейство операционных систем unix
- •8.1. Основные понятия системы unix
- •8.1.1. Виртуальная машина
- •8.1.2. Пользователь
- •8.1.3. Интерфейс пользователя
- •8.1.4. Привилегированный пользователь
- •8.1.5. Команды
- •8.1.6. Процессы
- •8.1.7. Выполнение процессов
- •8.1.8. Структура файловой системы
- •8.2. Операционная система Linux
- •9.1.2. Определение компилятора. Отличие компилятора от транслятора
- •9.1.3. Определение интерпретатора. Разница между интерпретаторами и трансляторами
- •9.1.4. Этапы трансляции. Общая схема работы транслятора
- •9.1.5. Понятие прохода. Многопроходные и однопроходные компиляторы
- •9.2. Таблицы идентификаторов. Организация таблиц идентификаторов
- •9.2.1. Назначение таблиц идентификаторов
- •9.2.2. Принципы организации таблиц идентификаторов
- •9.2.3. Простейшие методы построения таблиц идентификаторов
- •9.2.4. Построение таблиц идентификаторов по методу бинарного дерева
- •9.2.8. Комбинированные способы построения таблиц идентификаторов
- •9.3. Лексические анализаторы
- •9.3.1. Назначение лексического анализатора
- •9.3.2. Принципы построения лексических анализаторов
- •9.3.3. Определение границ лексем
- •9.3.4. Выполнение действий, связанных с лексемами
- •9.4. Формальные языки и грамматики
- •9.4.1. Первичные понятия
- •9.4.2. Примеры, иллюстрирующие первичные понятия
- •9.4.3. Типы формальных языков и грамматик
- •9.4.3.1. Грамматики типа 0
- •9.4.3.2. Грамматики типа 1
- •9.4.3.3. Грамматики типа 2
- •9.4.3.4. Грамматики типа 3
- •9.4.3.5. Вывод в кс-грамматиках и правила построения дерева вывода
- •9.4.3.6. Синтаксический разбор
- •9.4.3.7. Левый и правый выводы
- •9.4.3.8. Неоднозначные и эквивалентные грамматики
- •9.4.4. Способы задания схем грамматик
- •9.4.4.1. Форма Наура-Бэкуса
- •9.4.4.2. Итерационная форма
- •9.4.4.3. Синтаксические диаграммы
- •9.4.5. Построение грамматик и грамматики, описывающие основные конструкции языков программирования
- •9.4.5.1. Рекомендации по построению грамматик
- •9.4.5.2. Описание списков
- •9.4.5.3. Пример построения грамматик
- •9.4.5.4. Грамматики, описывающие целые числа без знака и идентификаторы
- •9.4.5.5. Грамматики для арифметических выражений
- •9.4.5.6. Грамматика для описаний
- •9.4.5.7. Грамматика, задающая последовательность операторов присваивания
- •9.4.5.8. Грамматики, описывающие условные операторы и операторы цикла
- •9.4.5.9. Бесскобочные выражения
- •9.4.5.10. Префиксная польская запись
- •9.4.5.11. Вычисление префиксных польских записей
- •9.4.5.12. Постфиксная польская запись
- •9.4.5.13. Вычисление постфиксных записей
- •9.5. Конечные автоматы и регулярные грамматики
- •9.6. Макроязыки и макрогенерация
- •9.6.1. Определения макрокоманд и макрогенерации
- •9.6.2. Примеры макрокоманд
- •9.6.3. Макроязыки и препроцессоры
- •Заключение
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
7.4. Классификация системных вызовов
Во всех операционных системах, исходя из видов ресурсов, с которыми они связаны, функции интерфейса прикладного программирования можно разделить на несколько групп. Так, в Windows можно выделить следующие группы функций API:
– управление процессами, потоками и синхронизацией;
– управление виртуальной и физической памятью;
– управление вводом-выводом.
В API Windows также есть еще ряд групп:
– графический интерфейс пользователя;
– управление защитой;
– управление реестром;
– консольные функции
– другие группы специальных функций.
Примеры функций API, относящихся к разным группам приведены в табл. 7 - 15.
Таблица 7
Основные функции управления процессами и потоками
Функция |
Описание |
Create Process |
Создать новый процесс |
CreateThread |
Создать новый поток в существующем процессе |
ExitProcess |
Завершить текущий процесс и все его потоки |
ExitThread |
Завершить этот поток |
SetPriorityClass |
Задать класс приоритета для процесса |
SetThreadPriority |
Задать приоритет для потока |
Таблица 8
Основные функции управления синхронизацией
Функция |
Описание |
CreateSemaphore |
Создать новый семафор |
OpenSemaphore |
Открыть существующий семафор |
ReleaseSemaphorc |
Увеличить на единицу счетчик семафора |
EnterCriticalSection |
Захватить блокировку для критической секции |
Продолжение табл. 8
LeaveCriticalSection |
Освободить блокировку для критической секции |
Таблица 9
Основные функции управления виртуальной и физической памятью
Функция |
Описание |
VirtualAlloc |
Зарезервировать или фиксировать область в ВП |
VirtualFree |
Освободить область или отменить фиксацию области |
VirtualProtect |
Изменить режим доступа к области ВП |
VirtualQuery |
Узнать состояние области ВП |
VirtualLock |
Зафиксировать страницы ВП |
VirtualUnlock |
Расфиксировать страницы ВП |
HeapCreate |
Создать пул в памяти |
HeapAllocate |
Выделить блок памяти в пуле |
HeapReAllocate |
Изменить размер блока памяти в пуле |
HeapFree |
Освободить блок памяти в пуле |
GetProcessHeap |
Получить дескриптор пула |
Таблица 10
Основные функции для файлового ввода-вывода
Функция |
Описание |
CreateFile |
Создать или открыть файл; вернуть дескриптор файла |
DeleteFile |
Удалить существующий файл |
ReadFile |
Прочитать данные из файла |
WriteFile |
Записать данные в файл |
Продолжение табл. 10
SetFilePointer |
Установить указатель в файле в определенную позицию |
GetFileSize |
Определить размер файла |
SetEndOfFile |
Изменить размер файла по текущему значению указателя |
GetFileAttributes |
Вернуть атрибуты файла |
CopyFile |
Копировать файл |
LockFile |
Заблокировать область файла для обеспечения взаимного исключения |
UnlockFile |
Отменить блокировку области файла |
Таблица 11
Основные функции управления каталогами
Функция |
Описание |
CreateDirectory |
Создать новый каталог |
RemoveDirectory |
Удалить пустой каталог |
FindFirstFile |
Инициализация, чтобы начать чтение каталога |
FindNextFile |
Прочитать следующую запись каталога |
MoveFile |
Переместить файл из одного каталога в другой |
SetCurrent Directory |
Изменить текущий рабочий каталог |
Насчитывается несколько сотен функций графического интерфейса пользователя (GUI). Поэтому следует ограничиться названиями групп этих функций (табл. 12)
Таблица 12
Группы API-функций, реализующий графический интерфейс пользователя
Группа API |
Описание |
Управление окнами |
Создание, уничтожение окон, управление окнами |
Меню |
Создание, уничтожение и добавление пунктов меню |
Диалоговые окна |
Отображение диалоговых окон и сбор информации |
Рисование и черчение |
Отображение точек, линий и геометрических фигур |
Текст |
Вывод текста с использованием определенного шрифта, размера и цвета |
Растровые изображения, курсоры и значки |
Отображение на экране растровых изображений, курсоров и значков |
Цвета и палитры |
Управление набором доступных цветов |
Буфер обмена |
Передача информации от одного приложения другому |
Ввод |
Получение информации от мыши и клавиатуры |
Таблица 13
Основные функции управления защитой
Функция |
Описание |
InitializeSecurity Descriptor |
Подготовить новый дескриптор защиты |
Продолжение табл. 13
LookupAccountSid |
Найти SID по заданному имени пользователя |
SetSecurityDescriptorOwner |
Ввести SID владельца в дескриптор защиты |
SetSecurityDescriptorGroup |
Ввести SID группы в дескриптор защиты |
Таблица 14
Основные функции управления реестром
Функция |
Описание |
RegCreateKeyEx |
Создать новый ключ реестра |
RegDeleteKey |
Удалить ключ реестра |
RegOpenKeyEx |
Открыть ключ и получить его дескриптор |
RegEnumKeyEx |
Перенумеровать подключи, подчиненные ключу дескриптора |
RegQueryValueEx |
Искать данные по значению в ключе |
Таблица 15
Основные функции управления консолью
Функция |
Описание |
SetConsoleTitle |
Определить текст заголовка для консоли |
WriteConsole |
Вывести текст в консоль |
ReadConsole |
Ввод из консоли |
ReadConsoleInput |
Обработка событий мыши и клавиатуры |