Кіріспе

Қауіпсіз семантика – компьютерлік жабдықтың тұрақтылық моделі. Ол параллельді компьютерде немесе бірлесіп жұмыс істейтін компьютерлер желісінде бірнеше процессорлармен ортақ пайдаланылатын дерек тізілімінің қамтамасыз ететін кепілдіктің бір түрін сипаттайды.

Тарих

Қауіпсіз семантика алғаш рет Лесли Лэмпорт 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-тан қатаң үлкен.