Горячая замена
Материал из Википедии — свободной энциклопедии
Горячая замена - замена оборудования в компьютерной системе во время работы (без выключения питания и остановки процессора). Оборудование делится по этому принципу на допускающее горячую замену и не допускающее.
Типичный пример оборудования, допускающего горячую замену - USB.
Содержание |
[править] История
Ранее оборудование, предназначенное для замены во время работы, использовалось только в дорогих системах и считалось сложным в проектировании. В последнее время подобные системы стали распространенными даже на недорогих компьютерах.
Поддерживают горячую замену PCMCIA, USB, FireWire, Fibre Channel и SATA. Среди устройств этого типа - флеш-накопители USB, жесткие диски для серверов, карты расширения форматов PCI-X (в серверах), PCI Express, PCMCIA (также называемые PC Cards), находящие применение в ноутбуках и даже некоторые блоки питания. Не поддерживает горячую замену протокол IDE.
[править] Конструкция системы
Компьютеры, рассчитанные на замену оборудования "на ходу" должны тем или иным способом определять, что устройство отсоединено, а также содержать электрические цепи, нечувствительные к скачкам напряжения при подключении и отключении. Кроме того, программная часть должна быть рассчитана на внезапную потерю связи с устройством.
Некоторые схемы горячей замены требуют предварительно выполнения команды на отсоединение, что упрощает их конструкцию, однако угрожает целостности данных, если устройство не будет отсоединено правильным способом или в нем возникнет ошибка.
Более сложные схемы обладают запасом избыточности и легко восстанавливают данные при внезапном отключении устройства.
Термин "горячая замена" используется в двух значениях. С одной стороны, он обозначает возможность отсоединить или присоединить устройство без отключения питания. С другой стороны, он также может подразумевать еще и автоматическое определение устройства при подсоединении. Первое значение термина распространяется на интерфейсы RS-232, FireWire и простейшие реализации SCSI, второе значение - на USB, FireWire, PCI Express и сложные варианты SCSI. Первое значение термина часто называют холодным подключением.
[править] Конструкция гнезда
В большинстве современных устройств, допускающих горячую замену, используются подвижные контакты. Один из них делается длиннее других, чтобы первым входить в контакт с присоединяемой частью, через него подключается заземляющий провод. Остальные контакты делаются короче, всего может быть до 3 различных длин. Задержка между подключением первого контакта и последующих составляет от 25 до 250 миллисекунд.
Цепи питания подключаются в две стадии, в первой из которых с помощью более длинных контактов подключается цепь, ограниченная по току, а затем более короткими - питание полной мощности. Все цепи, участвующие в соединении, содержат защиту от статического электричества.
Вот пример типичной последовательность подключения:
- 1. Замыкаются наиболее длинные контакты (заземление). Тем самым достигается электрическая безопасность соединения и защита от статического заряда.
- 2. Замыкаются длинные или средние контакты предварительного питания. Заряжаются входные контуры цепей питания.
- 3. Задержка в десятки миллисекунд.
- 4. Подключаются короткие контакты питания.
- 5. Соединение считается установленным. Включается сигнал инициализации питания.
- 6. Цепь мягкого включения питания подает напряжение на устройство.
- 7. Задержка в десятки миллисекунд.
- 8. Цепь питания закончила мягкое подключение. Выключается сигнал инициализации питания.
- 9. Устройство начинает полноценную работу.
Особую трудность представляет соединение нескольких устройств. Подсоединение второго, третьего устройства может нарушать работу уже подключенного. Для борьбы с этим явлением используют фильтры в выходных цепях или временное логическое отключение передачи данных.
[править] Горячее подключение в программном обеспечении
Термин горячее подключение также используется применительно к программному обеспечению и означает возможность изменять программу без остановки ее выполнения. Такую возможность поддерживают лишь несколько языков программирования, включая Lisp, Erlang и Smalltalk. Язык Java поддерживает эту возможность только в процессе работы дебаггера (Java Platform Debugger Architecture, JPDA).