Как правильно бороться с тупиком который может возникнуть при использовании принтера
В предыдущих лекциях мы рассматривали способы синхронизации процессов, которые позволяют процессам успешно кооперироваться. Однако в некоторых случаях могут возникнуть непредвиденные затруднения. Предположим, что несколько процессов конкурируют за обладание конечным числом ресурсов . Если запрашиваемый процессом ресурс недоступен, ОС переводит данный процесс в состояние ожидания. В случае когда требуемый ресурс удерживается другим ожидающим процессом, первый процесс не сможет сменить свое состояние. Такая ситуация называется тупиком (deadlock) . Говорят, что в мультипрограммной системе процесс находится в состоянии тупика , если он ожидает события, которое никогда не произойдет. Системная тупиковая ситуация , или "зависание системы", является следствием того, что один или более процессов находятся в состоянии тупика . Иногда подобные ситуации называют взаимоблокировками . В общем случае проблема тупиков эффективного решения не имеет.
Рассмотрим пример. Предположим, что два процесса осуществляют вывод с ленты на принтер. Один из них успел монополизировать ленту и претендует на принтер, а другой наоборот. После этого оба процесса оказываются заблокированными в ожидании второго ресурса (см. рис. 7.1).
Определение. Множество процессов находится в тупиковой ситуации , если каждый процесс из множества ожидает события, которое может вызвать только другой процесс данного множества . Так как все процессы чего-то ожидают, то ни один из них не сможет инициировать событие, которое разбудило бы другого члена множества и, следовательно, все процессы будут спать вместе.
Выше приведен пример взаимоблокировки , возникающей при работе с так называемыми выделенными устройствами. Тупики , однако, могут иметь место и в других ситуациях. Hапример, в системах управления базами данных записи могут быть локализованы процессами, чтобы избежать состояния гонок (см. лекцию 5 "Алгоритмы синхронизации"). В этом случае может получиться так, что один из процессов заблокировал записи, необходимые другому процессу, и наоборот. Таким образом, тупики могут иметь место как на аппаратных, так и на программных ресурсах .
Тупики также могут быть вызваны ошибками программирования. Например, процесс может напрасно ждать открытия семафора, потому что в некорректно написанном приложении эту операцию забыли предусмотреть. Другой причиной бесконечного ожидания может быть дискриминационная политика по отношению к некоторым процессам. Однако чаще всего событие, которого ждет процесс в тупиковой ситуации , – освобождение ресурса , поэтому в дальнейшем будут рассмотрены методы борьбы с тупиками ресурсного типа.
Ресурсами могут быть как устройства, так и данные. Hекоторые ресурсы допускают разделение между процессами, то есть являются разделяемыми ресурсами . Например, память , процессор , диски коллективно используются процессами. Другие не допускают разделения, то есть являются выделенными, например лентопротяжное устройство. К взаимоблокировке может привести использование как выделенных, так и разделяемых ресурсов . Например, чтение с разделяемого диска может одновременно осуществляться несколькими процессами, тогда как запись предполагает исключительный доступ к данным на диске. Можно считать, что часть диска, куда происходит запись , выделена конкретному процессу. Поэтому в дальнейшем мы будем исходить из предположения, что тупики связаны с выделенными ресурсами , то есть тупики возникают, когда процессу предоставляется эксклюзивный доступ к устройствам, файлам и другим ресурсам .
Традиционная последовательность событий при работе с ресурсом состоит из запроса, использования и освобождения ресурса . Тип запроса зависит от природы ресурса и от ОС. Запрос может быть явным, например специальный вызов request, или неявным – open для открытия файла. Обычно, если ресурс занят и запрос отклонен, запрашивающий процесс переходит в состояние ожидания.
Далее в данной лекции будут рассматриваться вопросы обнаружения, предотвращения, обхода тупиков и восстановления после тупиков . Как правило, борьба с тупиками – очень дорогостоящее мероприятие. Тем не менее для ряда систем, например для систем реального времени, иного выхода нет.
Условия возникновения тупиков
Условия возникновения тупиков были сформулированы Коффманом, Элфиком и Шошани в 1970 г.
- Условие взаимоисключения ( Mutual exclusion ). Одновременно использовать ресурс может только один процесс.
- Условие ожидания ресурсов (Hold and wait). Процессы удерживают ресурсы , уже выделенные им, и могут запрашивать другие ресурсы .
- Условие неперераспределяемости (No preemtion). Ресурс , выделенный ранее, не может быть принудительно забран у процесса. Освобождены они могут быть только процессом, который их удерживает.
- Условие кругового ожидания ( Circular wait). Существует кольцевая цепь процессов, в которой каждый процесс ждет доступа к ресурсу , удерживаемому другим процессом цепи.
Для образования тупика необходимым и достаточным является выполнение всех четырех условий.
Обычно тупик моделируется циклом в графе, состоящем из узлов двух видов: прямоугольников – процессов и эллипсов – ресурсов , наподобие того, что изображен на рис. 7.1. Стрелки, направленные от ресурса к процессу, показывают, что ресурс выделен данному процессу. Стрелки, направленные от процесса к ресурсу , означают, что процесс запрашивает данный ресурс .
Основные направления борьбы с тупиками
Проблема тупиков инициировала много интересных исследований в области информатики. Очевидно, что условие циклического ожидания отличается от остальных. Первые три условия формируют правила, существующие в системе, тогда как четвертое условие описывает ситуацию, которая может сложиться при определенной неблагоприятной последовательности событий. Поэтому методы предотвращения взаимоблокировок ориентированы главным образом на нарушение первых трех условий путем введения ряда ограничений на поведение процессов и способы распределения ресурсов . Методы обнаружения и устранения менее консервативны и сводятся к поиску и разрыву цикла ожидания ресурсов .
Итак, основные направления борьбы с тупиками :
- Игнорирование проблемы в целом
- Предотвращение тупиков
- Обнаружение тупиков
- Восстановление после тупиков
Игнорирование проблемы тупиков
Простейший подход – не замечать проблему тупиков . Для того чтобы принять такое решение, необходимо оценить вероятность возникновения взаимоблокировки и сравнить ее с вероятностью ущерба от других отказов аппаратного и программного обеспечения. Проектировщики обычно не желают жертвовать производительностью системы или удобством пользователей для внедрения сложных и дорогостоящих средств борьбы с тупиками .
Любая ОС, имеющая в ядре ряд массивов фиксированной размерности, потенциально страдает от тупиков , даже если они не обнаружены. Таблица открытых файлов, таблица процессов , фактически каждая таблица являются ограниченными ресурсами . Заполнение всех записей таблицы процессов может привести к тому, что очередной запрос на создание процесса может быть отклонен. При неблагоприятном стечении обстоятельств несколько процессов могут выдать такой запрос одновременно и оказаться в тупике . Следует ли отказываться от вызова CreateProcess, чтобы решить эту проблему?
Подход большинства популярных ОС (Unix, Windows и др.) состоит в том, чтобы игнорировать данную проблему в предположении, что маловероятный случайный тупик предпочтительнее, чем нелепые правила, заставляющие пользователей ограничивать число процессов, открытых файлов и т. п. Сталкиваясь с нежелательным выбором между строгостью и удобством, трудно найти решение, которое устраивало бы всех.
Эта не какой-нибудь там телевизор, который поставил в угол и забыл лет на 10. В принтере надо периодически менять картриджи или заправлять их. Если используется СНПЧ – и подавно следует «держать руку на пульсе».
В принтер попадает бумажная и прочая пыль. Печатающая головка «плюется» чернилами на бумагу, но их капельки попадают и на датчики, и на внутренние поверхности принтера.
Абсорбер принтера (народное название – «памперс») нуждается в периодической замене или мойке. При этом специальный счетчик – вот наглая рожа! – блокирует работу, и его надо сбрасывать специальной программой. Чтобы не попасть впросак при обслуживании струйного принтера, опишем
Шесть ловушек, которых надо избегать
В струйном принтере, как вы помните, имеются энкодерные датчики – лента и диск с мелкими штрихами.С их помощью которых микропроцессорная схема управляет принтером.
Это «глаза» принтера, а зрение надо содержать в порядке!
Поэтому никогда не протирайте шкалы энкодерных датчиков растворителями, иначе можете стереть часть штрихов на ней.
Если картриджи заправляются повторно, используйте всегда одну и ту же марку чернил одного и того же производителя (для каждого конкретного картриджа). На сайтах производителей публикуются таблицы совместимости чернил и картриджей.
Если счетчик памперса блокировал работу принтера, то после его сброса замените или вымойте впитывающую прокладку.
В противном случае вы быстро забудете о факте переполнения памперса и в самый неподходящий момент получите залитые чернилами стол и свои любимые джинсы. Вы, конечно, можете попытаться их отстирать, но шансов на это – немного.
Тем более что и сервисные программы спрашивают: «Вы заменили впитывающую прокладку?» Так что честно отвечайте на вопрос!
При заправке картриджей лучше одевать резиновые медицинские перчатки. В противном случае чернила, попадая на кожу, могут вызвать аллергическую реакцию. Да и руки при этом за один раз не отмоешь. Умные химики придумали очень хорошие формулы чернил.
Есть такая совершенно необходимая деталь в принтере, как памперс (абсорбер, содержащий впитывающую прокладку) или собиратель отработанных чернил.
Некоторые пользователи, имея опыт обращения с этой штукой, предпочитают решить проблему кардинально.
Для этого они выводят посредством трубки отработку в специальную емкость за пределы принтера. Это хороший вариант.
Но для этого требуется разборка принтера, при этом, естественно, теряется гарантия. Многие предпочитают не обращать внимания на эту проблему (или не знают о ней), пока она настоятельно не напомнит о себе.
При мытье памперса (впитывающей прокладки) также надо использовать перчатки, но уже не медицинские, а хозяйственные (продаются в хозмагах).
Резина там толще, а «голенища» длиннее. При разборке принтера и манипуляциях с деталями абсорбера медицинские перчатки легко повреждаются. И потом один или несколько пальцев на руках будут долго отличаться от всех остальных ;-)
В памперсе собирается смесь чернил (адская смесь!), которая густеет, и отмывать ее с рук придется дольше, чем при заправке.
При использовании повторно заправленных картриджей нужно внимательно следить за качеством печати, так как в таких случаях принтер в большинстве случаев не отображает правильно оставшийся уровень чернил.
Есть хитрые способы обмануть принтер и заставить его считать заправленный картридж новым. Для этого производят манипуляции с заклейкой отдельных контактов картриджа или используют специальные приборы – программаторы чипов картриджей. Но это срабатывает не всегда и не для всех типов картриджей.Как только (при термоструйной печати) начались пропуски печати (белые полосы) хотя бы одного цвета, следует немедленно прекратить печать и долить чернила в картриджи. Попытка допечатать, потому что «очень нужно», может привести к тому, что картридж придется менять.
Дело в том, что при таком способе печати чернила, помимо своей основной функции еще и охлаждают сопловые камеры. А раз чернила не поступают, то нет и охлаждения. Часть камер (или все) будут необратимо повреждены, и печать станет невозможной.
Если в какой-то модели принтера с термоструйной печатью (например, фирмы CANON) используется отдельная полноцветная печатающая головка, то надо быть еще боле внимательным. Если выйдет из строя часть сопел только одного цвета – головку придется менять целиком, а это уже серьезный и дорогой ремонт.
Напугал я вас! А Вы как думали? Зато предупредил! Предупрежден – значит, вооружен.
Принтеры со временем эволюционировали и улучшили свою функциональность. Сначала мы подключились к ним через последовательный или параллельный порт, а затем перешли к USB-порту. Эти типы принтеров в настоящее время используются только через USB, и, если у нас не установлены соответствующие драйверы, они обычно не вызывают проблем. Однако в последние годы принтеры значительно улучшились благодаря включению порта Ethernet и Wi-Fi. Это означает, что они могут работать независимо от ПК и просить вас распечатать документ со смартфона. Это означает, что при возникновении проблем необходимо проверять больше таких вещей, как порты. В этом уроке мы поговорим о том, какие порты открывать, если принтер выйдет из строя, если это необходимо.
Первое, что мы собираемся сделать, это проверить ряд вещей, в которых наиболее вероятна причина этой ошибки. Если это не решит проблему и принтер выйдет из строя, мы посмотрим, какие порты открывать.
Что нужно проверить, если принтер выходит из строя
Иметь дома IP-принтер или Wi-Fi становится все более распространенным явлением. Эти типы принтеров более универсальны, поскольку они могут обходиться без компьютера в качестве посредника, но мы также будем подвержены большему количеству сбоев, поскольку они требуют дополнительной настройки.
Одна из наиболее типичных причин выхода из строя принтера заключается в том, что у нас проблемы с подключением по Wi-Fi . В этом смысле, если принтер расположен далеко от маршрутизатора, проблема может быть на расстоянии, и у нас будут прерывистые разрезы. Решение состоит в том, чтобы правильно расположить принтер и оставить вокруг него свободное пространство и, при необходимости, добавить повторитель Wi-Fi или соответствующее сетевое оборудование.
Мы также должны учитывать устаревшие или конфликтующие драйверы . Обычно это происходит после обновления операционной системы, и решение проблемы - поставить более современные драйверы. Другая ошибка может быть в несовместимость со стандартом безопасности роутера . Например, наш маршрутизатор работает с шифрованием WPA3, и принтер не работает, потому что он совместим только с более старой версией, такой как WPA2-PSK.
Мы также должны пересмотреть присвоение IP потому что вы выбрали тот, который вам не подходит. Один случай может заключаться в том, что вы используете тот же IP-адрес, что и другое устройство, и у нас есть конфликт IP-адресов. Также следует убедиться, что он находится в том же диапазоне сети, что и наш маршрутизатор, один из наиболее типичных - 192.168.1.X.
Если у нас есть Windows компьютер мы проверим что у нас есть обнаружение сети активировано . Для этого мы должны перейти к « Панель управления ", мы входим " Сети и Интернет , Cеть и Центр обмена и Изменить дополнительные параметры общего доступа ».
Наконец, если принтер подключен к сетевой кабель, мы должны проверить, если это в хорошем состоянии . Если принтер по-прежнему выходит из строя, мы можем проверить порты.
Порт WSD может быть виноват в выходе из строя принтера
Это может быть одной из типичных проблем при установке сетевого принтера. Если вы не знаете, порт WSD (Веб-службы для устройств) позволяет нам обнаруживать принтеры и другие устройства в сети. Здесь используется протокол WSD, который предназначен для автоматического управления, обнаружения и настройки. На практике его управление не так хорошо, как, например, с TCP. Проблема в том, что когда вы добавляете принтеры к серверу печати, и мы достигаем 30 портов WSD, и это то, что они перестают автоматически генерироваться.
Таким образом, при работе с портом WSD часто возникают такие проблемы, как:
- Очередь печати останавливается после установки драйвера принтера веб-служб для устройств (WSD) на компьютерах с Windows 7, 8 или 10.
- Процесс диспетчера очереди печати можно останавливать и перезапускать несколько раз. Это заставит нас перезапустить принтер.
- Эта нестабильность в очереди печати препятствует выпуску заданий на печать.
- Понятно, что порты WSD непригодны для использования, поскольку они неправильно связаны с каким-либо принтером.
- Мы видим, как наш принтер выглядит как автономный или отключенный.
В этих случаях решение состоит в том, чтобы установить IP-адрес принтера, используя стандарт TCP / IP. Также рекомендуется очистить порт WSD, созданный для этого принтера, вручную.
Как изменить порт на принтере в Windows
- Заходим в винду Стартовое меню.
- Мы пишем Панель управления и нажмите enter.
- Там мы ищем Устройства и принтеры и нажать кнопку.
Там первое, что нам нужно сделать, это перейти в раздел наших принтеров и идентифицировать наши. Хорошей отправной точкой является то, что мы используем его по умолчанию, чтобы избежать проблем. Если мы этого не сделаем, я бы не знал, какой из них использовать, потому что иногда у нас их несколько, или некоторые виртуальные устанавливаются вместе с другими программами.
Поэтому, если мы хотим предопределить наш принтер , щелкаем по нему, щелкаем правой кнопкой мыши и мы увидим такие варианты:
Здесь нам нужно выбрать опцию Сделать принтером поумолчанию . Зеленая галочка говорит нам, что это наш принтер по умолчанию. На этот раз не помешает проверить, решило ли это проблему. В противном случае нам пришлось бы смотреть на порты, поскольку принтер выходит из строя, а мы не решили проблему.
Затем, чтобы посмотреть на проблему с портами, правой кнопкой мыши мы снова нажмем на нашем принтере и нажмем на Свойства принтера .
Далее мы рассмотрим на практическом примере изменение порта, который необходимо решить, когда принтер выходит из строя и не печатает.
Практический пример изменения порта принтера
Независимо от марки принтера, мы должны выполнить шаги, указанные выше. Это будет пример с принтером HP, который после нажатия на Свойства принтера и идти к Порты tab мы увидим такой экран:
- Для этого нажмите на Добавить порт .
- Далее следуем инструкциям, которые указаны, сначала ставим Стандартный порт TCP / IP а затем по запросу добавляем IP-адрес нашего принтера. В идеале этот локальный IP-адрес должен быть назначен вручную в статическом DHCP маршрутизатора или в самом принтере, если это позволяет. Таким образом вы убедитесь, что он всегда одинаковый и не возникает сбоев.
Затем мы закончили, нажав кнопку Удалить порт и удалив порт WSD, если он был. Это делается на случай, если вы вернете его в любом обновлении. Также настоятельно рекомендуется иметь последние версии драйверов от производителя.
Это был бы еще один пример с другим принтером, поскольку вы можете видеть, что процесс идентичен:
Как вы видели, если ваш принтер выходит из строя из-за проблемы с портами, вы уже знаете, как решить эту проблему и правильно печатать без особых проблем.
В вычислительной системе моделируется движение самосвалов от карьера к заводу и обратно по дороге со стареньким мостом. Движение по мосту может осуществляться в обоих направлениях, но на нем не может быть одновременно более трех машин, иначе он рухнет. Каждый самосвал представлен программистом процессом следующей структуры:
Что может произойти в результате такого моделирования?
Файл autoexec.bat, который обычно входит в состав файлов корневого каталога во многих ОС компании Microsoft, относится к категории:Для некоторого процесса известна следующая строка запросов страниц памяти
Сколько ситуаций отказа страницы (page fault) возникнет для данного процесса при использовании алгоритма замещения страниц OPT (оптимальный алгоритм) и трех страничных кадрах?
Для некоторого процесса известна следующая строка запросов страниц памяти
Сколько ситуаций отказа страницы (page fault) возникнет для данного процесса при использовании алгоритма замещения страниц FIFO (First Input First Output) и трех страничных кадрах?
Пусть в вычислительную систему поступают пять процессов различной длительности по следующей схеме:
Номер процесса | Момент поступления в систему | Время исполнения |
---|---|---|
1 | 2 | 4 |
2 | 1 | 3 |
3 | 4 | 5 |
4 | 3 | 2 |
5 | 0 | 9 |
Чему равно среднее время ожидания процесса (waiting time) при использовании вытесняющего алгоритма SJF? При вычислениях считать, что процессы не совершают операций ввода-вывода, временем переключения контекста пренебречь.
Пусть в вычислительную систему поступают пять процессов различной длительности по следующей схеме:
Номер процесса | Момент поступления в систему | Время исполнения |
---|---|---|
1 | 2 | 4 |
2 | 1 | 3 |
3 | 4 | 5 |
4 | 3 | 2 |
5 | 0 | 9 |
Чему равно среднее время ожидания процесса (waiting time) при использовании вытесняющего алгоритма SJF? При вычислениях считать, что процессы не совершают операций ввода-вывода, временем переключения контекста пренебречь.
Читайте также: