![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Выталкивание дольше всех не использовавшейся страницы
С каждой страницей связывается временная метка, которая обновляется при каждом обращении к странице. Для выталкивания берется страница с минимальным значением этой метки. Реализация данного метода довольно сложна, поэтому он используется только в экспериментальных системах, или как верхняя граница эффективности при сравнении с другими алгоритмами. Общий вывод по стратегиям выталкивания страниц с постоянным распределением состоит в том, что совершенствование стратегии существенно меньше влияет на эффективность системы в целом, чем увеличение размера памяти. ) Вопрос 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.
На примере его можно иллюстрировать следующим образом. Есть 3 задачи Т1, Т2 и Т3 (Т1 имеет высший приоритет, а Т3 имеет низший приоритет), которые планируются алгоритмом монотонной скорости. Т1 и Т3 требуют исключительного доступа к общему ресурсу, защищенному семафором С. Пусть в какой-то момент времени низкоприоритетная задача Т3 владеет критическим ресурсом. Пусть в этот момент высокоприоритетная задача Т1 запрашивает сервис. Т1 должна ждать, пока Т3 не пройдет свой критический участок и не освободит семафор С. Если в течение этого времени сервис запрашивает задача Т2, то он будет ей отдан, поскольку Т2 имеет более высокий приоритет, чем Т3. Таким образом задача Т2 со средним приоритетом задерживает задачу Т3 и, следовательно, задачу Т1, задачу с высоким приоритетом. Такое явление и называется инверсией приоритета. Было предложено поднять приоритет низкоприоритетной задачи Т3, пока она находится в критической секции, до высокого приоритета блокированной задачи Т1, и следовательно, устранить возможность того, что среднеприоритетная задача Т2 вмешается в течение критической секции низкоприоритетной задачи. )
|