Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[2 курс] Вопросы к экзамену Операционные системы.docx
Скачиваний:
62
Добавлен:
20.08.2020
Размер:
304.8 Кб
Скачать
  1. Что такое легковесные процессы? 73. Что такое потоки выполнения? 74. Что такое нити? 75. Что такое треды?

"Легковесными процессами" (thin), они же потоки выполнения, нити и треды (threads) они называются потому, что процессору не требуется для их реализации организовывать полноценную виртуальную машину. Единственно, что имеют легковесные процессы своего, это процессорное время, всё остальное у связанных легковесных процессов общее. Наличие легковесных процессов позволило организовать много поточное выполнение задач.

Поток выполнения (тред; от англ. thread — нить) — наименьшая единица обработки, исполнение которой может быть назначено ядром операционной системы. Реализация потоков выполнения и процессов в разных операционных системах отличается друг от друга, но в большинстве случаев поток выполнения находится внутри процесса.

В операционных системах нити являются параллельными потоками выполнения в составе одного процесса. (Некоторые переводчики переводят термин "thread" - "нить" - как "поток".)

  1. Что такое разделение времени?

Разделение времени предусматривает выделение каждой программе, готовой к выполнению, определенного интервала времени (кванта). Программа в течение одного кванта может быть не выполнена до конца, тогда она прерывается в момент окончания кванта и помещается в конец очереди программ. Из начала очереди извлекается другая программа, которой планируется свой квант времени. При этом пользователи, работающие за дисплеями, не ощущают переключение (мультиплексирования) процессора с программы на программу.

Управление памятью

  1. Что такое символьные имена?

Программирование на языках высокого уровня предполагает обращение к данным и фрагментам кода программы через некоторый набор символьных имён, заменяющих программисту реальные адреса. Символьные имена, а также виртуальные и физические адреса используются для идентификации команд и переменных.

  1. Что такое логическое адресное пространство?

Всё множество упомянутых имён образует пространство символьных имён или логическое адресное пространство.

  1. Что такое виртуальное адресное пространство?

Виртуальное адресное пространство процесса - это совокупность адресов, которыми может манипулировать программный модуль процесса. Операционная система отображает виртуальное адресное пространство процесса на отведенную процессу физическую память.

  1. Что такое физическое адресное пространство?

Физическое адресное пространство (Physical Address Space) — совокупность всех физических адресов памяти, к которым может обращаться процессор.

Технически любой процессор архитектуры ARM может формировать 32-разрядные, а некоторые процессоры — 40-разрядные физические адреса. Тем не менее, в каждом конкретном случае часть адресов не используется, а поэтому не входит в физическое адресное пространство.

  1. Какую функцию при определении физического адреса данных и команд выполняет система программирования?

Система программирования создаёт виртуальное адресное пространство и преобразует логическое имя в виртуальный адрес.

  1. Какую функцию при определении физического адреса данных и команд выполняет операционная система?

И, наконец, при загрузке программы загрузчиком, входящим в операционную систему, виртуальные адреса пересчитываются в физический адрес реальной ячейки памяти.

  1. Какую особенность имеют программы при полной тождественности виртуального адресного пространства и физической памяти?

Простейшим вариантом является случай полная тождественность виртуального адресного пространства и физической памяти. Второе отображение в этом варианте отпадает, и система программирования генерирует абсолютную двоичную программу, в которой все виртуальные адреса должны точно соответствовать физическим. А это возможно только в случае загрузки программы по строго определённым физическим адресам. Многие модули любой операционной системы обязательно являются абсолютными двоичными программами, которые не могут перемещаться в памяти. Эти программы способствуют работе программ, которые могут перемещаться и загружаться по разным адресам.

  1. Какую особенность имеют программы при полной идентичности виртуального адресного пространства и пространства имён программы?

Второй вариант встречается довольно редко и предусматривает тождественность виртуального адресного пространства пространству имён программы. В этом случае сама операционная система осуществляет отображение логических имён на адресное пространство оперативной памяти. В данном случае отображение и выполнение квалификации имён, занимающей много времени, выполняется при каждом появлении нового имени. Обычно используется в интерпретаторах, заменяющих операционную систему.

  1. Как происходит определение физического адреса по базовому адресу и смещению при загрузке программы?

