
- •1.Определение ос. Ос как виртуальная машина и как диспетчер аппаратных и прораммных ресурсов.
- •2.Назначение и основные функции ос. Классификация ос. Варианты классификации.
- •5.Многопроцессорные ос. Симметричная и несимметричная параллельная обработка.
- •3.Эволюция ос. Современные ос, их характеристики и области применения.
- •4.Однозадачные и многозадачные ос. Преимущества многозадачности и ее реализация в ос.
- •Сетевые компоненты ос.
- •Оc с разделением времени. Основные свойства, классы решаемых задач. Примеры современных реализаций.
- •Ос реального времени. Жесткие и нежесткие системы. Интерфейс с внешней средой.
- •Операционные системы unix. Основные линии развития (at&t и bsd unix). Современные реализации для пэвм.
- •Операционные системы Microsoft Windows. Основные версии и реализации, их характеристики и свойства.
- •Современные типы ос для пэвм. Назначение, характеристики и свойства.
- •Функциональная организация (структура) типовой многозадачной ос. Базовые функциональные подсистемы. Ядро и пользовательский слой ос.
- •Архитектурные принципы (принципы разработки и организации) современной мультипрограммной ос. Модульная структура ос.
- •Подсистема планирования (управления) процессов и потоков в ос. Понятие процесса, потока и ресурса. Типы ресурсов. Информационные структуры процесса (потока).
- •Жизненный цикл процесса. Диаграмма состояний. Переходы между состояниями. Диаграмма состояний потоков в ос ms Windows (2000/xp).
- •16. Алгоритмы планирования. Квантование времени (вытеснение). Планирование на основе приоритетов. Приоритетное планирование потоков в ms Windows (2000/xp).
- •Организация взаимодействия (синхронизация) параллельных процессов и потоков. Эффект гонок. Критическая секция. Типовые задачи синхронизации.
- •Системные механизмы для синхронизации потоков. Блокирующие переменные, мьютексы, семафоры.
- •Подсистема управления памятью. Основные функции. Сегментная и страничная программные модели памяти.
- •Концепция виртуальной памяти. Трансляция виртуальных адресов.
- •Иерархическая организация памяти эвм. Принцип кэширования. Устройство кэш-памяти (созу) на процессоре. Алгоритмы работы кэш-памяти.
- •Алгоритмы распределения основной памяти эвм.
- •Страничный обмен (замещение), как метод реализации виртуальной памяти. Таблицы страниц процесса. Свопинг процессов.
- •Структура виртуального адресного пространства процесса в ms Windows nt (2000/xp).
- •Архитектура (модель) ос ms Windows nt (2000/xp). Компоненты ядра и компоненты пользовательского режима. Файловое дерево ос ms Windows на загрузочном томе.
- •Порядок и основные процедуры для загрузки ос на аппаратной платформе ibm-совместимых пэвм. Мультисистемная организация, диспетчеры загрузки ос.
- •Подсистема ввода-вывода ос. Буферизация обмена данными между внешней и основной памятью. Дисковый (системный) кэш.
- •Управление устройствами (аппаратурой) в ос. Независимость программ от устройств. Типы устройств. Драйверная подсистема ос. Модель драйвера в ос Windows.
- •Файловая система ос (fs). Внешняя модель (архитектура) fs. Правила именования и пространства имен в ос Windows. Элементы полного имени. Типы файловых объектов и их атрибуты.
- •Внутренняя организация файловой системы (fs). Системные данные fs на томе. Типы файловых систем.
- •Множественность файловых систем (fs) современных ос. Файловые системы ос Windows: fat12, fet16, fat32, cdfs, ntfs (ntfs5), сетевые fs. Диспетчер файловых систем (ifs ), драйверы fs.
- •Файловая система faTхх. Назначение и организация таблицы распределения файлов. Типы записей в fat.
- •Структура элемента каталога в файловой системе faTхх. Опорные и дополнительные элементы. Метка тома.
- •Поддержка и внутренняя организация длинных имен в ос Windows для файловых систем faTxx. Псевдоним длинного имени в пространстве имен dos.
- •Система операций над файлами. Типы доступа к данным файла. Защита файлов и данных в ос. Обеспечение целостности fs. Восстанавливаемость после сбоев ос и аппаратуры.
- •Файловая система ntfs. Основные свойства и возможности. Обеспечение целостности и отказоустойчивости ntfs. Управление доступом к данным и защита данных в ntfs.
- •Внутренняя организация ntfs на логическом томе. Метафайлы и их назначение. Структура главной таблицы файлов (мfт).
- •Интерфейс прикладного программирования в ос. Библиотеки функций api, системные вызовы. Назначение и реализация в инструментальных системах (системах программирования).
- •Командный (консольный) интерфейс ос. Виртуальная машина ms-dos, интерпретатор команд и его функции. Синтаксис консольных команд. Система команд и их классификация.
- •Внутренние команды командного интерфейса ос. Формат вызова, механизм внутренней реализации. Примеры внутренних команд vdm.
- •Команды-фильтры. Конвейеризация (потоковое сцепление) команд в командном интерфейсе. Перенаправление стандартного ввода-вывода в файлы и другие устройства.
- •Конфигурационные, диагностические и информационные команды ос.
- •Среда окружения командного интерфейса и ее назначение. Команды формирования окружения. Системные переменные.
- •Система команд ос для операций с файлами. Команды для работы с каталогами.
- •Программирование в среде командного интерфейса. Пакетные командные файлы: - внутренние команды, передача параметров.
- •Графический интерфейс конечного пользователя (gui). Концепция рабочего стола. Стандартные элементы оформления и управления в gui. Способы запуска приложений.
- •Защита данных и программ в ос. Модель безопасности ос ms Windows (2000/xp). Механизм учетных записей пользователей, регистрация в системе. Права доступа.
- •Инструменты конфигурирования и настройки ос ms Windows (2000/xp). Панель управления. Системное администрирование.
- •Системная база данных ос ms Windows - реестр. Общая организация, типы параметров. Утилиты для работы с реестром. Экспорт и импорт данных реестра.
- •51. Развертывание (инсталляция) ос на аппаратной платформе. Дистрибутив ос. Утилиты для установки.
- •52. Поддержка сетей в ос ms Windows. Сетевые компоненты, конфигурирование стека сетевых протоколов. Сетевые утилиты ос. Прикладные пользовательские сетевые сервисы.
Структура виртуального адресного пространства процесса в ms Windows nt (2000/xp).
Менеджер виртуальной памяти выполняет формирование виртуального адресного пространства процесса и отображает виртуальные адреса в адресных пространствах процессов на физические страницы памяти. Структура виртуального адресного пространства пользовательского процесса показана на рисунке 5.2.
Рисунок 5.2 Виртуальное адресное пространство пользовательского процесса в Windows NT
Из 4 Гбайт виртуального адресного пространства для пользовательского процесса доступна нижняя половина за вычетом самых младших 64 Кбайт. В виртуальном адресном пространстве процесса реализована плоская модель памяти, качественно структура доступной для процесса памяти совпадает с таковой в Windows 9x, но в Windows NT адресные пространства процессов полностью изолированы друг от друга. Верхняя часть виртуального адресного пространства процесса, в которой находятся системные DLL, в Windows NT содержит не сами эти DLL, а только модули-заглушки. Обращение процесса к системе происходит в пределах адресного пространства процесса. Но такое обращение попадает к модулю-заглушке, который формирует сообщение-запрос к подсистеме-серверу на выполнение системного вызова. Средства вызова локальных процедур передают это сообщение процессу-серверу, они же передают ответ сервера в модуль-заглушку, а тот формирует отклик на системный вызов. У пользовательского процесса, таким образом, создается впечатление, что системный вызов был выполнен в пределах его адресного пространства, но если пользовательский процесс испортит верхнюю часть доступного ему адресного пространства, то он испортит только свои модули-заглушки и никак не повлияет на работу других процессов.
Память
Каждому процессу в Win32 доступно линейное 4-гигабайтное (2^32 = 4 294 967 296) виртуальное адресное пространство. Обычно верхняя половина этого пространства резервируется за операционной системой, а вторая половина доступна процессу.
Виртуальное адресное пространство процесса доступно всем потокам этого процесса. Иными словами, все потоки одного процесса выполняются в едином адресном пространстве.
С другой стороны, механизм виртуальной памяти позволяет изолировать процессы друг от друга. Потоки одного процесса не могут ссылаться на адресное пространство другого процесса.
Виртуальная память может вовсе не соответствовать структуре физической памяти. Диспетчер памяти транслирует виртуальные адреса на физические, по которым реально хранятся данные. Поскольку далеко не всякий компьютер в состоянии выделить по 4 Гбайт физической памяти на каждый процесс, используется механизм подкачки (swapping). Когда оперативной памяти не хватает, операционная система перемещает часть содержимого памяти на диск, в файл (swap file или page file), освобождая, таким образом, физическую память для других процессов. Когда поток обращается к странице виртуальной памяти, записанной на диск, диспетчер виртуальной памяти загружает эту информацию с диска обратно в память.
Процессом обычно называют экземпляр выполняемой программы. Хотя на первый взгляд кажется, что программа и процесс понятия практически одинаковые, они фундаментально отличаются друг от друга. Программа представляет собой статический набор команд, а процесс это набор ресурсов и данных, использующихся при выполнении программы. Процесс в Windows состоит из следующих компонентов:
- структура данных, содержащая всю информацию о процессе, в том числе список открытых дескрипторов различных системных ресурсов, уникальный идентификатор процесса, различную статистическую информацию и т.д.;
- адресное пространство - диапазон адресов виртуальной памяти, которым может пользоваться процесс;
- исполняемая программа и данные, проецируемые на виртуальное адресное пространство процесса.
Процессы инертны. Отвечают же за исполнение кода, содержащегося в адресном пространстве процесса, нити. Нить (thread) - некая сущность внутри процесса, получающая процессорное время для выполнения. В каждом процессе есть минимум одна нить. Эта первичная нить создается системой автоматически при создании процесса. Далее эта нить может породить другие нити, те в свою очередь новые и т.д. Таким образом, один процесс может владеть несколькими нитями, и тогда они одновременно исполняют код в адресном пространстве процесса. Каждая нить имеет:
- уникальный идентификатор нити;
- содержимое набора регистров процессора, отражающих состояние процессора;
- два стека, один из которых используется нитью при выполнении в режиме ядра, а другой - в пользовательском режиме;
- закрытую область памяти, называемую локальной памятью нити (thread local storage, TLS) и используемую подсистемами, run-time библиотеками и DLL.
Структура адресного пространства
Принято считать, что каждый процесс, запущенный в Windows, получает в свое распоряжение виртуальное адресное пространство размером 4 Гб. Это число определяется разрядностью адресов в командах: 232 байт = 4 Гб.
Конечно, трудно рассчитывать, что для каждого процесса найдется такое количество физической памяти, речь идет только о диапазоне возможных адресов.
Но даже и в этом смысле процессу доступно лишь около 2 Гб младших адресов виртуальной памяти. В частности, для Windows NT старшие 2 Гб с адресами от 8000000016 до FFFFFFFF16 доступны только системе. Такое решение позволило уменьшить время, затрачиваемое при вызове системных функций, поскольку отпадает необходимость изменять при этом отображение страниц, нужно только разрешить их использование. Однако, чтобы сам вызов API-функций был возможен, системные библиотеки, которые содержат эти функции, размещаются в младшей, пользовательской половине виртуального пространства.
В Windows 95 принято хулиганское решение: система и здесь располагается в старшей половине памяти, но эта половина доступна процессу пользователя и для чтения, и для записи. При этом вызов системы становится еще проще, но зато система становится беззащитной перед любой некорректной программой, лезущей куда не надо.
Кроме старших 2 Гб, процессу недоступны еще некоторые небольшие области в начале и в конце виртуального пространства. В Windows NT недоступны адреса с 0000000016 по 0000FFFF16 и с 7FFF000016 по 7FFFFFFF16, т.е. два кусочка по 64 Кб. Это сделано с целью выявления такой типичной ошибки программирования, как использование неинициализированных указателей, которые обычно попадают в запретные диапазоны адресов.
Для 64-разрядных процессоров размер виртуального адресного пространства возрастает до трудно представимых 264 байт (17 миллиардов гигабайт, если угодно), однако Windows XP выделяет в распоряжение каждого процесса «всего лишь» 7152 гигабайта с адресами от 0 до 6FBFFFFFFFF16, а остальное адресное пространство может использоваться только системой.