Вопрос 1
22. Дайте определение термину «Исключительная ситуация». Приведите примеры исключений.
При работе программ возникают так называемые исключительные ситуации, когда дальнейшее нормальное выполнение приложения становится невозможным. Причиной исключительных ситуаций могут быть как ошибки в программе, так и неправильные действия пользователя, неверные данные и т.д.
Обычные конструкции, необходимые для проверки данных, делают более-менее серьезную программу сложночитабельной. Более того, программисту очень сложно отследить все исключительные ситуации.
Здесь на помощь программисту приходят такие средства языка, как:
− защищенные блоки (try-блоки) и перехваты исключений (catch-блоки);
− инициализация исключений (инструкция throw).
Блок try-catch
Простейший формат защищенного блока имеет вид:
try {операторы защищенного блока}
catch(...) {обработчик ошибочной ситуации}
Работает эта конструкция так: выполняются инструкции, входящие в состав блока try (защищенный блок). Если при их выполнении исключение не возбуждается (в C++ чаще используется термин «выброс исключения»), то блок catch пропускается. При выбросе исключения выполнение защищенного блока прекращается, и начинают работать инструкции, записанные в блоке catch.
Основной смысл этих инструкций – корректная обработка исключительной ситуации. Кроме того, в блок catch имеет смысл поместить код, который освобождает ресурсы, захваченные выполнившимися инструкциями из блока try. После окончания работы блока catch исключение считается обработанным, и управление передается на первую инструкцию, следующую за конструкцией try … catch.
Вопрос 2
43. Перечислите составляющие пространства имён.
Пространство имён (англ. namespace) — некоторое множество, под которым подразумевается модель, абстрактное хранилище или окружение, созданное для логической группировки уникальных идентификаторов (то есть имён).
Идентификатор, определённый в пространстве имён, ассоциируется с этим пространством. Один и тот же идентификатор может быть независимо определён в нескольких пространствах. Таким образом, значение, связанное с идентификатором, определённым в одном пространстве имён, может иметь (или не иметь) такое же значение, как и такой же идентификатор, определённый в другом пространстве. Языки с поддержкой пространств имён определяют правила, указывающие, к какому пространству имён принадлежит идентификатор (то есть его определение).
Например, Андрей работает в компании X, а ID (сокр. от англ. Identifier — идентификатор) его как работника равен 123. Олег работает в компании Y, а его ID также равен 123. Единственное (с точки зрения некой системы учёта), благодаря чему Андрей и Олег могут быть различимы при совпадающих ID, это их принадлежность к разным компаниям. Различие компаний в этом случае представляет собой систему различных пространств имён (одна компания — одно пространство). Наличие двух работников в компании с одинаковыми ID представляет большие проблемы при их использовании, например, по платёжному чеку, в котором будет указан работник с ID 123, будет весьма затруднительно определить работника, которому этот чек предназначается.
Вопрос 3
65. Объясните механизм обработки прерывания независимо от архитектуры вычислительной системы.
Не будет преувеличением сказать, что идея прерываний была предложена в середине 50-х годов и внесла самый значительный вклад в развитие вычислительной техники. Основной целью введения прерываний является реализация асинхронных операций и распараллеливание работы отдельных устройств вычислительного комплекса.
Поэтому механизм прерывания реализован в аппаратном и программном обеспечении. Структура системы прерываний (в зависимости от аппаратной архитектуры) может быть очень разной, но все они имеют одну общую черту.
Поэтому в качестве обработки прерываний архитектурная вычислительная система включает в себя следующие, независимо от архитектуры вычислительной системы:
1. Установить факт прерывания (приема сигнала прерывания) и идентифицировать прерывание (в операционной системе его можно повторить на шаге 4).
2. Сохраняет состояние приостановленного процесса. Состояние процесса может включать в себя, в первую очередь, значение счетчика команд, содержимое регистра процессора и спецификации режима (например, пользовательский режим или привилегированный режим) и другую информацию.
3. Управление передается аппаратным обеспечением подпрограмме обработки прерываний.
Вопрос 4
90. Объясните, какие последовательные вычислительные процессы называются параллельными и почему.
Основной особенностью многопоточных программ является то, что в их среде параллельно развиваются несколько (последовательных) вычислительных процессов, и с точки зрения внешних наблюдателей эти последовательные вычислительные процессы выполняются одновременно ("параллельно").
При этом под параллельным процессом понимается не только процесс, развивающийся одновременно на разных процессорах, каналах и устройствах ввода-вывода, но и последовательный процесс, совместно использующий центральный процессор и частично перекрывающийся во времени при его выполнении.
Любая многопрограммная ОС вместе с параллельным процессом может быть представлена в виде ряда последовательных вычислений, которые, с одной стороны, переходят из одного состояния в другое, конкурируя за ресурсы, а с другой стороны, действуют практически независимо друг от друга, но при этом устанавливая различные типы соединений (посылая сообщения и синхронизируя сигналы). Таким образом, образуется единая система.
Поэтому параллельным называется последовательный вычислительный процесс, который одновременно находится в активном состоянии. Два параллельных процесса могут быть независимыми (независимый процесс) или интерактивными (кооперативный процесс).