Третий вариант предусматривает генерацию компилятором или интерпретатором относительных адресов, являющихся смещением относительно некоторого базового адреса. При загрузке такой программы задаётся базовый адрес, и перемещающий загрузчик программы пересчитывает смещения в физические адреса оперативной памяти.

  1. Как физический адрес определятся при выполнении программы, если загрузчик программы не участвует в его определении?

Наиболее эффективен четвёртый вариант, в котором процессор на основании базового адреса и виртуальных адресов-смещений рассчитывает физический адрес реальной ячейки памяти.

  1. Что такое простое непрерывное распределение памяти?

Для операционных систем, не поддерживающих режим мультипрограммирования, часто применяется простое непрерывное распределение памяти, которое является первой схемой распределения памяти. Это распределение предусматривает выделение в памяти трёх основных областей:

· области, занимаемой операционной системой;

· области, занимаемой задачей;

· свободной области памяти.

Для обеспечения наибольшего объёма памяти, отводимой для задач, в области, отведённой для операционной системы должны находиться самые необходимые модули операционной системы, которые называются ядром. Остальные могут подгружаться по мере необходимости. Наличие разных внешних устройств требует выделения как специальных областей памяти под буферы внешних устройств, так и памяти под их драйверы. Поэтому, объём памяти, реально занимаемый операционной системой, имеет для различных комплексов переменный размер. Максимальный размер области, занимаемой операционной системой может быть предсказан. Поэтому память, использующаяся задачами, и свободная память образуют непрерывные области. Нет необходимости жёстко привязывать виртуальные адреса программ к реальным физическим адресам на стадии программирования. Эту привязку выполняет загрузчик программы.

  1. Какие недостатки имеет простое непрерывное распределение памяти?

Достоинством такого распределения памяти является отсутствие необходимости защищать какие-либо её области, кроме области модулей операционной системы и областей, занимаемых программами. Недостатком является потери процессорного времени и потери памяти, т.к. не всякая программа использует всю отведённую для неё память.

  1. Что такое распределение памяти с перекрытием?

Распределение памяти, использующее оверлейные модули, называется распределением с перекрытием.

  1. Что такое оверлейные модули?

В практике встречаются случаи создания программ, общий объём модулей которой превышает размер оперативной памяти, отводимой для хранения кодов программ и данных. В этом случае программа создаётся из множества модулей. Часть их находится в памяти постоянно в течение времени работы программы. Часть модулей находится в памяти программы только во время их исполнения, а по мере завершения заменяется другими. Такие модули называются оверлейными.

  1. Что такое распределение памяти статическими разделами?

Это распределение памяти предусматривает разделение памяти на разделы с фиксированными границами, осуществляемое единовременно при загрузке операционной системы или программистом во время работы машины. В нулевом разделе размещается ядро операционной системы и транзитные модули операционной системы, т.е. модули, подгружаемые с системного диска.

В остальных разделах находятся задачи, причём в зависимости от объёма программ в каждом разделе большая или меньшая часть памяти не используется. Такие потери памяти называются фрагментацией памяти. Описанная система распределения памяти использовалась в первых мультипрограммных операционных системах. Позднее она стала применяться для недорогих вычислительных систем, причём в некоторых разделах помещались небольшие программы, которые находились в памяти в течение всего времени работы машины и вызывались по мере необходимости. Такие программы называются резидентными. В настоящее время распределение памяти с фиксированными границами разделов используется во встроенных системах, для которых характерно отсутствие нерезидентных программ. В указанных системах внешняя память не используется.

  1. Какие недостатки имеет распределение памяти статическими разделами?

Серьёзный недостаток распределения памяти на статические разделы привёл к попыткам распределения памяти на разделы с переменными границами (динамическим разделами) и к фрагментации задач.

  1. Что такое свопинг разделов?

Для увеличения числа параллельно работающих задач применяется приём, называемый свопингом. Он предусматривает выгрузку задачи, находящейся в очереди ожидания ввода данных, на диск и замену её другой задачей.

  1. Что такое фрагментация памяти?

Фрагментация – процесс появления незанятых участков в памяти (как оперативной, так и виртуальной и на магнитных носителях). Вызвана наличием в каждом виде памяти деления на мелкие единицы фиксированного размера, в то время как объём информации не обязательно кратен этому делению.

Появление или непоявление фрагментации зависит от метода организации памяти.

  1. Что такое распределение памяти с динамическими разделами?

