- •Оглавление
- •Классификация операционных систем
- •2. Структура, состав и назначение подсистем типовой системы программирования (Visual Studio или Delphi).
- •4. Взаимодействие программ — интеграция приложени: технология com — основные принципы, типы и правила построения программных интерфейсов, достоинства и недостатки.
- •5. Объект, сервер, клиент. Схема взаимодействия клиента и объекта com. Объект
- •Интерфейс
- •Интерфейс iUnknown
- •Библиотека сом
- •Создание объекта
- •6. Технологи обмена сообщениями: проблемы интеграции приложений, основные принципы, шаблоны, достоинства и недостатки.
- •7. Принципы построения корпоративных информационных систем (кис), их типы и проблемы. Основные проблемы реализации архивных хранилищ. К основным принципам построения кис относятся:
- •Корпоративные информационные системы можно также разделить на два класса: финансово-управленческие и производственные.
- •Также различают виды кис, такие как заказные (уникальные) и тиражируемые кис.
- •Основные проблемы реализации архивных хранилищ
- •8. Синхронизация: семафоры, мьютексы, барьеры, взаимоблокировки — реентерабельность.
- •Семафоры
- •Мьютексы
- •Барьеры
- •Взаимоблокировки
- •Реентерабельность
- •Синхронизация при низком irql
- •Механизмы синхронизации режима ядра
- •Объекты диспетчера ядра
- •Условия освобождения различных синхронизирующих объектов
- •10. Основные системные механизмы Windows и их назначение.
- •Диспетчеризация ловушек
- •Диспетчер объектов
- •Синхронизация
- •Системные рабочие потоки
- •Глобальные флаги Windows
- •Трассировка событий ядра
- •Объекты исполнительной системы
- •Структура объектов
- •Методы объекта
- •Описатели объектов и таблица описателей, принадлежащая процессу
- •Внутренние объекты, объекты исполнительной системы (executive objects)
- •Хранение объектов в памяти
- •Имена объектов
- •Стандартные каталоги объектов
- •Пространство имен сеанса
- •Диспетчеризация 32-разрядных системных сервисов
- •Диспетчеризация 64-разрядных системных сервисов
- •Диспетчеризация системных сервисов режима ядра
- •Прерывания dpc или диспетчеризации
- •Прерывания apc
- •Необработанные исключения
- •Трассировка событий ядра
- •17. Реестр Windows: назначение, организация, ключи, ульи, редактирование, достоинства и недостатки. Реестр
- •Логическая структура реестра
- •Структура реестра
- •Хранение реестра
- •18. Статическое и динамическое связывание, dll-библиотеки — назначение, структура. Статические и динамические библиотеки.
- •Основные этапы компьютерного моделирования
- •Виды алгоритмов
- •Основные этапы полного построения алгоритма.
- •Правильность алгоритма.
- •Реализация алгоритма.
- •Принципы эффективных алгоритмов.
- •Правила оформления текстов программ.
- •Архитектура программного обеспечения в качестве классического жизненного цикла системы — недостатки классического цикла.
- •Основные параметры при разработке архитектуры.
- •Примеры технологии проектирования пс (стратегии проектирования: водопадная, инкрементная, эволюционная, спиральная стратегии)
- •Понятие надежности по
- •Отказы, сбои, восстановление
- •Основные задачи технической диагностики
- •Показатели качества и надежности программных средств (iso 9126:1991)
- •Тестирование корректности определения и использования данных на маршрутах исполнения программы.
- •Основные типы
- •Средства разработки
- •Загрузка/выгрузка
- •Организация и точки входа
- •Диспетчер PnP
- •Структуры драйверов в ос
- •23. Администрирование программного обеспечения пк: принципы, задачи, документирование, регламентные работы — профилактика. Администрирование программного обеспечения пк
- •Принципы
- •Документирование
- •Регламентные работы — профилактика.
- •Средства разработки .Net-приложений
- •Корпоративные .Net-серверы и их краткие характеристики
- •Сервер Application Center
- •Реализация Web-ферм, кластеров
- •Exchange Server и его основные функции
Классификация операционных систем
Однозадачные и многозадачные
Однопользовательские и многопользовательские
Однопроцессорные и многопроцессорные системы
Локальные и сетевые.
По числу одновременно выполняемых задач операционные системы делятся на два класса:
Однозадачные (MS DOS)
Многозадачные (OS/2, Unix, Windows)
В однозадачных системах используются средства управления периферийными устройствами, средства управления файлами, средства общения с пользователями. Многозадачные ОС используют все средства, которые характерны для однозадачных, и, кроме того, управляют разделением совместно используемых ресурсов: процессор, ОЗУ, файлы и внешние устройства.
В зависимости от областей использования многозадачные ОС подразделяются на три типа:
Системы пакетной обработки (ОС ЕС)
Системы с разделением времени (Unix, Linux, Windows)
Системы реального времени (RT11)
количеству одновременно работающих пользователей: однопользовательские, многопользовательские;
числу процессов, одновременно выполняемых под управлением системы: однозадачные, многозадачные;
количеству поддерживаемых процессоров: однопроцессорные, многопроцессорные;
разрядности кода ОС: 8-разрядные, 16-разрядные, 32-разрядные, 64-разрядные;
типу интерфейса: командные (текстовые) и объектно-ориентированные (графические);
Проце́сс — программа (и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлыи т. д. ), которая выполняется в текущий момент. Стандарт ISO 9000:2000 определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие. Компьютерная программа сама по себе — это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций.
Контекст процесса: Контекст процесса включает в себя содержимое адресного пространства задачи, выделенного процессу, а также содержимое относящихся к процессу аппаратных регистров и структур данных ядра. С формальной точки зрения, контекст процесса объединяет в себе пользовательский контекст, регистровый контекст и системный контекст.
Модели: однопоточные, многопоточные.
Пото́к выполне́ния — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса. Несколько потоков выполнения могут существовать в рамках одного и того же процесса и совместно использовать ресурсы, такие как память, тогда как процессы не разделяют этих ресурсов. В частности, потоки выполнения разделяют инструкции процесса (его код) и его контекст (значения переменных, которые они имеют в любой момент времени).
Контекст потока
программный счетчик, регистр состояния и содержимое остальных регистров процессора;
указатели на стек ядра и пользовательский стек;
указатели на адресное пространство, в котором выполняется поток (каталог таблиц страниц процесса).
Модели потока
1:1 (потоки выполнения на уровне ядра)
Потоки выполнения, созданные пользователем в модели 1-1, соответствуют диспетчируемым сущностям ядра. Это простейший возможный вариант реализации потоковости. В Windows API этот подход использовался с самого начала. В Linux обычная библиотека C реализует этот подход (через библиотеку потоков POSIX, а в более старших версиях через LinuxThreads). Такой же подход используется ОС Solaris,NetBSD и FreeBSD.
N:1 (потоки выполнения уровня пользователя)
В модели N:1 предполагается, что все потоки выполнения уровня пользователя отображаются на единую планируемую сущность уровня ядра, и ядро ничего не знает о составе прикладных потоков выполнения. При таком подходе переключение контекста может быть сделано очень быстро, и, кроме того, он может быть реализован даже на простых ядрах, которые не поддерживают многопоточность. Однако, одним из главных недостатков его является то, что в нём нельзя извлечь никакой выгоды из аппаратного ускорения на многопоточных процессорах или многопроцессорных компьютерах, потому что только один поток выполнения может быть запланирован на любой момент времени. Эта модель используется в GNU Portable Threads.
M:N (смешанная потоковость)
В модели M:N некоторое число N прикладных потоков выполнения отображаются на некоторое число M сущностей ядра или «виртуальных процессоров». Модель является компромиссной между моделью уровня ядра («1:1») и моделью уровня пользователя («N:1»). Вообще говоря, «M:N» потоковость системы являются более сложной для реализации, чем ядро или пользовательские потоки выполнения, поскольку изменение кода как для ядра, так и для пользовательского пространства не требуется. В M:N реализации библиотека потоков отвечает за планирование пользовательских потоков выполнения на имеющихся планируемых сущностях. При этом переключение контекста потоков делается очень быстро, поскольку модель позволяет избежать системных вызовов. Тем не менее, увеличивается сложность и вероятность инверсии приоритетов, а также неоптимальность планирования без обширной (и дорогой) координации между пользовательским планировщиком и планировщиком ядра.
Планирование:
Выбор текущего потока из нескольких активных потоков, пытающихся получить доступ к процессору называется планированием. Планирование - очень важная и критичная для производительности операция, поэтому система предоставляет много рычагов для ее гибкой настройки. Выбранный для выполнения поток работает в течение некоего периода, называемого квантом, по истечении которого поток вытесняется, то есть процессор передается другому потоку. Предполагается, что поток не знает, в какой момент он будет вытеснен. Поток также может быть вытеснен даже, если его квант еще не истек. Это происходит, когда к выполнению готов поток с более высоким приоритетом.
Диспетчеризация заключается в реализации найденного в результате планирования (динамического или статистического) решения, то есть в переключении процессора с одного потока на другой. Прежде чем прервать выполнение потока, ОС запоминает его контекст, с тем чтобы впоследствии использовать эту информацию для последующего возобновления выполнения данного потока.
Создание, завершение, наследование дескрипторов
Приложение, или, как часто его называют, программа, – это статическая последовательность команд. При запуске программы в ОС Win32 создается отдельный процесс (process), или, как его иногда называют, задача (task). Процесс состоит из:
исполняемой программы с ее кодом и данными;
виртуального адресного пространства (address space), представляющего собой набор адресов виртуальной памяти, доступных для процесса;
ресурсов, выделяемых процессу;
как минимум одного потока, именуемого потоком управления (thread of execution), или главным потоком процесса. Именно поток управления и требует от операционной системы времени на обслуживание процесса.
В момент запуска задачи ОС создает дескриптор – специальную структуру, описывающую стартующий процесс. Дескриптор процесса содержит информацию, позволяющую Win32 управлять процессом. В частности в дескрипторе хранится:
идентификатор процесса (PID – process identificator);
информация о ресурсах, которыми владеет или собирается завладеть процесс;
данные о приоритете процесса;
контекст задачи, представляющий собой специальную защищенную область памяти, в которую записываются значения регистров процессора в момент приостановки задачи и откуда считываются данные в момент возобновления выполнения задачи.
За один и тот же интервал времени, называемый квантом времени, один процессор реально может выполнять не более одной задачи. Вместе с тем многозадачная (multitasking) ОС вполне способна одновременно обслуживать несколько процессов. Это достигается благодаря переключению процессора компьютера с исполнения одной задачи на другую. Такое переключение называется переключением контекста (context switching). При этом важно помнить, что время выделяется не процессу, а принадлежащим ему потокам. И чем выше производительность процессора, тем более правдоподобна иллюзия одновременного выполнении нескольких программ.
Если приложение дублирует один из своих дескрипторов для другого процесса, продублированный дескриптор правилен только применительно к другому процессу.
Дублированный или унаследованный дескриптор - это уникальное значение, но он относится к тому же самому объекту, как и исходный дескриптор. Процессы могут наследовать или делать копию дескрипторов для следующих типов объектов:
Признак доступа
Устройство связи
Консольный ввод данных
Экранный буфер консоли
Рабочий стол
Каталог
Событие
Файл
Файл, отображаемый в памяти
Задание
Почтовый ящик в ядре системы
Мьютекс
Канал
Процесс
Ключ системного реестра
Семафор
Сокет
Поток
Таймер
Режим оконного терминала
Все другие объекты являющиеся частными для процесса, который их создавал; их дескрипторы объекта не могут быть продублированы или унаследованы.
Уровень приоритета͵ получаемый комбинацией относительного приоритета потока и класса приоритета процесса, которому принадлежит данный поток, называют базовым уровнем приоритета потока. Иногда система изменяет уровень приоритета потока. Обычно это происходит в ответ на некоторые события, связанные с вводом выводом (к примеру, на появление оконных сообщений или чтение с диска).
Система повышает приоритет только тех потоков, базовый уровень которых находится в пределах 1-15 Именно в связи с этим данный диапазон принято называть ʼʼ областью динамического приоритета ʼʼ (dynamic priority range). Система не допускает динамического повышения приоритета потока до уровней реального времени (более 15) Поскольку потоки с такими уровнями обслуживают системные функции, это ограничение не дает приложению нарушить работу операционной системы.
