
- •Назначение, состав и функции операционных систем (ос).
- •Классификация ос. Особенности ос реального времени. Виды ос реального времени. Примеры ос реального времени.
- •Вычислительные процессы и ресурсы. Виды ресурсов. Управление ресурсами.
- •Переносимость приложений и способы ее достижения. Платформа и технологии .Net. Управляемый и неуправляемый код. Сборка мусора – достоинства и недостатки.
- •Процессы и управление процессами в ос Linux. Средства получения информации о процессах ос Linux.
- •Функции Win api для мониторинга процессов и потоков ос Windows.
- •Функции Win api для получения дополнительной информации о процессах и потоках.
- •Планирование и диспетчеризация потоков в ос. Алгоритмы планирования в системах пакетной обработки и диалоговых системах.
- •Уровни приоритета процесса и потока в ms Windows xp. Функции Win api для изменения приоритетов процесса и потока. Недостижимые значения приоритетов потока.
- •Динамическое повышение приоритета потока. Необходимость. Графики изменения величины приоритета для различных ситуаций динамического повышения приоритета.
- •1)Динамическое повышение приоритета после завершения ввода-вывода
- •2)Динамическое повышение приоритета по окончании ожидания событий и семафоров.
- •Типы потоков по способу их взаимодействия. Понятие критического участка. Необходимость использования синхронизации.
- •Семафорные примитивы Дейкстры – назначение и использование для синхронизации конкурирующих и сотрудничающих (поставщик-потребитель) потоков.
- •Средства синхронизации потоков пользовательского режима. Достоинства и недостатки.
- •Объекты ядра ос ms Windows, используемые для синхронизации потоков.
- •Мьютексы как средство синхронизации потоков. Функции Win32 api для создания и использования мьютекса. Отказ от мьютекса. Пример использования мьютекса.
- •Семафоры. Виды семафоров и их применение. Функции Win32 api для создания и использования семафора. Пример использования семафора.
- •События. Виды событий. Примеры записи функций Win32 api для создания и использования событий. Пример использования событий для синхронизации конкурирующих и сотрудничающих потоков.
- •Функция Win32 api ожидания нескольких событий. Пример использования функции.
- •Var pHandles; // адрес массива объектов
- •Понятие тупиковой ситуации. Модель Холта и её использование. Пример модели Холта. Средства анализа тупиковых ситуаций от компании Microsoft.
- •Условия возникновения тупика. Стратегии Хавендера. Методы борьбы с тупиками.
- •Сегментация, страничная и сегментно-страничная организация памяти. Виды фрагментации памяти. Оценка потерь памяти вследствие фрагментации. Методы борьбы с фрагментацией.
- •Формат дескрипторов мп Intel в защищенном режиме i80386.
- •Байт доступа. Назначение битов. Условие доступа программы к сегменту данных. Поле доступа. Назначение бита дробности.
- •Алгоритмы замещения страниц виртуальной памяти (сам)
- •Четыре метода управления виртуальной памятью. Области применения каждого метода. Понятие региона виртуального адресного пространства (вап). Свойства региона вап.
- •Резервирование регионов в адресном пространстве и передача физической памяти региону. Используемые функции Win32 и их параметры.
- •Кучи. Необходимость создания дополнительных куч процесса. Методы доступа к куче. Операции с кучами. Используемые функции Win32.
- •Функция Win32 api получения сведений о регионах виртуального адресного пространства. Пример использования.
- •Файлы, проецируемые в память. Области применения. Этапы проецирования. Назначение каждого этапа, используемые функции Win32.
- •Динамически загружаемые библиотеки. Области применения. Основные dll ms Windows. Достоинства и недостатки dll. Создание dll.
- •Способы передачи данных между процессами. Схема передачи данных между процессами без использования средств ос и с использованием средств ос. Обмен сообщениями. Каналы и почтовые ящики.
- •Использование именованных каналов. Сокеты. Назначение. Области применения.
- •Дополнительный вопросы: Назначение планировщика задач
- •Краткосрочный планировщик
- •Диспетчер
- •Статическое и динамическое планирование
- •Алгоритм планирования rr
- •Планирование в системах пакетной обработки. Кратчайшее задание первое.
Переносимость приложений и способы ее достижения. Платформа и технологии .Net. Управляемый и неуправляемый код. Сборка мусора – достоинства и недостатки.
Переносимое приложение - ПО, которое для своего запуска не требует процедуры инсталляции на жесткий диск компьютера, и может полностью храниться на съемных носителях информации, таких как CD-ROM, USB и др., что позволяет использовать данное ПО на многих компьютерах. Методы достижения переносимости:
Использование Web-технологий
Можно выделить два основных способа построения приложений, использующих эти технологии:
создание полностью локального приложения, располагающегося на машине пользователя, и использующего web-браузер для взаимодействия с ним;
реализация приложения в виде сервиса; при этом серверная и клиентская части приложения могут быть разнесены на разные машины.
Использование интерпретируемого кода-это написание программного кода на интерпретируемых языках, использование не подразумевает создания исполняемых файлов в формате целевой операционной системы. Вместо этого интерпретатор последовательно считывает и выполняет инструкции непосредственно из текста программы.
Виртуализация - запуск копии системы внутри основной ОС, с использованием программ- виртуальных машин. На такой машине устанавливается операционная система и другое окружение, необходимое приложению, а само приложение запускается уже в родной для него среде.
Один из способов решения проблемы неоднородности — разработка и поддержка стандартных программных интерфейсов, облегчающих задачу переноса приложений на серверы различных платформ.
Другой способ, применяемый производителями для решения проблемы неоднородности, — поддержка стандартных протоколов. Системы, поддерживающие один и тот же протокол, могут взаимодействовать друг с другом, даже если они опираются на различные машинные архитектуры и операционные системы.
Технология .NET представляет собой способ разработки и развертывания программного обеспечения, который с помощью таких широко используемых стандартов, как HTTP и XML, реализует взаимодействие программ и обеспечивает доступ через Internet к многочисленным программным сервисам.
NET Framework — платформу для разработки и исполнения приложений, которая упрощает и ускоряет разработку, поддерживает полноценное ооп для Web, устраняет многие типы распространенных программных ошибок, предоставляет общий API для всех языков.
.NET Framework — инфраструктура разработки приложений. Ее основные компоненты — общеязыковая исполняющая среда (CommonLanguageRuntime) и библиотека классов .NET FrameworkClassLibrary.
Весь код для платформы .NET преобразуется в промежуточный код на языке CIL. Поэтому разработчики могут легко интегрировать код, написанный для .NET на различных языках программирования. Все, что можно сделать на одном .NET-совместимом языке (за редким исключением), можно сделать на любом другом
Программный код, выполняющийся под управлением CLR, называется управляемым кодом.
Программный код, выполняющийся вне среды выполнения CLR, называется неуправляемым кодом.
Примеры неуправляемого программного кода:
функции Win32 API;
компоненты COM;
интерфейсы ActiveX.
На платформе .NET предусмотрены различные сценарии установления взаимодействия между управляемым и неуправляемым кодами.
Сборщик мусора (GarbageCollection) - одна из форм автоматического управления памятью. периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями. Сборщик отслеживает ссылки на области памяти. Сборка мусора осуществляется путем остановки вычислений и перенесением вниз области.
Достоинства:
Безопасность
Упрощение процесса программирования
Недостатки:
Низкая скорость
Корректировка ссылок
Понятие процесса и потока ОС Windows. Операции, выполняемые с процессами и потоками и используемые функции Win API.
Процесс – абстракция, представляющая программу в процессе выполнения. Они бывают системные и прикладные. Процесс является потребителем ресурсов таких как:
1. Адресное пространство, в котором содержится программный код, данные, стеки;
2. Файлы, которые используются для чтения и записи;
3. Устройство ввода/вывода.
Свойства:
Имя
Идентификатор PID
Открытые файлы
Объекты синхронизации
Базовый класс приоритета
ВАП
Модули
Потоки
Поток - это абстракция, представляющая выполнение программы, развертывающейся во времени. Поток «живет» внутри процесса. Представляют собой последовательности команд. Каждый поток имеет собственный счетчик команд и стек.
Свойства:
TID
Thread
Приоритет
Стек(и) - это специально отведенная область оперативной памяти для хранения промежуточных данных во время выполнения программы.
Информация для пользователя:
Диспетчер задач
Process Explorer
System Explorer
Process Hacker
1). Диспетчер задач отображает список выполняемых в системе процессов. Его можно запустить тремя способами: 1) нажав клавиши Ctrl+Shift+Esc; 2) щелкнув панель задач правой кнопкой мыши и выбрав команду Task Manager (Диспетчер задач); 3) нажав клавиши Ctrl+Alt+Del.
2). Утилита(вспом. компьютерная программа для выполнения типовых задач, таких, напр., как управление памятью, борьба с компьютерными вирусами, архивация файлов и др.) Process Explorer показывает больше информации о процессах и потоках, чем любой другой доступный инструмент.
возможности:
полное имя (вместе с путем) выполняемого образа;
маркер защиты процесса (список групп и привилегий);
выделение изменений в списке процессов и потоков;
список сервисов внутри процессов - хостов сервисов с выводом отображаемого имени (display name) и описания;
процессы, которые являются частью задания, и детальные сведения о заданиях;
процессы, выполняющие .NET/WinFX-приложения, и сведения, специфичные для .NET (например, список доменов приложений и счетчики производительности, относящиеся к CLR);
время запуска процессов и потоков;
полный список файлов, проецируемых в память (не только DLL-модулей);
возможность приостановки процесса;
возможность принудительного завершения индивидуальных потоков;
простота выявления процессов, использующих наибольшую долю процессорного времени за определенный период.
дерево процессов с возможностью свертывания отдельных частей этого дерева;
открытые описатели в процессе без предварительной настройки (утилиты Microsoft для вывода открытых описателей требуют предварительной установки общесистемного флага и перезагрузки);
список DLL (и файлов, проецируемых в память) в каком-либо процессе;
активность потоков в каком-либо процессе;
стеки потоков пользовательского режима
стеки системных потоков режима ядра
разница в переключении контекстов (более наглядное представление активности процессора, как поясняется в главе 6);
лимиты памяти режима ядра (пулов подкачиваемой и неподкачиваемой памяти)
3) System Explorer программа, способная полностью заменить стандартный диспетчер задач и одновременно расширить возможности мониторинга системы и манипулирования процессами. System Explorer предоставляет возможность просмотра информации о всех запущенных программах и о процессах, которые используют подключение к сети. С помощью System Explorer можно изменить различные параметры системы, браузера и реестра, при этом вся доступная информация разделена на категории. Кроме этого, в контекстном меню любого приложения из списка запущенных процессов есть пункт, позволяющий проверить этот процесс на наличие вирусов онлайн. Есть и такая полезная опция, как возможность просмотра истории действий, проведенных на компьютере - открытие/закрытие окон, создание/удаление файлов и т.п.
4) Process Hacker мощный инструмент для осуществления различного рода манипуляций. Простой или древовидный, отображение скрытых процессов и прочие. ими управлять (остановка/запуск/удаление). Конкретные процессы, объединены в специальные группы, а также помечены одним цветом. Process Hacker можно рассматривать как полноценную замену Диспетчеру задач Windows.
Использование функций WinAPI.
К функциям Win32 API для получения информации о выполняющихся в системе процессах относятся функции
CreateToolHelp32Snapshot(), Process32First(), Process32Next(),Thread32First (), Thread32Next(), Module32First(), Module32Next(), Heap32ListFirst(), Heap32ListNext() и некоторые другие. Самая известная из функций Native API для доступа к содержимому многих важных внутренних структур операционной системы, таких как списки процессов, потоков, дескрипторов, драйверов и т. п. – функция NtQuerySystemInformation().
Первый этап получения информации о выполняющихся в системе процессах - получение снимка (snapshot) системы, который содержит информацию о состоянии системы в момент выполнения снимка.
Снимок создается с помощью функции CreateToolHelp32Snapshot (dwFlags, th32ProcessID), первый аргумент определяет, какая информация будет записана в снимок - возможные значения dwFlags приведены в таблице.
TH32CS_Snap(HEAPLIST, PROCESS, THREAD, MODULE, ALL)
Флаг - dwFlags |
Описание |
TH32CS_SnapHEAPLIST |
В снимок включается список куч, принадлежащих указанному процессу |
TH32CS_SnapPROCESS |
В снимок включается список процессов, присутствующих в системе |
TH32CS_SnapTHREAD |
В снимок включается список потоков |
TH32CS_SnapMODULE |
В снимок включается список модулей, принадлежащих указанному процессу |
TH32CS_SnapALL |
В снимок включается список куч, процессов, потоков и модулей |
Второй этап - извлечение из снимка списка процессов. Для выполнения этой операции служат функции:
Process32First
Process32Next Для того, чтобы получить информацию о первом процессе в снимке, необходимо вызвать функцию Process32First. В случае успешного завершения функция возвращает TRUE. Для того, чтобы просмотреть все оставшиеся процессы, нужно вызывать функцию Process32Next до тех пор, пока она не возвратит FALSE.