|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Alexey Krasnov 2:5020/400 24 Apr 2003 17:22:17 To : All Subject : Журналирование -------------------------------------------------------------------------------- Привет, Встала задача сохранения информации в ОЗУ с батарейным питанием, подключенного к однокристалке, не защищенной от долговременных провалов питания. Кроме того, необходимо исходить из предположения о ненадежности батарейного питания ОЗУ (т.е. вероятность сохранения достоверной информации в нем не единичная). Информация пишется неодинаковыми блоками по 10-80 байт, ОЗУ организуется в виде FIFO с перезаписью старых блоков новыми по заполнению буфера (каждый блок в начале имеет байт длины, поэтому все блоки пишутся друг за другом, образуя нечто вроде односвязного списка). То есть стоит две задачи: 1. Обеспечение устойчивости к ненадежной батарейной поддержке ОЗУ. 2. Обеспечение устойчивости к просечкам питания однокристаллки. Первая задача решается введением контрольной суммы каждого блока (например, crc16), т.е. тут все относительно просто. Со вторым все значительно сложнее. Допустимо потерять последний записанный блок, откатившись к предыдущему, не нарушив логической структуры очереди (сохранив предыдущие значения указателей на голову и хвост). Hутром чую, что здесь необходимо вести журналирование выполняемых операций, но никак не могу сообразить, как сделать это устойчивым к перезагрузкам. Вопрос: как это реализовать, или может не стоит изобретать велосипед и это уже где-то реализовано ? Есть конечно тупой вариант - ведения двух копий FIFO, но ввиду ограниченности размера ОЗУ он не проходит. Удачи. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/2094926095b2.html, оценка из 5, голосов 10
|