Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Выталкивание дольше всех не использовавшейся страницы






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

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

Вопрос 278, 279( Неименованные каналы требуют меньше ресурсов, но обладают меньшими возможностями. Неименованные каналы могут быть использованы для взаимодействия между потоками одного приложения.

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

Вопрос 324( Горячий извещающий канал создается по инициативе клиента путем передачи транзакции XTYP_ADVSTART в вызове функции DdeClientTransaction.

DdeClientTransaction(NULL, 0, hConversation, ItemName, CF_TEXT, XTYP_ADVSTART, 1000, NULL);

Закрытие извещающего канала производится по инициативе клиента передачей транзакции XTYP_ADVSTOP в DDEML.

DdeClientTransaction(NULL, 0, hConversation, ItemName, CF_TEXT, XTYP_ADVSTOP, 1000, NULL); )Вопрос 324

Вопрос 370( Существует два варианта ввода-вывода:

1. Синхронный ввод-вывод, при котором поток, вызвавший эту операцию, блокируется до завершения ввода/вывода.

2. Асинхронный ввод-вывод, при котором поток вызывает операцию ввода-вывода (ReadFile() или WriteFile()) и сразу же получает управление обратно. Операция ввода-вывода выполняется не зависимо от потока, но когда она завершается, поток узнает об этом с помощью дополнительных средств. )Вопрос 370

Вопрос 416( В зеркальном томе содержимое раздела на одном диске дублируется в разделе равного размера на другом диске, что обеспечивает повышенную надежность. Другое название RAID-1. )Вопрос 416

 


Вариант 3 Вопрос 3, 4(


Вопрос 49( Существует несколько определений понятия ПРОЦЕСС, некоторые из которых приведены ниже: 1. Процесс - это модель выполнения программы, пренебрегающая техникой переключения контекста2. Процесс - это программа в состоянии выполнения.3. Процесс - это пара < процессор, программа> при выполнении. 4. Процесс - это объект многозадачной среды, допускающий параллельное выполнение хотя бы одного из его методов. )Вопрос 49Вопрос 95, 96, 97( S: = New(PSemaphore, Init); Процесс 1 Процесс 2 Процесс 3.........S^.P; S^.P; S^.P; Кр. уч-к; Кр. уч-к; Кр. уч-к; S^.V; S^.V; S^.V;......... Dispose(S, Done); Пусть П1 первым подошел к критическому участку. Count = 1.Dec(Count); Count = 0; Входит в критический участок, т.к. условие блокировки Count < 0.Пусть П2 вторым подошел к критическому участку. Count = 0.Dec(Count); Count = -1; Встает в очередь семафора, т.к. выполняется условие блокировки.Пусть П3 третьим подошел к критическому участку. Count = -1.Dec(Count); Count = -2; Встает в очередь семафора за П2, т.к. выполняется условие блокировки.Теперь П1 выходит из критического участка. Count = -2.Inc(Count); Count = -1; Активизирует процесс П2, как первый в очереди, т.к. выполняется условие активизацииCount < = 0.Процесс П2 входит в критический участок.Теперь П2 выходит из критического участка. Count = -1.Inc(Count); Count = 0; Активизирует процесс П3, как первый в очереди, т.к. выполняется условие активизацииCount < = 0.Процесс П3 входит в критический участок.Теперь П3 выходит из критического участка. Count = 0.Inc(Count); Count = 1; Активизировать некого и не выполняется условие активизации Count < = 0.Семафор приходит в исходное состояние. Рассмотрим теперь вторую задачу. Рассматривая вторую задачу, мы подбираемся к изучению методов обмена сообщениями в ядре. Общая схема взаимодействия двух процессов при обмене данными выглядит следующим образом.Процесс 1 Процесс 2......Записать в ЯП; Если не записано, то ЖДАТЬ; Сообщить, что записал; Прочитать из ЯП;......Решим указанную задачу с помощью семафоров.Инициализируем семафор S в 0, т.е. S^.Count: = 0.П1 П2......Записать в ЯП; S^.P; S^.V; Прочитать из ЯП;......Пусть процесс П1 записал в ЯП данные и первым подошел к выполнению операции S^.V.Inc(Count); Count = 1; Т.к. условие активизации процессов в операции S^.V - Count < = 0, то активизировать некого.Пусть теперь к выполнению операции S^.P подошел процесс П2.Dec(Count); Count = 0; Т.к. условие блокировки в операции S^.P - Сount < 0, то процесс П2 не блокируется и переходит к чтению ЯП.Таким образом, чтение произошло после записи.Пусть теперь первым подошел к выполнению операции S^.P процесс П2.Dec(Count); Count = -1; Выполняется условие блокировки и процесс П2 встает в очередь, не прочитав ячейку памяти.Теперь процесс П1 пишет в ЯП и подходит к выполнению операции S^.V.Inc(Count); Count = 0; Т.к. условие активизации Count < = 0 выполняется, то происходит активизация процесса П2 и чтение ЯП.Таким образом, чтение опять произошло после записи. Для решения данной задачи в современных ОС используются семафоры событий.Обычно процессы - это некие циклические программы. Поэтому, если организовать запись и чтение ЯП так, как это описано выше, то может иметь место следующая ситуация: пока процесс П2 не подошел к операции чтения, процесс П1 может выполнить несколько операций записи, возвращаясь к ней в цикле. Т.е. может произойти потеря данных.Поэтому, чтобы потери данных не происходили, необходимо организовать синхронизацию так, чтобы количество записей равнялось количеству чтений.Следующая схема позволяет это сделать.П1 П2While True Do Begin While True Do Begin...... Запись в ЯП; S^.P; S^.V; Чтение из ЯП; A^.P; A^.V;......End {While}; End {While}; Первый процесс пишет в ЯП, активизирует П2, если тот уже блокирован в очереди первого семафора, а сам блокируется в очереди второго семафора.Активизация П1 выполняется процессом П2 после чтения ЯП. Первый семафор используется как подтверждение записи, а второй - как подтверждение чтения. )Вопрос 133, 134, 135, 136, 137, 138, 139, 140, 141( Пример надежного состояния.Всего ресурсов - 12. Остаток - 2.
  Выделено Макс. Потребность
Процесс 1 1 4
Процесс 2 4 6
Процесс 3 5 8
Почему это состояние является надежным? Предположим, что процесс 1 запросил 2 ресурса. Дать их ему или нет? Предположим, что дать.Тогда ситуация сложится следующим образом. Всего ресурсов - 12. Остаток - 0.
  Выделено Макс. Потребность
Процесс 1 3 4
Процесс 2 4 6
Процесс 3 5 8
2)Каждый из процессов еще может запросить ресурсы по своему протоколу, а свободных ресурсов нет в наличии. Это может привести к тупиковой ситуации. Поэтому запрос процесса 1 на 2 ресурса будет отложен. Предположим, что процесс 2 запросил 2 ресурса. Дать их ему или нет? Условие функционирования процессов следующее. После получения максимального количества ресурсов они все ресурсы отдают системе и завершают свою работу. Это означает, что получив 6 ресурсов, процесс 2 успешно завершится и вернет их системе. Свободных ресурсов будет 6 и их хватит процессам 1 и 3, чтобы завершить работу. Т.е. все три процесса могут успешно завершить работу. Поэтому такое состояние является надежным.Пример ненадежного состояния.Всего ресурсов - 12. Остаток - 1.
  Выделено Макс. Потребность
Процесс 1 1 4
Процесс 2 4 6
Процесс 3 6 8
3)Каждый из процессов может запросить по своему протоколу еще ресурсы, но их нет в наличии. Отметим, что это не обязательно тупик. Это – опасность возникновения тупика при определенном варианте появления запросов.Таблица 2 - тоже пример ненадежного состояния. )Вопрос 185, 186, 187( Известно явление, называемое инверсией приоритета.

На примере его можно иллюстрировать следующим образом.

Есть 3 задачи Т1, Т2 и Т3 (Т1 имеет высший приоритет, а Т3 имеет низший приоритет), которые планируются алгоритмом монотонной скорости. Т1 и Т3 требуют исключительного доступа к общему ресурсу, защищенному семафором С.

Пусть в какой-то момент времени низкоприоритетная задача Т3 владеет критическим ресурсом. Пусть в этот момент высокоприоритетная задача Т1 запрашивает сервис.

Т1 должна ждать, пока Т3 не пройдет свой критический участок и не освободит семафор С.

Если в течение этого времени сервис запрашивает задача Т2, то он будет ей отдан, поскольку Т2 имеет более высокий приоритет, чем Т3.

Таким образом задача Т2 со средним приоритетом задерживает задачу Т3 и, следовательно, задачу Т1, задачу с высоким приоритетом.

Такое явление и называется инверсией приоритета.

Было предложено поднять приоритет низкоприоритетной задачи Т3, пока она находится в критической секции, до высокого приоритета блокированной задачи Т1, и следовательно, устранить возможность того, что среднеприоритетная задача Т2 вмешается в течение критической секции низкоприоритетной задачи. )






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.