Нарисуйте и поясните диаграмму состояния процесса.

Активный процесс имеет три состояния:
готовность – все ресурсы могут быть предоставлены, если процесс перейдёт в состояние выполнения;
выполнение – все ресурсы выделены, происходит выполнение команд программы;
ожидание – затребованные ресурсы не могут быть выделены или не завершена операция ввода-вывода.
Что такое делимые и неделимые ресурсы? Приведите примеры.
Различают делимые и неделимые ресурсы. Делимые ресурсы способны к разделению между процессами, а неделимые – не способны к этому. Делимые процессы могут быть одновременно разделяемыми и параллельно разделяемыми. Одновременно разделяемые ресурсы используются двумя и более процессами одновременно, например, оперативная память. Параллельно разделяемые ресурсы используются процессами попеременно. Примером таких ресурсов являются устройства ввода-вывода.
Опишите три ситуации выделения ресурса задаче.
Ресурс может быть выделен задаче операционной системой в трёх случаях:
ресурс свободен и в системе нет запросов на него от задач с более высоким приоритетом;
текущий запрос и ранее выданные запросы позволяют совместное использование ресурса;
ресурс используется задачей с более низким приоритетом и может быть временно у неё отобран.
Что такое одновременное и параллельное (попеременное) разделение ресурсов? Приведите примеры.
В чём особенность оперативной памяти как разделяемого ресурса?
Оперативная память – второй по важности разделяемый ресурс вычислительной системы. От механизма её распределения зависят производительность системы и возможности программистов по созданию своих программ.
Как разделяется внешняя память? В чём особенность разделения памяти как ресурса?
Внешняя память тоже является разделяемым ресурсом, но её особенностью является разделение как дискового пространства, так и доступа к данным. Дисковое пространство может разделяться одновременно и попеременно, а доступ только попеременно.
Как решается вопрос разделения ресурсов с последовательным доступом?
Устройства с последовательным доступом не могут быть разделяемыми ресурсами, т.к. или потребуется выполнение противоречащих друг другу команд, или результаты выполнения двух задач будут перемешаны. Например, принтер, выводящий данные двух задач, перемешает фрагменты выводимых наборов данных, а накопитель на магнитной ленте не сможет выполнить команду записи и одновременно команду перемотки в начало ленты. Можно создать иллюзию разделения таких устройств, создав, например, виртуальный принтер для каждой задачи. Накопленные наборы данных могут быть выведены на реальный принтер один за другим, создав у пользователей иллюзию совместного использования принтера.
Опишите классификацию программных модулей как разделяемых и неразделяемых ресурсов.