Устранение фрагментации памяти возможно распределением памяти на разделы с подвижными границами. Такие разделы называются динамическими. Первой операционной системой использовавшей такой способ распределения памяти была OS MVT. В составе операционной системы в этом случае присутствует специальный планировщик памяти, который ведёт список свободных фрагментов памяти. При появлении новой задачи планировщик памяти выделяет ей фрагмент, подходящий по размеру. Это делается одним из трёх способов:

· выделяется первый подходящий раздел;

· выделяется самый подходящий раздел;

· выделяется самый неподходящий раздел, имеющий больший объём, чем задача (самый эффективный способ).

При завершении задачи освободившийся фрагмент по возможности присоединяется к смежному с ним свободному фрагменту.

  1. Какой недостаток имеет распределение памяти с динамическими разделами?

Однако даже такой способ распределения не даёт гарантии устранения фрагментации памяти. Поэтому периодически происходит перемещение свободных фрагментов памяти в область старших адресов.

  1. Какими способами планировщик памяти выделяет раздел при появлении новой задачи?

Останавливаются все вычислительные процессы, далее происходит указанное перемещение фрагментов, а затем при запуске процессов происходит отображение виртуальных адресов на физические. Этот приём называется уплотнением памяти.

  1. Как происходит распределение памяти при её сегментной организации?

При сегментном распределении памяти виртуальное адресное пространство процесса делится на сегменты, размер которых определяется программистом с учетом смыслового значения содержащейся в них информации. Отдельный сегмент может представлять собой подпрограмму, массив данных и т.п. Иногда сегментация программы выполняется по умолчанию компилятором.

При загрузке процесса часть сегментов помещается в оперативную память (при этом для каждого из этих сегментов операционная система подыскивает подходящий участок свободной памяти), а часть сегментов размещается в дисковой памяти. Сегменты одной программы могут занимать в оперативной памяти несмежные участки. Во время загрузки система создает таблицу сегментов процесса (аналогичную таблице страниц), в которой для каждого сегмента указывается начальный физический адрес сегмента в оперативной памяти, размер сегмента, правила доступа, признак модификации, признак обращения к данному сегменту за последний интервал времени и некоторая другая информация. Если виртуальные адресные пространства нескольких процессов включают один и тот же сегмент, то в таблицах сегментов этих процессов делаются ссылки на один и тот же участок оперативной памяти, в который данный сегмент загружается в единственном экземпляре.

  1. Какие недостатки имеет сегментная организация памяти?

Недостатками сегментного способа организации памяти являются:

· большие потери времени на чтение дескриптора и вычисление физического адреса ячейки;

· значительные затраты памяти и процессорного времени на ведение и обработку таблиц дескрипторов;

· значительная фрагментация памяти, хотя и меньшая, чем у неразрывных методов распределения памяти.

  1. Что такое таблица сегментов, какой она имеет формат и в каких целях она ведётся операционной системой?

Таблица сегментов – служит для отображения логических адресов в физические при сегментной организации памяти.

Операционная система ведёт специальную таблицу сегментов текущей задачи, которую называют таблицей дескрипторов сегментов текущей задачи. Дескриптор сегмента – специальная информационная структура, которая характеризует сегмент с точки зрения размещения, длины (L), присутствия в оперативной памяти (Р), прав доступа, отметка об обращении к сегменту (как часто или как давно этот сегмент используется) и т.д.

  1. Какой формат имеет логический адрес при сегментной организации памяти?

Логический адрес имеет вид пары, в которой находится номер сегмента и смещение в сегменте.

  1. Как при сегментной организации памяти вычисляется физический адрес?

Физический адрес нужного байта получается как сумма базового адреса и смещения.

  1. Какие дисциплины используются при свопинге сегментов?

Свопинг сегментов осуществляется в соответствии со следующими дисциплинами замещения сегментов:

· FIFO (First In First Out) – первым пришёл, первым выбыл;

· LRU (Least Resently Used) – выбывает дольше других неиспользуемый;

· LFU (Least Frequently Used) – выбывает реже других используемый;

· Random – случайный выбор сегмента, подлежащего выбытию.

  1. Каковы недостатки сегментного способа организации памяти?

Недостатками сегментного способа организации памяти являются:

· большие потери времени на чтение дескриптора и вычисление физического адреса ячейки;

· значительные затраты памяти и процессорного времени на ведение и обработку таблиц дескрипторов;

· значительная фрагментация памяти, хотя и меньшая, чем у неразрывных методов распределения памяти.

  1. Что такое страница памяти?

