Первая исторически появившаяся оптимизация состоит в том, что страницы, предназначенные только для чтения, могут дублироваться. Это не понижает уровня согласованности. Но эта оптимизация ничего не даёт, если один процесс записывает одно слово вверху некоторой страницы, а другой процесс в то же самое время пытается записать другое слово внизу той же самой страницы. В таком случае страница передаётся туда и обратно. Данная ситуация называется ложным совместным использованием.
Проблему ложного совместного использования можно решить по-разному. Например, понизив согласованность от согласованности по последовательности до свободной согласованности. Страница может присутствовать в нескольких узлах одновременно, но при захвате критической области каким-либо процессом для записи все экземпляры, кроме захваченного объявляются недействительными.
Кроме DSM существует множество других систем, объединяющих память на логическом уровне. Различия в системах, помимо прочего, происходят от различных масштабов объединения, на которые рассчитана система: одни системы работают в пределах одной организации, другие рассчитаны на миллионы параллельных процессов, содержащие миллиарды объектов. Во втором случае дополнительные проблемы вносятся тем, что на каждой рабочей станции используются свои технологии дублирования, защиты и так далее.
[5]
Повышение надёжности хранения и передачи данных основывается на внесении избыточности.
Расстояние Хэмминга между двумя двоичными словами и равен количеству различающихся в них бит.
Например, интервал Хэмминга между словами 00010001 и 10010000 равен 2.
Нетрудно доказать, что интервал Хэмминга даёт метрику на множестве слов.
Если интервал Хемминга двух слов равен , то необходимо и достаточно битовых ошибок, чтобы превратить одно слово в другое.
К слову, состоящему из бит данных, добавляется контрольных бит, которые однозначно определяются битами данных. В результате получается так называемое кодированное слово. Кодированное слово имеет длину , но из комбинаций нулей и единиц допустимыми являются только .
Если в памяти обнаружено недопустимое кодированное слово, становится известно, что произошла ошибка. При определённых обстоятельствах её можно даже исправить.
Пусть — множество всех допустимых слов для данного кода. Тогда интервалом Хэмминга кода называется величина .
Именно интервал Хэмминга кода определяет возможности обнаружения и исправления ошибок. Действительно, чтобы обнаружить любые ошибок в битах, необходим код с интервалом Хэмминга не менее .
Простейшим примером кода с обнаружением ошибок является код с битом чётности. Интервал Хэмминга этого кода равен 2. Он позволяет обнаружить одиночную ошибку в любом бите кодированного слова. Но он не позволяет исправить её.
Если интервал Хэмминга кода не менее , то можно исправить любые ошибок в битах.
Теорема. Пусть — множество допустимых слов кода с интервалом Хэмминга не менее .
Пусть далее, ; — такое слово, что . (Поскольку интервал кода равен , .) Пусть — такое допустимое слово, что .
Тогда .
Доказательство.
, поэтому . Поскольку интервал Хэмминга кода не менее , то отсюда следует .
Теорема доказана.
Главная проблема теперь — построение кода с заданным интервалом Хэмминга и минимальным количеством контрольных бит.
Прежде, чем рассматривать общий принцип, проиллюстрируем его на частном примере. Пусть требуется построить код для с интервалом 3, то есть код, позволяющий не только обнаруживать, но и исправлять одиночные ошибки.
По одному биту четырёхбитного слова записывается в сектора, полученные пересечением кругов , , и , как указано на рисунке 16.1а.
Рис. 16.1. Код для четырёхбитных слов с интервалом 3 а — расположение битов данных б — биты данных и контрольные биты в — ошибка в первом бите данных
Добавляется три контрольных бита по одному в каждый из трёх кругов (рис. 16.1б). Контрольный бит показывает чётность бит, попадающих в его круг. При такой кодировке в каждом круге должно находиться чётное количество единичных бит.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.