- При переводе процессов в состояние приостанова ядро назначает процессу, ожидающему снятия блокировки с индекса, более высокий приоритет по сравнению с процессом, ожидающим освобождения буфера. Точно так же, процессы, ожидающие ввода с терминала, получают более высокий приоритет по сравнению с процессами, ожидающими возможности производить вывод на терминал. Объясните причины такого поведения ядра.
- * В алгоритме обработки прерываний по таймеру предусмотрен пересчет приоритетов и перезапуск процессов на выполнение с интервалом в 1 секунду. Придумайте алгоритм, в котором интервал перезапуска динамически меняется в зависимости от степени загрузки системы. Перевесит ли выигрыш усилия по усложнению алгоритма?
- В шестой редакции системы UNIX для расчета продолжительности ИЦП текущим процессом используется следующая формула:
decay(ИЦП) = max (пороговый приоритет, ИЦП-10);
а в седьмой редакции:
decay(ИЦП) = .8 * ИЦП;
Приоритет процесса в обеих редакциях вычисляется по формуле:
приоритет = ИЦП/16 + (базовый уровень приоритета);
Повторите пример на Рисунке 8.4, используя приведенные формулы.
- Проделайте еще раз пример на Рисунке 8.4 с семью процессами вместо трех, а затем измените частоту прерываний по таймеру с 60 на 100 прерываний в секунду. Прокомментируйте результат.
- Разработайте схему, в которой система накладывает ограничение на продолжительность выполнения процесса, при превышении которого процесс завершается. Каким образом пользователь должен отличать такой процесс от процессов, для которых не должны существовать подобные ограничения? Каким образом должна работать схема, если единственным условием является ее запуск из shell'а?
- Когда процесс выполняет системную функцию wait и обнаруживает прекратившего существование потомка, ядро приплюсовывает к его ИЦП значение поля ИЦП потомка. Чем объясняется такое "наказание" процесса-родителя?
- Команда nice запускает последующую команду с передачей ей указанного значения, например:
nice 6 nroff -mm big_memo > output
Напишите на языке Си программу, реализующую команду nice.
- Проследите на примере Рисунка 8.4, каким образом будет осуществляться диспетчеризация процессов в том случае, если значение, передаваемое функцией nice для процесса A, равно 5 или -5.
- Проведите эксперимент с системной функцией renice x y, где x - код идентификации процесса (активного), а y - новое значение nice для указанного процесса.
- Вернемся к примеру, приведенному на Рисунке 8.6. Предположим, что группе, в которую входит процесс A, выделяется 33% процессорного времени, а группе, в которую входит процесс B, - 66% процессорного времени. В какой последовательности будут исполняться процессы? Обобщите алгоритм вычисления приоритетов таким образом, чтобы значение группового ИЦП усреднялось.
- Выполните команду date. Команда без аргументов выводит текущую дату:
указав аргумент, например:
date mmddhhmmyy
(супер)пользователь может установить текущую дату в системе (соответственно, месяц, число, часы, минуты и год). Так,
date 0911205084
устанавливает в качестве текущего времени 11 сентября 1984 года 8:50 пополудни.
- В программах можно использовать функцию пользовательского уровня sleep:
sleep(seconds);
с помощью которой выполнение программы приостанавливается на указанное число секунд. Разработайте ее алгоритм, в котором используйте системные функции alarm и pause. Что произойдет, если процесс вызовет функцию alarm раньше функции sleep? Рассмотрите две возможности: 1) действие ранее вызванной функции alarm истекает в то время, когда процесс находится в состоянии приостанова, 2) действие ранее вызванной функции alarm истекает после завершения функции sleep.
- * Обратимся еще раз к последней проблеме. Ядро может выполнить переключение контекста во время исполнения функции sleep между вызовами alarm и pause. Тогда есть опасность, что процесс получит сигнал alarm до того, как вызовет функцию pause. Что произойдет в этом случае? Как вовремя распознать эту ситуацию?
Предыдущая глава || Оглавление || Следующая глава
|
|
|
|
|
|
|
|
Новости мира IT:
- 04.02 - Отчёт о развитии Fedora Workstation: AI, Wayland, HDR, MIPI-камеры и Flatpak
- 04.02 - Для борьбы с телефонными мошенниками в России будут использовать ИИ и базу биометрических данных
- 04.02 - Opera представила заботливый браузер Air — он поможет бороться со стрессом и поддерживать концентрацию
- 04.02 - Microsoft причислила к вредоносам средства обхода ограничений для установки Windows 11
- 04.02 - Китай начал антимонопольное расследование против Google в ответ на повышение импортных пошлин США
- 04.02 - OpenAI выпустит ИИ-гаджет, который кардинально изменит взаимодействие человека с компьютером
- 04.02 - Энтузиаст создал клиент Discord для древних ПК на Windows 95 и 98
- 04.02 - «Нестабильная, но многообещающая»: американцы начали тестировать спутниковую связь Starlink для обычных смартфонов
- 04.02 - Суд обязал ЕС выплатить компании Intel €515 млн за отменённый штраф 2009 года
- 31.01 - Apple поставила новый рекорд по числу активных устройств, но рост замедлился
- 31.01 - Первое в мире судно с захватом CO2 из собственных выхлопов скоро отправится в море
- 31.01 - Apple отчиталась о «лучшем за всю историю квартале» вопреки падению продаж iPhone
- 31.01 - Intel завершила год с убытками в $18,8 млрд — продажи Core и Xeon упали, но руководство верит, что скоро всё наладится
- 31.01 - Российские медиа объявили войну пиратам: число заблокированных ссылок в поисковиках удвоилось за год
- 31.01 - Почти половина бизнеса IBM теперь приходится на ПО — компания делает ставку на ИИ и open source
- 27.01 - Microsoft открыл код СУБД DocumentDB, основанной на PostgreSQL
- 27.01 - На соревновании Pwn2Own Automotive 2025 представлено 49 уязвимостей автомобильных систем
- 27.01 - Россия опустилась 8-е место в мире по количеству DDoS-атак в 2024 году
- 27.01 - Биткоин провалился ниже $98 тыс. после обвала акций американских ИИ-компаний
- 27.01 - В Великобритании появится крупнейший в Европе дата-центр, который построят для неназванного гиперскейлера
Архив новостей
|
|
|
|
|
|
|
|
|
|
|
|
|