ТЕХНОЛОГИИ УНИЧТОЖЕНИЯ ПРИ УДАЛЕНИИ ДЛЯ ОПТИМИЗАЦИИ ТВЕРДОТЕЛЬНОГО НАКОПИТЕЛЯ
TECHNOLOGIES OF DESTRUCTION IN DELETION TO OPTIMISE SOLID-STATE DRIVE

Уровень техники
Твердотельные накопители ("SSD") становятся экономичным средством для использования в качестве массовых запоминающих устройств с возможностью загрузки. SSD обычно изготавливаются так, чтобы включать в себя устройства флэш-памяти, такие как устройства энергонезависимой флэш-памяти, включающие в себя устройства типа логического НЕ-И ("NAND"). Соответственно, операция записи SSD имеет другие принципы, чем как это делает типичный накопитель на жестком диске ("HDD"), который может перезаписывать недействительные (удаленные) данные действительными (новыми) данными в том же физическом месте на диске. Операции записи SSD типично включают в себя операцию странично-ориентированного объединения с тем, чтобы объединять новые данные с существующими данными одного и того же блока памяти в новый блок памяти. Если существующие данные должны быть недействительными, такая операция объединения может излишне повлиять на производительность SSD. Дополнительно, по причинам надежности SSD типично выполняют операции "выравнивания степени износа", чтобы уменьшать ухудшение срока эксплуатации ячейки памяти. Такие операции типично перемещают данные из одного блока или страницы в другой блок или страницу. Если данные на одной странице должны быть недействительны, операция выравнивания степени износа для этой страницы может излишне повлиять на производительность SSD и потенциально снижать надежность SSD. Дополнительно, типичные файловые системы обычно хранят информацию о состоянии, указывающую, какие данные рассматриваются как удаленные (недействительные), и какие - нет. Но эти данные типично не переносятся на соответствующее запоминающее устройство, такое как HDD или SSD, способом, который соответствует всем данным, и где данные типично хранятся на устройстве как один или более логических адресов блоков, например. Соответственно, запоминающие устройства, как противоположность файловым системам, обычно не знают о том, какие данные действительны, а какие данные недействительны, и, следовательно, типично не имеют возможности распознавать недействительные данные с тем, чтобы избегать ненужных операций с такими данными.
Сущность изобретения
Далее представлена упрощенная сущность изобретения, для того чтобы предоставить базовое понимание читателям. Эта сущность не является всесторонним обзором изобретения, и она не идентифицирует ключевые/критические элементы изобретения или не очерчивает рамки изобретения. Ее единственная цель - представить некоторые понятия, раскрытые в данном документе, в упрощенной форме в качестве вступления в более подробное описание, которое изложено далее.
Настоящие примеры представляют технологии идентификации данных, сохраненных на устройстве твердотельного накопителя ("SSD"), которые соответствуют данным, ассоциированным с событием удаления, и пометки удаленных данных, сохраненных на SSD, как недействительных, так что SSD может избежать ненужных операций с недействительными данными. В состав изобретения включены интерфейсы, пригодные, чтобы сообщать информацию о недействительных данных и предоставлять команду уничтожения при удалении, которая предоставляет информацию о недействительных данных, достаточную для того, чтобы идентифицировать соответствующие SSD-данные, которые должны быть помечены как недействительные.
Многие из сопутствующих признаков будут более легко поняты, поскольку они становятся более понятными посредством ссылки на последующее подробное описание, рассматриваемое в связи с сопровождающими чертежами.
Описание чертежей
Настоящее описание будет лучше понятно из следующего подробного описания, рассматриваемого в связи с сопровождающими чертежами, на которых:
фиг.1 является блок-схемой, показывающей традиционную операционную систему и интерфейс с твердотельным накопителем и новую операционную систему и интерфейс с твердотельным накопителем.
Фиг.2 является блок-схемой последовательности операций, показывающей пример способа уничтожения при удалении.
Фиг.3 является блок-схемой, показывающей примерное вычислительное окружение, в котором могут быть осуществлены технологии, описанные в данном документе.
Одинаковые ссылочные номера используются для того, чтобы обозначать одинаковые части на сопровождающих чертежах.
Подробное описание
Подробное описание, предоставленное ниже в связи с сопровождающими чертежами, предназначено в качестве описания настоящих примеров и не предназначено представлять только те формы, в которых настоящие примеры могут быть сконструированы или использованы. Описание излагает, по меньшей мере, некоторые из функций примеров и/или последовательность этапов примеров создания и работы. Однако одинаковые или эквивалентные функции и последовательности могут быть выполнены посредством других примеров.
Хотя настоящие примеры описаны и иллюстрированы в данном документе как осуществляемые в вычислительном окружении, описанное окружение предоставлено в качестве примера, а не ограничения. Как поймут специалисты в данной области техники, настоящие примеры подходят для применения во множестве различных типов вычислительных окружений.
Фиг.1 является блок-схемой, показывающей традиционную операционную систему 110a и интерфейс 120a с твердотельным накопителем 130 и новую операционную систему 110b и интерфейс 120b с твердотельным накопителем ("SSD") 130. Традиционная операционная система 110a включает в себя примерную традиционную файловую систему 112a, соединенную с примерным традиционным драйвером 114a SSD через традиционный интерфейс 113a. Одним примером интерфейса 113a является интерфейс управления вводом/выводом ("IOCTL"). Файловая система 112a типично управляет абстракцией данных как файлами, папками, свойствами и т.п. Данные могут быть любым типом цифровой информации, исполняемыми инструкциями или т.п. Эти абстракции типично преобразуются в физические конструкции доступа и хранения данных драйвером 114a SSD, которое взаимодействует с SSD 130 через интерфейс 120a, чтобы хранить и осуществлять доступ к данным на SSD 130. Примеры интерфейса 120a включают в себя интерфейс усовершенствованной технологии присоединения ("ATA") и интерфейс малых компьютерных систем ("SCSI") и т.п.
Примерный SSD 130 является устройством твердотельного накопителя, изготовленным с помощью устройств твердотельной памяти или т.п. в качестве носителя хранения, как противоположность магнитным или оптическим носителям хранения, таким как традиционные HDD, гибкие диски, компакт-диски или т.п. Эти устройства твердотельной памяти могут быть флэш-памятью или любым другим типом или комбинацией твердотельной памяти, оперативного запоминающего устройства ("RAM") или т.п. Такие SSD-устройств могут быть загрузочными устройствами и могут рассматриваться как основные устройства хранения или устройства массовой памяти, такие как описанные в связи с фиг.3. Такие SSD-устройства могут быть сложными SSD-устройствами, т.е. SSD-устройствами, содержащими множество типов или классов памяти, где каждый класс имеет различные характеристики производительности или скорости доступа. Описания функциональности или действия SSD-устройства в данном документе обычно ссылаются на SSD-устройство и/или соответствующий драйвер SSD, такой как примерные драйверы 114a и 114b.
В другом примере SSD 130 может быть традиционным HDD, оптическим накопителем, сетью хранения данных ("SAN"), запоминающим устройством на ленте и/или любой другой формой запоминающего устройства, включающей в себя устройства массовой памяти, описанные в связи с фиг.3, которые могут включать в себя данные, которые могут рассматриваться как недействительные. Настоящее изобретение может применяться к любым таким запоминающим устройствам, системам, механизмам или т.п.
Рассмотрим следующий пример, описывающий то, как недействительные данные типично представлены в SSD. Пользователь, такой как человек или система, может указывать через любой подходящий интерфейс, что некоторые данные, такие как файл, должны быть удалены. Файловая система модифицирует постоянную структуру данных, указывая, что файл был удален, как, например, посредством уничтожения ссылки на удаленный файл из каталога или т.п. Дополнительно, файловая система может пометить данные, представляющие файл в SSD, как недействительные. В одном примере это включает в себя отправку в SSD информации о местоположении файла, указывающую начало файла, через логическую адресацию блоков ("LBA"), за которой типично следует длина файла. LBA или информация о местоположении данных, описывающая данные, которые должны быть удалены, типично отправляется командой через интерфейс с SSD-устройством. При приеме команды и ассоциированной информации о местоположении данных SSD и/или его устройство управления может пометить как недействительные данные, сохраненные в SSD, которые соответствуют удаленному файлу. В традиционной вычислительной системе файловая система может знать о файлах, которые удалены, но SSD - нет. Типично SSD знает только то, что данные записаны на него и считаны с него без различия между действительными и недействительными данными. Некоторые SSD и их ассоциированные драйвера могут выполнять операции, которые смогут извлекать пользу из осведомленности о данных, сохраненных на них, которые являются недействительными. Например, операция записи типичного SSD имеет другие принципы, чем это делает типичный накопитель на жестком диске ("HDD"), который может перезаписывать недействительные (удаленные) данные действительными (новыми) данными в том же физическом месте на диске. В отличие от типичных HDD, операции записи SSD типично включают в себя операцию странично-ориентированного объединения, предназначенную, чтобы объединять новые данные с существующими данными одного и того же блока памяти в новый блок памяти. Если существующие данные должны быть недействительными, такая операция объединения может излишне повлиять на производительность SSD. Дополнительно, по причинам надежности SSD типично выполняют операции "выравнивания степени износа", чтобы уменьшать ухудшение срока эксплуатации ячейки памяти. Такие операции типично перемещают данные из одного блока памяти в другой блок или т.п. Если данные страницы и/или блока должны быть недействительны, операция выравнивания степени износа для этой страницы/блока может излишне повлиять на производительность SSD и потенциально уменьшить надежность SSD.
При использовании в данном документе недействительные данные могут быть данными, сохраненными в ячейках памяти, таких как ячейки SSD-памяти, которые были удалены системой более высокого уровня, такой как файловая система, драйвер, приложение или т.п., или которые не используются, или т.п. Например, когда файл удален, данные, ассоциированные с файлом, могут рассматриваться как недействительные. Отметим, что такие удаленные или недействительные данные типично не уничтожаются или стираются, а могут просто быть классифицированы как недействительные. В одном примере такие недействительные данные остаются сохраненными в запоминающем устройстве. В другом примере недействительные данные могут "вычищаться из памяти" или иным образом уничтожаться, перезаписываться или т.п. Данные, которые не классифицированы как недействительные, типично считаются действительными. Как правило, файловая система или т.п. знает о классификации данных как действительных или недействительных, в противоположность SSD.
Примерная новая операционная система 110b включает в себя примерную новую файловую систему 112b, соединенную с примерным новым драйвером 114b SSD через традиционный интерфейс 113b и новый интерфейс 140. В целом, функциональность элементов 110b, 112b и 114b соответствует их похожим образом пронумерованным "1 xxa" традиционным аналогам, но новая функциональность добавлена для настоящего изобретения. Примерная файловая система 112b может альтернативно быть приложением или т.п., воплощающим функциональность файловой системы.
Файловая система 112b использует новый интерфейс 140, чтобы передавать информацию о недействительных данных драйверу 114b SSD. Такая информация о недействительных данных может включать в себя информацию о местоположении и размере файла. Интерфейс 140 позволяет файловой системе 112b точно указывать драйверу 114b SSD через информацию о недействительных данных, какие данные, сохраненные в SSD 130, являются недействительными. В одном примере интерфейсом 140 является новая команда IOCTL. В другом примере интерфейсом 140 является расширение существующей команды IOCTL. Интерфейс 140 может соответствовать любому формату и/или структуре, подходящей для связывания файловой системы и драйвера SSD, достаточной, чтобы сообщать информацию о недействительных данных. Дополнительно, интерфейс 140 может также позволять файловой системе 112b указывать драйверу 114b SSD, что действительные данные, записываемые в SSD 130, являются действительными, инструктируя не помечать действительные данные, сохраненные на SSD 130, как недействительные.
Интерфейс 120b, в одном примере, соответствует ATA-интерфейсу с дополнительной функциональностью для передачи информации о недействительных данных. А в другом примере интерфейс 120b соответствует SCSI-интерфейсу с дополнительной функциональностью для передачи информации о недействительных данных. Интерфейс 120b может соответствовать любому формату и/или структуре, подходящей для связывания драйвера SSD и SSD-устройства, достаточной, чтобы сообщать информацию о недействительных данных.
Учитывая информацию о недействительных данных, драйвер 114b SSD типично взаимодействует с SSD 130 через интерфейс 120b, чтобы пометить соответствующие данные, блоки, страницы или т.п. как недействительные согласно информации о недействительных данных. Соответственно, операции слияния при записи, операции выравнивания степени износа и т.п. могут выполняться без излишней обработки недействительных данных. Дополнительно, операции оптимизации могут выполняться по SSD-блокам, страницам и т.п., которые помечены как содержащие недействительные данные.
Фиг.2 является блок-схемой последовательности операций, показывающей пример способа 200 уничтожения при удалении. Такой способ может использоваться, чтобы пометить удаленные SSD-данные как недействительные, иначе известный как "уничтожение при удалении". Недействительные или устраненные данные, таким образом, устраняются из рассмотрения SSD-устройством в качестве действительных данных. Это освобождает SSD-устройство от выполнения любых операций по защите или поддержке таких данных.
Этап 210 указывает событие удаления, оказывающее влияние на данные, сохраненные на SSD-устройстве. Одним примером такого события удаления является операция удаления файла, выполненная файловой системой, при этом удаляемый файл в настоящий момент хранится на SSD-устройстве. В других примерах любая система или механизм может выполнять операцию удаления, оказывающую влияние на данные, сохраненные на SSD-устройстве. Типично, драйвер SSD, соответствующий SSD-устройству, принимает и/или обнаруживает событие удаления. Способ 200 типично продолжается на этапе 220.
Этап 220 указывает идентификацию того, какие данные, сохраненные на SSD-устройстве, соответствуют удаляемым данным. В одном примере затрагивается сопоставление данных удаляемого файла с соответствующими данными, сохраненными в SSD. Такое сопоставление имеет в результате информацию о недействительных данных, идентифицирующую, какие данные, сохраненные в SSD, должны быть помечены как недействительные. Такое сопоставление может быть выполнено системой, выполняющей операцию удаления. Информация о недействительных данных идентифицирует точные данные, сохраненные в SSD, которые соответствуют удаляемому файлу и которые должны быть помечены как недействительные. Такие данные могут быть сохранены в SSD как страницы, блоки или т.п. После того как недействительные данные, соответствующие операции удаления и сохраненные в SSD, идентифицированы, способ 200 типично продолжается на этапе 230.
Этап 230 указывает команду уничтожения при удалении. Эта команда типично включает в себя информацию о недействительных данных и инструктирует SSD-устройство и/или его драйвер помечать указанные данные как недействительные. В одном примере такая команда выдается системой, выполняющей операцию удаления, такой как файловая система. После того как команда уничтожения при удалении была выдана, способ 200 типично продолжается на этапе 240.
Этап 240 указывает пометку удаленных данных как недействительных. Такая пометка может иметь любую форму, достаточную, чтобы идентифицировать недействительные данные для SSD-устройства. Такая пометка может затрагивать пометку страниц и/или блоков или т.п. как недействительных в зависимости от того, как SSD структурирует свои данные. Альтернативно, такая пометка может включать в себя перемещение диапазона недействительных данных в таблицу недействительных данных или т.п. После того как удаленные данные помечены как недействительные, SSD-устройство освобождается от выполнения любых операций по защите, поддержке или т.п. недействительных данных. Отметим, что данные считаются удаленными системой более высокого уровня, такой как файловая система, и что соответствующие данные теперь помечаются как недействительные в SSD таким образом, что SSD может распознать соответствующие данные как недействительные. Например, если файловая система удаляет файл "foo.bar", тогда все данные, сохраненные в SSD, которые содержат файл foo.bar, помечаются как недействительные. Информация о сроке может также ссылаться на данные. После того как удаленные данные помечены как недействительные, способ 200 типично завершается.
Фиг.3 является блок-схемой, показывающей примерное вычислительное окружение 300, в котором могут быть осуществлены технологии, описанные в данном документе. Подходящее вычислительное окружение может быть осуществлено с помощью многочисленных универсальных или специализированных систем. Примеры хорошо известных систем могут включать в себя, но не только, сотовые телефоны, персональные цифровые помощники ("PDA"), персональные компьютеры ("PC"), карманные или переносные устройства, микропроцессорные системы, многопроцессорные системы, серверы, рабочие станции, потребительские электронные устройства, телевизионные приставки и т.п.
Вычислительное окружение 300 типично включает в себя вычислительную систему общего назначения в форме вычислительного устройства 301, связанного с различными компонентами, такими как периферийные устройства 302, 303, 304 и т.п. Система 300 может связываться с различными другими компонентами, такими как устройства 303 ввода, включающие в себя устройства распознавания голоса, сенсорные панели, клавиши, клавиатуры и/или указывающие устройства, такие как мышь или трекбол, через один или более интерфейсов 312 ввода/вывода ("I/O"). Компоненты вычислительного устройства 301 могут включать в себя один или более процессоров (включающих в себя центральные процессоры ("CPU"), графические процессоры ("GPU"), микропроцессоры ("μP") и т.п.) 307, системную память 309 и системную шину 308, которая типично связывает различные компоненты. Процессор 307 типично обрабатывает или выполняет различные машиноисполняемые инструкции, чтобы управлять работой вычислительного устройства 301 и связываться с другими электронными и/или вычислительными устройствами, системами или окружением (не показано) через различные соединения связи, такие как сетевое соединение 314 или т.п. Системная шина 308 представляет любое число нескольких типов структур шин, включающих в себя шину памяти или контроллер памяти, периферийную шину, последовательную шину, ускоренный графический порт, процессорную или локальную шину, использующую любую из множества шинных архитектур, и т.п.
Системная память 309 может включать в себя машиночитаемые носители в форме энергозависимой памяти, такой как оперативное запоминающее устройство ("RAM"); и/или энергонезависимой памяти, такой как постоянное запоминающее устройство ("ROM") или флэш-память ("FLASH"). Основная система ввода/ввода ("BIOS") может быть сохранена в энергонезависимой памяти или т.п. Системная память 309 типично хранит данные, машиноисполняемые инструкции и/или программные модули, содержащие машиноисполняемые инструкции, которые непосредственно доступны и/или обрабатываются в настоящий момент одним или более процессорами 307.
Устройства 304 и 310 массовой памяти могут быть связаны с вычислительным устройством 301 или включены в вычислительное устройство 301 через связывание с системной шиной и/или шиной запоминающих устройств или т.п. Такие устройства 304 и 310 массовой памяти могут включать в себя энергонезависимое RAM, накопитель на магнитных дисках, который считывает с и/или записывает на съемный, энергонезависимый магнитный диск (например, "гибкий диск") 305 и/или накопитель на оптических дисках, который считывает с и/или записывает на энергонезависимый оптический диск, такой как CD-ROM, DVD-ROM 306. Альтернативно, устройство массовой памяти, такое как жесткий диск 310, может включать в себя несъемный носитель хранения. Другие устройства массовой памяти могут включать в себя карты памяти, флэш-карты, устройства хранения на ленте и т.п.
Любое число компьютерных программ, файлов, структур данных и т.п. могут храниться в массовом запоминающем устройстве 310, других запоминающих устройствах 304, 305, 306 и системной памяти 309 (типично ограниченной доступным пространством) и включают в себя, в качестве примера, а не ограничения, операционные системы, прикладные программы, файлы данных, структуры каталогов, машиноисполняемые инструкции и т.п.
Компоненты или устройства вывода, такие как устройство 302 отображения, могут быть связаны с вычислительным устройством 301, типично через интерфейс, такой как адаптер 311 дисплея. Устройство 302 вывода может быть жидкокристаллическим дисплеем ("LCD"). Другие примерные устройства вывода могут включать в себя принтеры, устройства вывода звука, устройства вывода речи, дисплеи на электронно-лучевых трубках ("CRT"), тактильные устройства или другие чувствительные механизмы вывода или т.п. Устройства вывода могут позволять вычислительному устройству 301 взаимодействовать с людьми-операторами или другими машинами, системами, вычислительными окружениями или т.п. Пользователь может взаимодействовать с вычислительным окружением 300 через любое число различных I/O-устройств 303, таких как сенсорная панель, кнопки, клавиатура, мышь, джойстик, игровой планшет, порт данных и т.п. Эти и другие I/O-устройства могут быть связаны с процессором 307 через I/O-интерфейсы 312, которые могут быть связаны с системной шиной 308, и/или могут быть связаны посредством других интерфейсов и шинных структур, таких как параллельный порт, игровой порт, универсальная последовательная шина ("USB"), шина сверхбыстрой передачи данных, инфракрасный ("IR") порт и т.п.
Вычислительное устройство 301 может работать в сетевом окружении через соединения связи с одним или более удаленными вычислительными устройствами через одну или более сотовых сетей, беспроводных сетей, локальных вычислительных сетей ("LAN"), глобальных вычислительных сетей ("WAN"), сетей устройств хранения данных ("SAN"), Интернет, линий радиосвязи, оптических линий связи и т.п. Вычислительное устройство 301 может быть связано с сетью через сетевой адаптер 313 или т.п., или, альтернативно, через модем, соединение по цифровой абонентской линии связи ("DSL"), соединение по цифровой сети с интеграцией услуг ("ISDN"), Интернет-соединение, беспроводную линию связи или т.п.
Соединение 314 связи, такое как сетевое соединение, типично обеспечивает связь со средой передачи, такой как сеть. Среда передачи данных типично предоставляет машиночитаемые и машиноисполняемые инструкции, структуры данных, файлы, программные модули и другие данные с помощью модулированного сигнала данных, такого как сигнал несущей или другой механизм передачи. Термин "модулированный сигнал данных" типично означает сигнал, который имеет одну или более из своих характеристик, установленных или изменяемых таким образом, чтобы кодировать информацию в сигнале. В качестве примера, но не ограничения, среда передачи данных включает в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение или т.п., и беспроводную среду, такую как акустическая среда, радиочастота, инфракрасное излучение и другие механизмы беспроводной связи.
Источник 390 питания, такой как аккумулятор или блок питания, типично предоставляет энергию для частей или всего вычислительного окружения 300. В случае, когда вычислительное окружение 300 является мобильным устройством или переносным устройством или т.п., источником 390 питания может быть аккумулятор. Альтернативно, в случае, когда вычислительное окружение 300 является настольным компьютером или сервером или т.п., источником 390 питания может быть блок питания, предназначенный для подключения к источнику переменного тока ("AC"), например, через настенную розетку.
Некоторые мобильные устройства могут не включать в себя множество из компонентов, описанных в связи с фиг.3. Например, электронный значок может состоять из проволочной спирали вместе с простым процессором 307 или т.п., спираль сконфигурирована, чтобы действовать как источник 390 питания при нахождении поблизости от устройства считывателя карт или т.п. Такая спираль может также быть сконфигурирована, чтобы действовать как антенна, связанная с процессором 307 или т.п., рамочная антенна способна обеспечивать форму связи между электронным значком и устройством считывателя карт. Такая связь может не подразумевать создание сети, а может альтернативно быть универсальной или специализированной связью через телеметрию, соединения точка-точка, RF, IR, звуковое или другое средство. Электронная карта может не включать в себя дисплей 302, I/O-устройство 303 или многие из других компонентов, описанных в связи с фиг.3. Другие мобильные устройства, которые могут не включать в себя многие из компонентов, описанных в связи с фиг.3, в качестве примера, но не ограничения, включают в себя электронные браслеты, электронные метки, имплантируемые устройства и т.п.
Специалисты в области техники поймут, что запоминающие устройства, используемые, чтобы предоставить машиночитаемые и машиноисполняемые инструкции и данные, могут быть распределены по сети. Например, удаленный компьютер или запоминающее устройство могут хранить машиночитаемые и машиноисполняемые инструкции в форме приложений системы программного обеспечения и данных. Локальный компьютер может обращаться к удаленному компьютеру или запоминающему устройству через сеть и загружать часть или все приложение системы программного обеспечения или данные и может выполнять любые машиноисполняемые инструкции. Альтернативно, локальный компьютер может загружать части программного обеспечения или данные, которые необходимы, или распределенно обрабатывать программное обеспечение, выполняя некоторые из инструкций на локальном компьютере, а некоторые на удаленных компьютерах и/или устройствах.
Специалисты в области техники также поймут, что, используя традиционные технологии, все или части машиноисполняемых инструкций программного обеспечения могут исполняться специально предназначенной электронной схемой, такой как цифровой сигнальный процессор ("DSP"), программируемая логическая матрица ("PLA"), дискретные схемы и т.п. Термин "электронное устройство" может включать в себя вычислительные устройства или потребительские электронные устройства, содержащие любое программное обеспечение, микропрограммное обеспечение или т.п., или электронные устройства или схемы, не содержащие программного обеспечения, микропрограммного обеспечения или т.п.
Термин "микропрограммное обеспечение" типично ссылается на исполняемые инструкции, код, данные, приложения, программное обеспечение, программы или т.п., хранящиеся в электронном устройстве, таком как ROM или т.п. Термин "программное обеспечение", как правило, ссылается на исполняемые инструкции, код, данные, драйверы, приложения, программы или т.п., хранящиеся в или на любой форме машиночитаемых носителей. Термин "машиночитаемые носители" типично ссылается на системную память, запоминающие устройства и ассоциированные с ними носители и т.п.
Принимая во внимание многие возможные варианты осуществления, к которым принципы изобретения и упомянутые выше примеры могут быть применены, должно быть понятно, что примеры, описанные в данном документе, подразумеваются только как иллюстративные и не должны быть интерпретированы как ограничивающие рамки настоящего изобретения. Следовательно, изобретение, которое описано в данном документе, рассматривает все такие варианты осуществления, как входящие в рамки последующей формулы и любых ее эквивалентов.