Кіріспе
Қауіпсіз семантика – компьютерлік жабдықтың тұрақтылық моделі. Ол параллельді компьютерде немесе бірлесіп жұмыс істейтін компьютерлер желісінде бірнеше процессорлармен ортақ пайдаланылатын дерек тізілімінің қамтамасыз ететін кепілдіктің бір түрін сипаттайды.
Тарих
Қауіпсіз семантика алғаш рет Лесли Лэмпорт 1985 жылы анықтады. Ол 1986 жылы Лампорттың "Процестер аралық байланыс туралы" еңбегінде ресми түрде анықталды. Қауіпсіз тіркелім көптеген таратылған жүйелерде іске асырылды.
Сипаттама
Қауіпсіз семантика бір жазушы, бірақ бірнеше оқырман (SWMR) болатын айнымалы үшін анықталады. SWMR тіркелімі, егер әрбір оқу операциясы келесі қасиеттерді қанағаттандырса, қауіпсіз болып есептеледі:
Жазу операциясымен бір мезгілде орындалмаған оқу операциясы, соңғы жазу операциясы жазған мәнді қайтарады. Жазу операциясымен бір мезгілде орындалатын оқу операциясы, тіркеліктің рұқсат етілген мәндер диапазонындағы кез келген мәнді қайтара алады (мысалы, 0, 1, 2). Атап айтқанда, оқу және жазу операциясының бір мезгілде орындалуы кезінде, оқу жазумен жазылмаған мәнді қайтара алады. Қайтарылатын мән тек тіркеліктің доменіне жатуы керек. Бинарлық қауіпсіз тіркелікті, мәнінің шағылысуының моделі ретінде қарастыруға болады. Тіркеліктің бұрынғы мәні қандай болса да, жазу аяқталғанға дейін оның мәні шағылысуы мүмкін. Сондықтан, жазумен бір мезгілде оқығанда 0 немесе 1 қайтарылуы мүмкін. Churn – жүйеге серверлердің қосылуы мен одан шығуы. Baldoni және авторлар көрсеткендей, үздіксіз churn болатын синхронды жүйеде ешбір тіркелік күштірек, реттелген семантикаға ие бола алмайды. Дегенмен, қауіпсіз тіркелікті синхронды емес жүйеде үздіксіз churn кезінде іске асыруға болады. Клиенттік жүйелер серверлік жүйенің оқу және жазу операцияларына жауапты процестердің шекті, кездейсоқ санын қамтиды. Алайда, серверлік жүйе оқу және жазу операцияларының дұрыс орындалуын қамтамасыз етуі керек.
Оқыңыз
Оқу алгоритмі – қосылудың қарапайым түрі. Ерекшелігі – оқу операциясы пайдаланатын хабар тарату механизмі. Клиент (cw) жүйеге хабар жібереді, ал сервер сұрау алғаннан кейін клиентке жауап хабар таратады. Клиент жеткілікті жауаптарды (n f j) алған соң сұрау жіберуді тоқтатады.
Жазу
Клиент (cw) жүйеге әртүрлі раундтарда сұрау жібереді және екі растама алғанша күтеді. (sn = реттік нөмірі) Екі растама алудың себебі – жүйедегі қауіптерден сақтану. Процесс растама (ack) жібергенде, ол бір миллисекундтан кейін тоқтауы мүмкін. Сондықтан клиент растама алмайды. Қауіпсіз тіркеуіштің (егер оқу операциясы жазу операциясымен бір уақытта орындалмаса, соңғы жазылған мәнді қайтару) жарамдылығы кворумдық жүйе арқылы дәлелденді. Екі кворумдық жүйе (Qw, Qr) қарастырылғанда, Qw соңғы мәнді білетін серверлерді, ал Qr оқу сұрауына алынған жауаптардың мәндерін көрсетеді. Әрбір кворумның мөлшері n f j-ге тең. Қауіпсіз тіркеуіштің жарамдылығын дәлелдеу үшін B – Византиялық қателердің саны екенін дәлелдеу қажет. Дәлелдеме: Қызыл аймақ (Qw∩Qr)\B, ал көк аймақ Qr∩B. Егер әрбір кворумның мөлшері n f j болса, онда қызыл аймақта n 3f 2j белсенді сервер бар. Сондықтан, f-тан қатаң үлкен.
The reason for receiving two acknowledgments is to avoid danger in a system. When a process sends an acknowledgement (ack), it may die after one millisecond. Therefore, no confirmation is received by the client. The validity of the safe register (If a read is not concurrent with any write, return the last value written) was proved based on the quorum system. Given two quorum systems (Qw, Qr) Qw indicates the servers that know about the latest value, and Qr indicates values of read responses. The size of each quorum is equal to n f j. Proving the safe register's validity requires proving
were B is the number of Byzantine failures. Proof : Red region indicates (Qw∩Qr)\B and the blue region indicates Qr∩B. From the assumption, the size of each quorum is n f j, so the red region has n 3f 2j active servers. Therefore,
is strictly greater than f.