- •Стадии процесса проектирования
- •Bilet 28 vopros 2 2. Задачи ос по управлению файлами и устройствами.
- •Организация параллельной работы устройств ввода-вывода и процессора
- •Поддержка синхронных и асинхронных операций ввода-вывода
- •Bilet 30 vopros 2 2. Основы мультипрограммирования.
- •Bilet 31 vopros 1 1. Базовые канонические структуры алгоритмов.
- •Bilet 32 vopros 1 1. Основные принципы структурного программирования.
- •Bilet 33 vopros 1 1. Проектирование программ по структурам данных.
- •Bilet 33 vopros 2 2. Защищенные и открытые данные и методы.
- •Bilet 36 vopros 1 1. Общая постановка и виды задач принятия решений.
bilet 18 vopros 1 1. Уровни моделирования. Общая характеристика и особенности. Моделирование на микроуровне. Обобщенная модель и моделирование тепловых систем (краевая задача для уравнения теплопроводности).
bilet 21 vopros 1 1. Численное решение задачи Коши для обыкновенных дифференциальных уравнений. Метод Эйлера. Одношаговые и многошаговые методы.
Численные методы решения задачи Коши для ОДУ первого порядка
Постановка задачи. Найти решение ОДУ первого порядка
на
отрезке
при условии
![]()
При
нахождении приближенного решения будем
считать, что вычисления проводятся с
расчетным шагом
, расчетными узлами служат точки
промежутка [x0, xn].
Целью является построение таблицы:

т.е. ищутся приближенные значения y в узлах сетки.
Интегрируя
уравнение на отрезке
,
получим
![]()
Вполне естественным (но не единственным) путем получения численного решения является замена в нем интеграла какой–либо квадратурной формулой численного интегрирования. Если воспользоваться простейшей формулой левых прямоугольников первого порядка

то получим явную формулу Эйлера:
![]()
Порядок расчетов:
![]()
Численный метод решения задачи Коши называется одношаговым, если для вычисления решения в точке x0 + h используется информация о решении только в точке x0.
Простейший одношаговый метод численного решения задачи Коши — метод Эйлера. В методе Эйлера величины yi вычисляются по формуле:
yi+1 = yi + h·f(xi, yi):
y' = f(x, y), y(a) = y0 , x ∈ [a, b],
xi = a + ih, h = (b-a)/N, i = 0,1 , 2, ..., N,
y(xi)≈ yi ,
yi+1 = yi + h·f(xi, yi).
Для погрешности метода Эйлера на одном шаге справедлива оценка
![]()
а для оценки погрешности решения на всём отрезке [a, b] справедливо
![]()
За оценку погрешности вычислений с шагом h/2 принимают величину
![]()
Если соединить точки (xi, yi) прямолинейными отрезками, получим ломаную Эйлера — ломаную линию, каждое звено которой с началом в точке (xi, yi) имеет угловой коэффициент, равный f(xi, yi).
Многошаговые методы решения задачи Коши характеризуются тем, что решение в текущем узле зависит от данных не в одном предыдущем узле, как это имеет место в одношаговых методах, а от нескольких предыдущих узлах.
Наиболее распространённым примером таких методов является метод Адамса.
bilet 23 vopros 1 1. Структура процесса проектирования. Стадии проектирования.
Иерархическая структура проектов
При использовании блочно-иерархического подхода к проектированию представление о проектируемой системе или объекте (описание объекта, спецификация объекта) расчленяют на иерархические уровни.