Системные
и программные модули являются одним из
видов ресурсов.
Непривилегированные Привилегированные Реентабильные Повторно входимые
Что такое однократно используемые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?
Однократно используемые модули, это модули, которые после загрузки в оперативную память могут быть выполнены только один раз, т.к. при выполнении портится или код модуля, или данные, влияющие на его работу. Такой модуль в принципе не может быть разделяемым ресурсом.
Что такое непривилегированные программные модули? Могут ли они быть разделяемыми ресурсами? Почему?
Непривилегированные модули – обычные программные модули, которые могут быть прерваны во время выполнения. Повторный вызов прерванного модуля может привести к потере данных. Поэтому такой модуль также не может в общем случае считаться разделяемым ресурсом.
Что такое привилегированные программные модули? Могут ли они быть разделяемыми ресурсами?
Привилегированные модули работают с отключённой системой прерываний. Они состоят из головной секции, собственно тела модуля и хвостовой секции. Головная секция отключает прерывания, собственно тело модуля содержит обычный код, хвостовая секция снова включает прерывания. Поэтому модуль всегда выполняется до конца, его повторный вызов не грозит никакими неприятными последствиями, и привилегированный модуль может быть разделяемым ресурсом.
Почему привилегированные программные модули могут быть разделяемыми ресурсами?
Модуль всегда выполняется до конца, его повторный вызов не грозит никакими неприятными последствиями, и привилегированный модуль может быть разделяемым ресурсом.
Что такое реентабельные программные модули? Могут ли они быть разделяемыми ресурсами?
Реентабельные модули допускают прерывание выполнения, однако сохраняют все необходимые данные в свободной памяти как динамические данные или как статические данные в секции памяти, выделенной модулю. Реентабельный модуль, как и привилегированный, состоит из трёх секций. Головная секция является привилегированным модулем и заказывает у операционной системы память для хранения всех промежуточных результатов вычислений. Тело реентабельного модуля работает в непривилегированном режиме и его выполнение может быть прервано в любой момент. После возврата из прерывания модуль продолжает работать, используя сохранённые данные. Хвостовая секция также работает в привилегированном режиме и освобождает память, заказанную головной секцией.
Почему реентабельные модули могут быть разделяемыми ресурсами?
После возврата из прерывания модуль продолжает работать, используя сохранённые данные. Хвостовая секция также работает в привилегированном режиме и освобождает память, заказанную головной секцией.
Что такое повторно входимые программные модули? Могут ли они быть разделяемыми ресурсами? Почему?
Повторно входимый модуль имеет множество точек входа и состоит из множества привилегированных секций, которые нельзя прерывать. Работа любой из них возможна только после завершения работы уже выполняемой секции. Не может быть разделяемым ресурсом.
Что такое мультипрограммный режим работы операционной системы? Поясните временной диаграммой.
Мультипрограммным
режимом называется такой режим работы
операционной системы, в котором
одновременно выполняется две и более
задачи, а процессор переключается с
решения одной задачи на решения других
на время совершения операций, не требующих
его участия.
Почему в мультипрограммном режиме производительность вычислительной системы увеличивается? Поясните временной диаграммой.
В этом режиме на время операций ввода-вывода процессор переключается с решения одной задачи на решение другой. В результате время выполнения задач несколько увеличивается, но общее время ТИ выполнения обеих задач уменьшается, т.е. производительность вычислительной системы увеличивается. Мультипрограммирование является синонимом слова "многопроцессность". При этом подразумевается обособление процессов друг от друга посредством выделения индивидуальных виртуальных адресных пространств в памяти и назначения других ресурсов. (диаграмма выше)
Верно ли утверждение "Т.к. в мультипрограммном режиме производительность вычислительной машины выше, то и время выполнения отдельных процессов в этом режиме меньше, чем в однопрограммном"?
Утверждение неверно, т.к. в результате время выполнения задач несколько увеличивается, но общее время ТИ выполнения обеих задач уменьшается, т.е. производительность вычислительной системы увеличивается.
Что такое мультизадачный режим работы операционной системы?
Поскольку процессы могли содержать разные задачи, то появился многозадачный режим. В мультизадачном режиме в противовес мультипрограммному режиму обеспечивается взаимодействие между вычислениями. Для подчёркивания этой разницы были введены термины "легковесные процессы" (thin), они же потоки выполнения, нити и треды (threads). Легковесными они называются потому, что процессору не требуется для их реализации организовывать полноценную виртуальную машину. Единственно, что имеют легковесные процессы своего, это процессорное время, всё остальное у связанных легковесных процессов общее. Наличие легковесных процессов позволило организовать многопоточное выполнение задач.
"Легковесными процессами" (thin), они же потоки выполнения, нити и треды (threads) они называются потому, что процессору не требуется для их реализации организовывать полноценную виртуальную машину. Единственно, что имеют легковесные процессы своего, это процессорное время, всё остальное у связанных легковесных процессов общее. Наличие легковесных процессов позволило организовать много поточное выполнение задач.
Поток выполнения (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса.
В операционных системах нити являются параллельными потоками выполнения в составе одного процесса. (Некоторые переводчики переводят термин "thread" - "нить" - как "поток".)
Что такое разделение времени?
Разделение времени предусматривает выделение каждой программе, готовой к выполнению, определенного интервала времени (кванта). Программа в течение одного кванта может быть не выполнена до конца, тогда она прерывается в момент окончания кванта и помещается в конец очереди программ. Из начала очереди извлекается другая программа, которой планируется свой квант времени. При этом пользователи, работающие за дисплеями, не ощущают переключение (мультиплексирования) процессора с программы на программу.
Что такое символьные имена?
Программирование на языках высокого уровня предполагает обращение к данным и фрагментам кода программы через некоторый набор символьных имён, заменяющих программисту реальные адреса. Символьные имена, а также виртуальные и физические адреса используются для идентификации команд и переменных.
Что такое логическое адресное пространство?
Всё множество упомянутых имён образует пространство символьных имён или логическое адресное пространство.
Что такое виртуальное адресное пространство?
Виртуальное адресное пространство процесса - это совокупность адресов, которыми может манипулировать программный модуль процесса. Операционная система отображает виртуальное адресное пространство процесса на отведенную процессу физическую память.
Что такое физическое адресное пространство?
Физическое адресное пространство (Physical Address Space) — совокупность всех физических адресов памяти, к которым может обращаться процессор.
Технически любой процессор архитектуры ARM может формировать 32-разрядные, а некоторые процессоры — 40-разрядные физические адреса. Тем не менее, в каждом конкретном случае часть адресов не используется, а поэтому не входит в физическое адресное пространство.
Какую функцию при определении физического адреса данных и команд выполняет система программирования?
Система программирования создаёт виртуальное адресное пространство и преобразует логическое имя в виртуальный адрес.
Какую функцию при определении физического адреса данных и команд выполняет операционная система?
И, наконец, при загрузке программы загрузчиком, входящим в операционную систему, виртуальные адреса пересчитываются в физический адрес реальной ячейки памяти.
Какую особенность имеют программы при полной тождественности виртуального адресного пространства и физической памяти?
Простейшим вариантом является случай полная тождественность виртуального адресного пространства и физической памяти. Второе отображение в этом варианте отпадает, и система программирования генерирует абсолютную двоичную программу, в которой все виртуальные адреса должны точно соответствовать физическим. А это возможно только в случае загрузки программы по строго определённым физическим адресам. Многие модули любой операционной системы обязательно являются абсолютными двоичными программами, которые не могут перемещаться в памяти. Эти программы способствуют работе программ, которые могут перемещаться и загружаться по разным адресам.
Какую особенность имеют программы при полной идентичности виртуального адресного пространства и пространства имён программы?
Второй вариант встречается довольно редко и предусматривает тождественность виртуального адресного пространства пространству имён программы. В этом случае сама операционная система осуществляет отображение логических имён на адресное пространство оперативной памяти. В данном случае отображение и выполнение квалификации имён, занимающей много времени, выполняется при каждом появлении нового имени. Обычно используется в интерпретаторах, заменяющих операционную систему.
Как происходит определение физического адреса по базовому адресу и смещению при загрузке программы?
Третий вариант предусматривает генерацию компилятором или интерпретатором относительных адресов, являющихся смещением относительно некоторого базового адреса. При загрузке такой программы задаётся базовый адрес, и перемещающий загрузчик программы пересчитывает смещения в физические адреса оперативной памяти.
Как физический адрес определятся при выполнении программы, если загрузчик программы не участвует в его определении?
Наиболее эффективен четвёртый вариант, в котором процессор на основании базового адреса и виртуальных адресов-смещений рассчитывает физический адрес реальной ячейки памяти.
Что такое простое непрерывное распределение памяти?
Для операционных систем, не поддерживающих режим мультипрограммирования, часто применяется простое непрерывное распределение памяти, которое является первой схемой распределения памяти. Это распределение предусматривает выделение в памяти трёх основных областей:
· области, занимаемой операционной системой;
· области, занимаемой задачей;
· свободной области памяти.
Для обеспечения наибольшего объёма памяти, отводимой для задач, в области, отведённой для операционной системы должны находиться самые необходимые модули операционной системы, которые называются ядром. Остальные могут подгружаться по мере необходимости. Наличие разных внешних устройств требует выделения как специальных областей памяти под буферы внешних устройств, так и памяти под их драйверы. Поэтому, объём памяти, реально занимаемый операционной системой, имеет для различных комплексов переменный размер. Максимальный размер области, занимаемой операционной системой может быть предсказан. Поэтому память, использующаяся задачами, и свободная память образуют непрерывные области. Нет необходимости жёстко привязывать виртуальные адреса программ к реальным физическим адресам на стадии программирования. Эту привязку выполняет загрузчик программы.
Какие недостатки имеет простое непрерывное распределение памяти?
Достоинством такого распределения памяти является отсутствие необходимости защищать какие-либо её области, кроме области модулей операционной системы и областей, занимаемых программами. Недостатком является потери процессорного времени и потери памяти, т.к. не всякая программа использует всю отведённую для неё память.
Что такое распределение памяти с перекрытием?
Распределение памяти, использующее оверлейные модули, называется распределением с перекрытием.
Что такое оверлейные модули?
В практике встречаются случаи создания программ, общий объём модулей которой превышает размер оперативной памяти, отводимой для хранения кодов программ и данных. В этом случае программа создаётся из множества модулей. Часть их находится в памяти постоянно в течение времени работы программы. Часть модулей находится в памяти программы только во время их исполнения, а по мере завершения заменяется другими. Такие модули называются оверлейными.
Что такое распределение памяти статическими разделами?
Это распределение памяти предусматривает разделение памяти на разделы с фиксированными границами, осуществляемое единовременно при загрузке операционной системы или программистом во время работы машины. В нулевом разделе размещается ядро операционной системы и транзитные модули операционной системы, т.е. модули, подгружаемые с системного диска.