Автор: Пользователь скрыл имя, 12 Января 2015 в 14:44, контрольная работа
API (Application Programming Interface - интерфейс прикладных программ) - это множество функций, организованных, обычно, в виде DLL (Dynamic Link Library – динамически подключаемые библиотеки). Функции API позволяют организовать интерфейс между прикладной программой и средой, в которой работает эта программа. Вызов функций API позволяет программе получать доступ к ресурсам среды и управлять ее работой.
Работа с мьютексами
• Создание
HANDLE CreateMutex( … );
• Получение доступа (открытие)
HANDLE OpenMutex( … ); // необходимо знать имя мьютекса
• Освобождение
BOOL ReleaseMutex(HANDLE hMutex);
• Отказ от мьютекса (автоматическое освобождение) при завершении потока, захватившего мьютекс
21. Понятие взаимоблокировки. Методика исключения взаимоблокировок.
Взаимная блокировка потоков (deadlock) – ситуация в многозадачной среде, при которой несколько потоков находятся в состоянии бесконечного ожидания ресурсов, захваченных этими же потоками.
Например, имеется два потока (или процесса), один из которых занимает некоторый ресурс A, а другой – ресурс B и оба каким-то образом с ними работают (рис. 18). По прошествии некоторого времени первому потоку для завершения своей работы с ресурсом A требуется получить доступ к занятому вторым потоком ресурсу B. Аналогичная ситуация у второго потока – для завершения его работы с ресурсом B ему необходимо получить доступ к занятому первым потоком ресурсу A. Оба потока в данном случае будут находиться в режиме ожидания доступа к нужному ресурсу. Если время ожидания никак не ограничено, то оно будет бесконечным и вызовет «зависание» программы.
Рисунок 18 – Взаимная блокировка потоков
Подобная ситуация может быть решена введением одной критической секции, которая будет защищать оба ресурса: и ресурс A и ресурс B.
22. Каналы (pipes). Понятие, назначение, свойства, сценарий использования. Именованные и неименованные каналы.
Канал (Pipe) – это коммуникационный шлюз с двумя «концами», через который можно организовать обмен данными между процессами.
Различают именованные и неименованные каналы:
• Неименованные каналы (anonymous pipe)
• Именованные каналы (named pipe)
23. «Почтовые ящики» (mailslots). Понятие, назначение, свойства, сценарий использования.
Почтовый ящик (mailslot) – это механизм однонаправленного межпроцессного взаимодействия(IPC), используемый обычно для широковещательной рассылки сообщений внутри домена. Данные сообщений почтового ящика могут быть в любой форме, но размер любого из сообщений не может превышать 424 байта при передаче между компьютерами. (свыше используйте именованные каналы, либо Windows-сокеты). Mailslots – временные файлы. Когда все дескрипторы почтового ящика закрываются, то он и все содержащиеся в нем данные – удаляются.
Для передачи сообщений используется протокол User Datagram Protocol (UDP)
• негарантированная доставка сообщений
• высокая скорость передачи сообщений
Приложения могут сохранять сообщения в mailslot’е. Владелец mailslot’а может получать сообщения, которые хранятся в нем. Эти сообщения, как правило, посылаются по сети определенному компьютеру или всем компьютерам определенного домена (группа рабочих станций и серверов, разделяющих единое (доменное) имя).
Взаимодействие через Mailslots
• Mailslot-сервер
• Mailslot-клиент
Сценарий использования:
24. Сокеты. Организация взаимодействия.
Windows-сокеты (Windows Sockets, Winsock) – это интерфейс между прикладным и транспортным уровнем хоста, который позволяет организовать передачу данных по сети в обоих направлениях и широковещательную рассылку сообщений.
• Работает на основе протокола TCP (Transmission Control Protocol, протокол управления передачей)
гарантированная доставка сообщений
• Сокет - это не объект ядра
25. Транслятор, компилятор, интерпретатор. Псевдокод и машинный код. Понятие JIT-компиляции.
Транслятор – это программа, которая переводит входной текст на исходном (входном) языке в эквивалентный текст на результирующем (выходном) языке. Исходный текст должен удовлетворять синтаксическим и семантическим требованиям входного языка. Результирующий текст также строится по синтаксическим правилам выходного языка. При этом важным требованием в определении транслятора является семантическая эквивалентность входного и выходного текста.
Компилятор – это транслятор, который осуществляет перевод текста программы, написанного на некотором языке программирования, в эквивалентный машинный код или программу на языке низкого уровня (например, на языке ассемблера).
Интерпретатор – это транслятор, который анализирует (транслирует) входную программу на исходном языке и выполняет (интерпретирует) ее. Анализ и исполнение входной программы осуществляется, как правило, построчно (или покомандно). В отличие от трансляторов интерпретаторы не порождают результирующую программу (и вообще какого-либо результирующего кода) – и в этом принципиальная разница между ними. Результатом работы интерпретатора будет результат, заданный смыслом исходной программы.
Псевдокод (байт-код) – машинно-независимый код низкого уровня, генерируемый компилятором. Основное назначение псевдокода – абстрагирование от конкретной процессорной архитектуры (системы команд). Большинство инструкций псевдокода эквивалентны одной или нескольким командам процессора.
Динамическая компиляция (Just-in-time compilation, JIT) – трансляция псевдокода в машинный код непосредственно во время выполнения программы, инструкции которой записаны на некотором псевдоязыке. Такая технология позволяет исполнять один и тот же код на разных платформах. Такое же преимущество дают и интерпретируемые языки, поскольку псевдокод более низкоуровневый, его эффективность значительно выше. Just-in-time (JIT) компилятор транслирует псевдокод в машинный код непосредственно во время выполнения программы (динамическая компиляция).
26. Структура .NET Framework. Понятие и назначение CLR. Понятие IL. Отличие IL от машинного кода.
.NET Framework - платформа для разработки программного обеспечения
.NET Framework состоит из двух частей: общеязыковой исполняющей среды (Common Language Runtime, CLR) и библиотеки классов (Framework Class Library, FCL). CLR предоставляет модель программирования, используемую во всех типах приложений. FCL представляет объектно-ориентированный API-интерфейс, используемый всеми моделями приложений.
CLR тесно связана с типами. Типы представляют определенную функциональность приложениям и компонентам. Они являются механизмом, позволяющим коду, написанному на одном языке программирования, взаимодействовать с кодом, написанном на другом. Поскольку типы являются основой CLR, Microsoft создала формальную спецификацию – общую систему типов (Common Type System, CTS), описывающую определение типов и их поведение.
IL (Intermediate Language) — код на специальном языке, напоминающим ассемблер, но написанном для .NET. В него преобразуется код из других языков верхнего уровня.
27. Управляемый модуль. Формат управляемого модуля. Процесс загрузки и исполнения управляемого модуля.
стандартный переносимый исполняемый файл (portable executable, PE), который требует для своего выполнения CLR
Формат управляемого модуля
Процесс загрузки и исполнения управляемого модуля
• Анализ заголовка
• Запуск
28. DLL. Понятие, назначение, сценарии использования. Статическое и динамическое подключение, их отличие. Точка входа в Win32 DLL: назначение.
Динамические подключаемые библиотеки (Dynamic Link Libraries, DLLs)– являются хранилищем общедоступных ресурсов и функций.
Файлы, составляющие основу Win32, - а также файлы различных драйверов, драйверы мониторов и принтеров – все это динамические подключаемые библиотеки. Внешний интерфейс может быть один, но файл может видоизменяться. Данный механизм позволяет разрабатывать библиотеки, которые могут быть использованы в нескольких проектах.
Подключения
• Статическое подключение
• Динамическое подключение
DLLMain() – функция для обработки событий загрузки и выгрузки DLL, в которую передается информация об осуществляемом действии.
29. Сборки (assemblies). Декларация сборки. Многофайловые сборки. Подпись сборок. Глобальный кэш сборок (GAC).
Сборка (assembly) - набор из одного или нескольких файлов с определениями типов и файлами ресурсов. Один из файлов сборки выбирают для хранения ее декларации. Декларация (manifest) – это еще один набор таблиц метаданных, которые в основном содержат имена файлов, составляющих сборку. Эти таблицы также описывают версию и региональные стандарты сборки, ее издателя, общедоступные экспортируемые типы.
Многофайловые сборки
• Плюсы
• Минусы
Подпись сборки
• Уникальная идентификация сборки:
Строгие имена позволяют уникально идентифицировать сборку:
MyLib Version=1.0.8123.0 Culture=neutral PublicKeyToken=b77a5c561934e89
Глобальный кэш сборок (GAC)
• Глобальный кэш сборок (global assembly cache, GAC)
Место расположения совместно используемых подписанных сборок
%SystemRoot%\Assembly (обычно, C:\Windows\Assembly)
GACUtil.exe (при разработки, тестировании)
MSI (для развертывания на машине пользователя)