На верхнем уровне используют наименее детализированное представление, отражающее только самые общие черты и особенности проектируемой системы. На следующих уровнях степень подробности описания возрастает, при этом рассматриваются уже отдельные блоки системы, но с учетом воздействий на каждый из них его соседей. Такой подход позволяет на каждом иерархическом уровне формулировать задачи приемлемой сложности, поддающиеся решению с помощью имеющихся средств проектирования. Разбиение на уровни должно быть таким, чтобы документация на блок любого уровня была обозрима и воспринимаема одним человеком.
Блочно-иерархический или декомпозиционный подход к описанию объекта и к последующему его проектированию основан на разбиении сложной задачи большой размерности на последовательно и (или) параллельно решаемые группы задач малой размерности, что существенно сокращает требования к используемым вычислительным ресурсам или время решения задач.
Иерархическим уровням описаний (спецификаций) объектов соответствуют иерархические уровни проектирования. Под уровнем проектирования понимается совокупность описаний объекта на этом уровне совместно с постановками задач, методами получения описаний и решения возникающих проектных задач.
Список иерархических уровней в каждом приложении или области может быть специфичным, но для большинства приложений характерно следующее наиболее крупное выделение уровней:
— системный уровень, на котором решают наиболее общие задачи проектирования систем, машин и процессов; результаты проектирования представляют в виде структурных и компоновочных схем, генеральных планов, схем размещения оборудования, диаграмм потоков данных и т.п.;
— макроуровень, на котором проектируют отдельные устройства, узлы машин и приборов; результаты проектирования представляют в виде функциональных, принципиальных и кинематических схем, сборочных чертежей узлов и т.п.;
— микроуровень, на котором проектируют отдельные детали и элементы машин и приборов.
В зависимости от последовательности решения задач различных иерархических уровней различают нисходящее, восходящее и смешанное проектирование (стили проектирования). Последовательность решения задач от нижних уровней к верхним характеризует восходящее проектирование, обратная последовательность решения приводит к нисходящему проектированию, в смешанном стиле имеются элементы как восходящего, так и нисходящего проектирования. В большинстве случаев для сложных систем предпочитают нисходящее проектирование. При наличии заранее спроектированных составных элементов (блоков, узлов) можно говорить о смешанном проектировании.
При нисходящем проектировании присутствует неопределенность и нечеткость исходных данных (так как еще не спроектированы компоненты). При восходящем проектировании имеется неопределённость и нечеткость исходных требований (поскольку техническое задание имеется на всю проектируемую систему, а не на ее части). Это обуславливает необходимость прогнозирования недостающих данных с последующим их уточнением, т.е. последовательного приближения к окончательному решению (итерационность проектирования).
Наряду с декомпозицией описаний объектов на иерархические уровни применяют разделение представлений о проектируемых объектах на аспекты.
Аспект описания (страта) — описание системы или ее части с некоторой заранее оговоренной точки зрения, определяемой функциональными, физическими или иного типа отношениями между свойствами и элементами системы.
Аспектов описания может быть много, но обычно выделяют следующие:
— функциональный,
— информационный,
— структурный,
— поведенческий (процессный).
Функциональное описание характеризует функции системы; его чаще всего представляют в виде функциональных схем.
Информационное описание включает в себя основные понятия предметной области (описания сущностей), словесное пояснение или числовые значения характеристик (атрибутов) объектов, а также описание связей между этими понятиями и характеристиками. Информационные описания можно представлять графически (в виде графов, диаграмм сущность-отношение), в виде таблиц или списков.
Структурное описание характеризует морфологию (строение) системы. В этом описании указываются составные части системы и соединения между ними. Это описание может быть представлено структурными схемами, а также различного рода конструкторской документацией.
Поведенческое описание характеризует процессы функционирования (алгоритмы работы) системы и (или) технологические процессы создания системы.
Иногда аспекты описаний связывают с подсистемами объекта проектирования, функционирование которых основано на различных физических процессах.
Стадии процесса проектирования
Стадии процесса проектирования – это наиболее крупные части процесса проектирования после разделения его во времени. Близким к определению стадии, но менее четко оговоренным понятием, является понятие этапа проектирования.
Стадии можно объединить в две группы:
I. Внешнее проектирование.
Эта группа обычно включает только одну стадию:
1. Разработка ТЗ на проектирование.
II. Внутреннее проектирование.
В эту группу входят непосредственно этапы проектирования данного объекта:
-
Разработка технического предложения (стадия НИР, предпроектные исследования).
-
Стадия эскизного проекта (стадия ОКР).
-
Стадия технического проекта.
-
Стадия рабочего проекта.
-
Испытание опытных образцов или опытных партий.
По мере перехода от стадии к стадии степень подробности и тщательность проработки проекта возрастают, и рабочий проект уже должен быть вполне достаточным для изготовления опытных или серийных образцов.
Стадии подразделяются на составные части, которые называются проектными процедурами. Примеры проектных процедур: анализ кинематики, моделирование переходного процесса, оптимизация параметров объекта проектирования, подготовка деталировочных чертежей и др.
Проектные процедуры, в свою очередь, делятся на более мелкие компоненты – проектные операции. Примеры проектных операций: выбор или расчёт внешних воздействий на объект проектирования, моделирование полей напряжений и деформаций, представление результатов моделирования в графической и текстовой форме.
Таким образом, проектирование сводится к выполнению некоторой последовательности проектных процедур и проектных операций. Такая последовательность называется маршрутом проектирования.
Bilet 28 vopros 2 2. Задачи ос по управлению файлами и устройствами.
Подсистема ввода-вывода (Input-Output Subsystem) мультипрограммной ОС при обмене данными с внешними устройствами компьютера должна решать ряд общих задач, из которых наиболее важными являются следующие:
-
организация параллельной работы устройств ввода-вывода и процессора;
-
согласование скоростей обмена и кэширование данных;
-
разделение устройств и данных между процессами;
-
обеспечение удобного логического интерфейса между устройствами и остальной частью системы;
-
поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера;
-
динамическая загрузка и выгрузка драйверов;
-
поддержка нескольких файловых систем;
-
поддержка синхронных и асинхронных операций ввода-вывода.
Организация параллельной работы устройств ввода-вывода и процессора
Организация параллельной работы устройства ввода-вывода и процессора. Каждое устройство ввода-вывода – диск, принтер, терминал – имеет блок управления (контроллер устройства). Контроллер взаимодействует с драйвером – системным программным модулем, предназначенным для управления устройством. Под управлением контроллера устройство может работать некоторое время автономно от команд ОС. Подсистема ввода-вывода должна обеспечить работу – запуск и приостановку разнообразных драйверов, обеспечив приемлемое время реакции каждого драйвера на независимые события контроллера. С другой стороны, необходимо минимизировать загрузку процессора задачами ввода-вывода, оставив как можно больше процессорного времени на выполнение пользовательских потоков.
Данная задача является классической задачей планирования систем реального времени и обычно решается на основе многоуровневой приоритетной схемы обслуживания по прерываниям. Для обеспечения приемлемого уровня реакции все драйверы (или части драйверов) распределяются по нескольким приоритетным уровням в соответствии с требованиями ко времени реакции и временем использования процессора. Для реализации приоритетной схемы обычно задействуется общий диспетчер прерываний ОС.
Согласование скоростей обмена и кэширование данных
Согласование скоростей обмена и кэширования данных. При обмене информации в системе возникает задача согласования скорости выполняемых процессов. Согласование скорости осуществляется за счет буферизации данных в оперативной памяти и синхронизации доступа процессов к буферу. В некоторых случаях свободной оперативной памяти недостаточно для буферизации данных. Для размещения данных в буфере используются специальные файлы – спул-файлы. Другой способ – использование буферной памяти в контроллерах внешних устройств. Например, использование памяти, устанавливаемой на видеоадаптерах.
Разделение устройств и данных между процессами
Разделение устройств и данных между процессами. Устройства ввода-вывода могут предоставляться процессам в монопольном и разделяемом режимах. Задача ОС обеспечить контроль доступа к данным ресурсам системы путем проверки прав пользователя, от имени которых выполняется процесс. Операционная система имеет возможность контролировать доступ не только к устройству в целом, но и к отдельным порциям данных. При разделении устройства между процессами возникает необходимость в разграничении порции данных от двух процессов. Для хранения очереди заданий применяется спул-файл, который синхронизирует скорости работы устройства и оперативной памяти.
Обеспечение удобного логического интерфейса между устройствами и остальной частью системы
Обеспечение удобного логического интерфейса между устройствами и остальной частью системы. Разнообразие устройств ввода-вывода делает актуальной задачу создания экранирующего интерфейса между периферийными устройствами и приложениями. Современные ОС поддерживают файловую модель работы устройств, при котором устройства представляются набором байт, с которыми работают посредством унифицированных системных вызовов (read, write). Для детализации конкретных свойств используются специфические модели устройств конкретного типа – графическая подсистема, принтер, сетевые адаптеры и т.д.
Поддержка широкого спектра драйверов и простота включения нового драйвера в систему
Поддержка широкого спектра драйверов с возможностью простого включения в систему нового драйвера. Достоинством подсистемы ввода-вывода операционной системы является разнообразие устройств, поддерживаемых данной ОС. Для создания драйверов необходимо наличие удобного и открытого интерфейса между драйверами и другими компонентами ОС. Драйвер взаимодействует, с одной стороны, с модулями ядра ОС (модулями подсистемы ввода-вывода, модулями системных вызовов, модулями подсистем управления процессами и памятью и т. д.), а с другой стороны — с контроллерами внешних устройств. Поэтому существуют два типа интерфейсов: интерфейс «драйвер-ядро» (Driver Kernel Interface, DKI) и интерфейс «драйвер-устройство» {Driver Device Interface, DDF). Интерфейс «драйвер-ядро» должен быть стандартизован в любом случае, а интерфейс «драйвер-устройство» имеет смысл стандартизировать тогда, когда подсистема ввода-вывода не разрешает драйверу непосредственно взаимодействовать с аппаратурой контроллера, а выполняет эти операции самостоятельно. Экранирование драйвера от аппаратуры является весьма полезной функцией, так как драйвер в этом случае становится независимым от аппаратной платформы.
Обычно подсистема ввода-вывода поддерживает большое количество системных функций, которые драйвер может вызывать для выполнения некоторых типовых действий. Примерами могут служить упомянутые операции обмена с регистрами контроллера, ведение буферов для промежуточного хранения данных ввода-вывода, синхронизация работы нескольких драйверов, копирование данных из пользовательского пространства в пространство системы и т. д.
Динамическая загрузка и выгрузка драйверов
Динамическая загрузка и выгрузка драйверов. Другой проблемой работы с устройствами ввода-вывода является проблема включения драйвера в состав работающей ОС – динамическая загрузка/выгрузка драйверов. Способность системы автоматически загружать и выгружать из оперативной памяти требуемый драйвер повышает универсальность ОС. Альтернативой динамической загрузке драйверов при изменении текущей конфигурации внешних устройств является повторная компиляция кода ядра с требуемым набором драйверов. Пример – некоторые версии UNIX.
Поддержка нескольких файловых систем
Диски представляют особый род периферийных устройств, так как именно на них хранится большая часть как пользовательских, так и системных данных. Данные на дисках организуются в файловые системы, и свойства файловой системы во многом определяют свойства самой ОС — ее отказоустойчивость, быстродействие, максимальный объем хранимых данных. Популярность файловой системы часто приводит к ее миграции из «родной» ОС в другие операционные. Ввиду этого поддержка нескольких популярных файловых систем для подсистемы ввода-вывода также важна, как и поддержка широкого спектра периферийных устройств. Важно также, чтобы архитектура подсистемы ввода-вывода позволяла достаточно просто включать в ее состав новые типы файловых систем, без необходимости переписывания кода. Обычно в операционной системе имеется специальный слой программного обеспечения, отвечающий за решение данной задачи.