Фрагмент памяти, хранящий фрагмент программы называется страницей.

  1. Какой формат имеет логический адрес при страничной организации памяти?

При страничной организации логический адрес обрабатывается системой особым образом – как структура (p, d): его старшие разряды обозначают номер страницы, младшие – смещение внутри страницы.

  1. Как распределяется память при её страничной организации?

Страничный способ организации памяти (рис. 2.3) предполагает равенство фрагментов программ по размеру и кратными степени двойки. В этом случае операция сложения можно заменить операциями слияния, которые выполняются быстрее. Все фрагменты программы, кроме последних, имеют одинаковый размер. Одинаковыми становятся и размеры памяти, выделяемой для каждого фрагмента. Фрагмент памяти, хранящий фрагмент программы называется страницей. Таким образом, оперативная память разбивается на физические страницы, а программы – на виртуальные. Часть виртуальных страниц задачи размещается во внутренней памяти, а часть – во внешней на магнитных дисках. Место хранения страниц во внешней памяти называют страничным файлом, файлом подкачки или swap-файлом. Некоторые операционные системы, в частности UNIX, хранят выгруженные из внутренней памяти страницы в специальных разделах диска.

  1. Что такое таблица страниц? Каков её формат? В каких целях она ведётся?

Операционная система в этом случае ведёт таблицу страниц. Виртуальный адрес элемента программы состоит из номера страницы Pg и номера ячейки I внутри страницы (индекса). Благодаря одинаковому размеру физических страниц памяти стало возможно говорить о двумерной модели адресного пространства. Одной из координат пространства является номер страницы, а второй – индекс. Описание страницы, включающее в себя адрес страницы NP в памяти, код прав доступа, бит присутствия в памяти P и т.д. называется дескриптором страницы.

  1. Как определяется физический адрес при страничной организации памяти?

Номер страницы (p)трактуется как индекс в таблице страниц, соответствующий элемент которой содержит базовый адрес начала страницы в физической памяти. Смещение внутри страницы (d)добавляется к ее базовому адресу. В результате формируется физический адрес, передаваемый в устройство управления памятью.

  1. Каковы недостатки страничной организации памяти?

Основным достоинством страничной организации памяти является малая фрагментация оперативной памяти. Однако неизбежным недостатком её является разделение программы на страницы, не учитывающее логические связи между элементами программы. Этот недостаток вызывает повышенное по сравнению с сегментным разделением памяти количество прерываний на переходы между страницами, что существенно снижает производительность систем. Существенными оказываются и накладные расходы на обслуживание страниц.

  1. Что такое сегментно-страничная организация памяти?

Сегментно-страничный способ организации памяти предусматривает существование в виртуальном адресе элемента программы трёх компонент: номера сегмента, номера страницы в сегменте и номера ячейки памяти в странице. Если пренебречь разными размерами сегментов, то можно говорить о трехмерной модели адресного пространства, координатами которого являются номер сегмента, номер страницы и индекс ячейки памяти.

  1. Какой формат имеет логический адрес при сегментно-страничной организа­ции памяти?

В этом случае логический адрес состоит из трех полей: номера сегмента логической памяти, номера страницы внутри сегмента и смещения внутри страницы.

  1. Как определяется физический адрес при сегментно-страничной организации памяти?

Вычисление физического адреса элемента программы осуществляется в три этапа:

· вычисление адреса дескриптора сегмента как суммы адреса таблицы дескрипторов и номера сегмента;

· вычисление адреса дескриптора страницы как суммы адреса начала сегмента и номера страницы;

· вычисление адреса элемента программы как результата конкатенации адреса страницы и индекса элемента программы.

  1. Опишите двумерную модель памяти?

Виртуальный адрес элемента программы состоит из номера страницы Pg и номера ячейки I внутри страницы (индекса). Благодаря одинаковому размеру физических страниц памяти стало возможно говорить о двумерной модели адресного пространства. Одной из координат пространства является номер страницы, а второй – индекс. Описание страницы, включающее в себя адрес страницы NP в памяти, код прав доступа, бит присутствия в памяти P и т.д. называется дескриптором страницы.

  1. Опишите трёхмерную модель памяти. При каких упрощениях возможно говорить о трёхмерной модели памяти?

Если пренебречь разными размерами сегментов, то можно говорить о трехмерной модели адресного пространства, координатами которого являются номер сегмента, номер страницы и индекс ячейки памяти.