2 Сосредоточенность как средство против прерываний
2
Сосредоточенность как средство против прерываний
Сколько раз вы говорили шефу, что можете сделать работу за день, если вас не будут прерывать, а в реальности тратили на нее месяц? Системные администраторы говорят это, потому что их работу над проектом постоянно прерывают как клиенты, так и начальство.
Когда системный администратор говорит, что его постоянно дергают пользователи, это означает, что в действительности он хочет сосредоточиться на своих проектах.
Когда мы сосредоточенны и можем работать не отрываясь, мы способны выполнить любую работу. Сосредоточенность требует усилий. Сосредоточившись, мы справляемся с работой быстрее, а высвободившееся время можем потратить на другие дела или на личную жизнь. Это все равно что отключить от ноутбука лишнюю периферию. Аккумулятор дольше протянет, и вы больше поработаете или поиграете в любимую игру.
Прерывания — исконные враги сосредоточенности. Они прямо и косвенно воруют наше время. Прямые потери времени очевидны: прерывание, отвлекающее нас на t минут, оттягивает завершение работы на t минут. Здесь все ясно. Однако прерывания коварно воруют у нас время косвенным образом. Возвращаясь к работе, вы тратите р минут на то, чтобы сообразить, на каком этапе вы оставили работу. Если вас прервали на третьем шаге многошагового процесса, с какого шага вы должны продолжить — с третьего или четвертого? Выяснение этого является дополнительным занятием, крадущим время у проекта. Признаюсь, что за мою бытность сисадмином самые серьезные технические ошибки возникали, когда из-за прерывания я пропускал какой-то шаг или забывал довести предыдущий шаг до конца. Я, увы, возвращался к четвертому шагу вместо третьего. Если время, необходимое для устранения этих ошибок, обозначить через s, то суммарная задержка в результате прерывания составит t+p+s минут и, вполне возможно, превысит время выполнения задания!
К сожалению, системным администраторам никуда не деться от прерываний. Мы должны решать проблемы наших клиентов — это часть нашей работы. Но попытка сбалансировать решение этих проблем с нашими проектами может привести к возникновению барьеров и напряженности в отношениях с коллегами. Можно сказать, что эта глава учит вас, как сохранять сосредоточенность на проекте и спокойно обрабатывать прерывания.
Сосредоточенный мозг
Сосредоточиться — значит максимально нацелить свой мозг на решение конкретной задачи. Мозг разделен на несколько частей. Передняя часть обрабатывает ваши сиюминутные мысли (если хотите, это ЦПУ и кэш уровня L1/L2), задняя часть содержит то, что вы помните (ОЗУ), а за ней находится часть, хранящая долговременную информацию (ваш жесткий диск). Сосредоточенность относится к той части, которую я ненаучно называю передней частью мозга.
Когда вы сосредоточенны, вы пытаетесь использовать 100 % передней части вашего мозга. Чтобы лучше разобраться в этом, рассмотрим мозг, который ни на чем не сосредоточен. Представьте, что вы пытаетесь сосредоточиться на какой-то задаче, например на написании программы на языке Perl, автоматизирующей некую процедуру. Но в вашем мозгу роятся и мысли о совещании, которое начнется через час, о трех других задачах, которые надо решить сегодня, о молоке, которое надо купить по дороге домой, и о том, что ваш шеф сказал вам утром. Все эти мысли занимают место в передней части вашего мозга, отбирая его ресурсы у программы, которую вы пишете! Как вы думаете, легко ли ей ужиться с тем, чем забита ваша голова?
Вы, вероятно, не думаете, что, стараясь не забыть о покупке молока после работы, отнимаете ресурсы у задачи, над которой работаете, но дело обстоит именно так. Какие-то участки вашего мозга заняты поддержкой этой информации. Аналогичным образом работает динамическая оперативная память. Информация в ней непрерывно регенерируется, иначе она будет утрачена. (Интересно, что при использовании статической оперативной памяти регенерация информации не происходит, но стоит такая реализация намного дороже.) Поддержание памяти передней части мозга в оперативном состоянии — такая же работа мозга, как и любая другая его деятельность.
Очистите ваш мозг от всех этих «не забыть бы», делегировав ответственность за их запоминание другой системе. Поставьте будильник, чтобы он зазвонил незадолго до совещания, занесите три задачи в список дел (см. главу 5), а «молоко» — в список покупок и пометьте в ежедневнике, что завтра утром надо спросить у шефа, что же он имел в виду (см. главу 8). Теперь вы избавились от посторонних мыслей и освободили голову для задачи, над которой работаете. Не бойтесь забыть о том, что надо было помнить; доверяйте системам, которым вы делегировали эту функцию.
Конечно, вы умный человек. Вы можете помнить обо всех этих вещах и работать одновременно, но, спрашивается, ради чего? По сравнению со многими своими коллегами я туп как дуб, но с помощью этих методов я расчищаю игровое поле. Если вы умный человек, то сможете работать с эффективностью гения. А если вы гений, то зачем вам эта книга? Дайте и нам какой-то шанс!
Вам трудно заснуть?
Заснуть — все равно что дать мозгу расслабиться. Как вы можете расслабиться, если вам надо помнить о завтрашних делах? У вас не получится и то и другое одновременно.
Положите рядом с кроватью ручку и блокнот. Если что-то не дает вам заснуть, сделайте запись в блокноте и снова попытайтесь заснуть. Готов поспорить, вы скоро заснете.
Этот прием работает и тогда, когда мы чем-то обеспокоены или рассержены. Беспокойство не дает нам заснуть, потому что мы стараемся не забыть сделать что-то, относящееся к предмету беспокойства. Гнев не дает нам заснуть, потому что мы стараемся не забыть о том, что рассердились. Если вы запишете свои беспокойные или гневные мысли, ваш мозг сможет расслабиться, потому что вы знаете: утром блокнот будет рядом.
Еще лучше, если вы позвоните себе на работу и оставите сообщение на автоответчике. Этот прием можно применить везде, где есть телефон. И он исключает для вас шанс забыть блокнот дома!
У многих сотовых телефонов и МРЗ-плейеров есть встроенный диктофон. Заведите привычку пользоваться диктофоном, чтобы не забыть удачные идеи.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Обработчики прерываний
Обработчики прерываний Функция, которую выполняет ядро в ответ на определенное прерывание, называется обработчиком прерывания (interrupt handler) или подпрограммой обслуживания прерывания (interrupt service routine). Каждому устройству, которое генерирует прерывания, соответствует свой
Запрещение и разрешение прерываний
Запрещение и разрешение прерываний Для локального запрещения прерываний на текущем процессоре (и только на текущем процессоре) и последующего разрешения можно использовать следующий код.local_irq_disable();/* прерывания запрещены ... */local_irq_enable();Эти функции обычно реализуются в
Механизм отложенных прерываний (softirq)
Механизм отложенных прерываний (softirq) Обсуждение существующих методов обработки нижних половин начнем с механизма softirq. Обработчики на основе механизма отложенных прерываний используются редко. Тасклеты — это более часто используемая форма обработчика нижних половин.
Реализация отложенных прерываний
Реализация отложенных прерываний Отложенные прерывания определяются статически во время компиляции. В отличие от тасклетов, нельзя динамически создать или освободить отложенное прерывание. Отложенные прерывания представлены с помощью структур softirq_action, определенных
Использование отложенных прерываний
Использование отложенных прерываний Отложенные прерывания зарезервированы для наиболее важных и критичных ко времени выполнения обработчиков нижних половин в системе. Сейчас только две подсистемы — подсистема SCSI и сетевая подсистема — напрямую используют механизм
Обработчик прерываний таймера
Обработчик прерываний таймера Теперь, когда мы разобрались, что такое jiffies и HZ, а также какова роль системного таймера, рассмотрим реализацию обработчика прерываний системного таймера. Обработчик прерываний таймера разбит на две части: часть, зависимую от аппаратной
Источники прерываний таймера
Источники прерываний таймера На этом мы, пожалуй, закончим наш краткий экскурс по стране таймеров и перейдем к вещам, которые уже не так очевидны.Откуда возникают прерывания таймера? На рисунке ниже приведены аппаратные компоненты (и некоторые характерные для PC значения
Активность прерываний по уровню и по фронту
Активность прерываний по уровню и по фронту Недостает еще одного фрагмента мозаики. Большинство контроллеров прерываний могут быть запрограммированы на чувствительность либо к уровню сигнала прерывания, либо к его фронту.В режиме чувствительности по уровню считается,
Написание обработчиков прерываний
Написание обработчиков прерываний Давайте посмотрим, как настроить обработчики прерываний — вызовы, характеристики и кое-какие стратегии
Подключение обработчиков прерываний
Подключение обработчиков прерываний Для подключения к источнику прерывания воспользуйтесь функцией InterruptAttach() или InterruptAttachEvent().#include <sys/neutrino.h>int InterruptAttachEvent(int intr, const struct sigevent *event, unsigned flags);int InterruptAttach(int intr, const struct sigevent* (*handler)(void *area, int id), const void *area, int size, unsigned flags);Параметр
Обработчики прерываний
Обработчики прерываний Обработчики прерываний в QNX4 могли либо возвратить идентификатор прокси (указывая этим, что надо переключить прокси и таким образом уведомить ее владельца о прерывании), либо возвратить нуль (что означало бы, что в дальнейшем ничего делать не
Обработка прерываний таймера
Обработка прерываний таймера Каждый компьютер имеет аппаратный таймер или системные часы, которые генерируют аппаратное прерывание через фиксированные интервалы времени. Временной интервал между соседними прерываниями называется тиком процессора или просто тиком (CPU
10.1.3 Программы обработки прерываний
10.1.3 Программы обработки прерываний Как уже говорилось выше (раздел 6.4.1), возникновение прерывания побуждает ядро запускать программу обработки прерываний, в основе алгоритма которой лежит соотношение между устройством, вызвавшим прерывание, и смещением в таблице
Обработчики прерываний
Обработчики прерываний Везде, кроме последней главы, все, что мы пока делали в ядре, сводилось к запросам и ответам разным процессам или работали со специальными файлом, посылали ioctl или выдавали системный вызов. Но работа ядра не должна сводится только к обработке
Перенаправление прерываний
Перенаправление прерываний Начнем с попытки устранить самое неприятное из возможных прерываний: к вам обращаются с проблемой, которую должен решить кто-то другой. Может быть, поступим так:— Том, проблема с веб-сервером.— Отлично! Сообщи мне о результатах, когда
11. Самоконтроль — средство против стресса
11. Самоконтроль — средство против стресса «Программировать себя самостоятельно или позволить себя программировать» — так называется книга о тесных отношениях людей с информационными технологиями. Ее автор, Дуглас Рушкофф, описывает скрытое влияние цифровых СМИиК на