הערמיט, ווי אַ רעפּראָדוסיבלע קאַנטיינער, גיט אַ געדאַנק פון ווי עס וואָלט זיין אויב די סיסטעם סטאַק צוגעשטעלט ריפּיטאַביליטי ווי אַ אַבסטראַקציע
פאַסעבאָאָק אַנוויילד לעצטנס דורך אַ ויסגאַבע, די קאַטער פון הערמיט, ווא ס פארמירט א סוויווע פֿאַר דיטערמאַניסטיק פּראָגראַם דורכפירונג, וואָס מאכט עס מעגלעך צו דערגרייכן די זעלבע רעזולטאַט און איבערחזרן די דורכפירונג פּראָצעס אויף פאַרשידענע לאָנטשיז ניצן די זעלבע אַרייַנשרייַב דאַטן.
בעשאַס נאָרמאַל דורכפירונג, פאַרשידן עקסטרייניאַס סיבות ווירקן די רעזולטאַט, אַזאַ ווי די קראַנט צייט, פאָדעם סקעדזשולינג פאַנגקשאַנז, ווירטואַל זכּרון אַדרעסעס, דאַטן פון אַ פּסעודאָראַנדאָם נומער גענעראַטאָר און פאַרשידן יינציק ידענטיפיערס.
הערמיט אַלאַוז צו לויפן די פּראָגראַם אין אַ קאַנטיינער ווו די סיבות בלייַבן קעסיידערדיק אין סאַבסאַקוואַנט ראַנז. רעפּעאַטאַבלע דורכפירונג, וואָס גאָר ריפּראַדוסיז די קאַנפיגיעריישאַן פון די וואַלאַטאַל סוויווע, קענען ווערן גענוצט פֿאַר טעות דיאַגנאָסיס, דיבאַגינג מולטי-שריט מיט יטעריישאַנז, קריייטינג אַ פאַרפעסטיקט סוויווע פֿאַר ראַגרעשאַן טעסטינג, דרוק טעסטינג, מולטי-טרעדעד טראָובלעשאָאָטינג און ריפּיטאַבאַל בויען סיסטעמען.
הערמיט פאָרסעס דיטערמאַניסטיק דורכפירונג פון אַרביטראַריש מגילה און אקטן ווי אַ רעפּראָדוסיבלע ראַפּער. דאָס הייסט, עס יזאָלייץ די פּראָגראַם הערמעטיקלי פֿון קוואלן פון ניט-דיטערמאַניזאַם אַזאַ ווי טיימינג, פאָדעם ינטערליווינג, טראַפ - נומער דור, אאז"ו ו. גואַראַנטעעד דיטערמאַניזאַם איז אַ שטאַרק געצייַג און דינען ווי דער יסוד פֿאַר אַ נומער פון אַפּלאַקיישאַנז, אַרייַנגערעכנט קאַנקעראַנסי דרוק טעסטינג, רעקאָרד / ריפּליי, רעפּראָדוסיבלע בויען און אָטאַמאַטיק דיאַגנאָסיס פון קאַנקעראַנסי ערראָרס, און מער.
הערמיט קען נישט יזאָלירן די גאַסט פּראָגראַם פון קוואלן פון ניט-דיטערמאַניזאַם, אַזאַ ווי טעקע סיסטעם ענדערונגען אָדער רעספּאָנסעס פון פונדרויסנדיק נעטוואָרקס. אַנשטאָט, צו צושטעלן פול דיטערמאַניזאַם, דער באַניצער מוזן צושטעלן אַ פאַרפעסטיקט טעקע סיסטעם באַזע בילד (למשל מיט דאָקער) און דיסייבאַל פונדרויסנדיק נעטוואָרקס.
וועגן הערמיט
הערמיט אַלאַוז מאַכט קריייץ אַ רעפּראָדוסיבלע סוויווע דורך ינטערסעפּטינג סיסטעם קאַללס, עטלעכע פון וואָס זענען ריפּלייסט מיט זייער אייגן האַנדלערס וואָס פּראָדוצירן קעסיידערדיק רעזולטאַט, און עטלעכע פון וואָס זענען רידערעקטיד צו די קערן, נאָך וואָס ניט-פּערסיסטענט דאַטן זענען אַוועקגענומען פון די רעזולטאַט.
צו ינטערסעפּט קאַללס צו די סיסטעם, פריימווערק איז געניצט רעוועריע, וועמענס קאָד איז אויך ארויס דורך פאַסעבאָאָק. צו פאַרמיידן טעקע סיסטעם ענדערונגען און נעץ ריקוועס פון אַפעקטינג דורכפירונג פּראָגרעס, דורכפירונג איז געטאן ניצן אַ נאָך בילד פון די טעקע סיסטעם און מיט אַקסעס צו פונדרויסנדיק נעטוואָרקס פאַרקריפּלט. דורך אַקסעס די פּסעודאָראַנדאָם נומער גענעראַטאָר, הערמיט טראגט אַ פּרעדעפינעד סיקוואַנס וואָס איז ריפּיטיד יעדער מאָל עס איז עקסאַקיוטאַד.
די מערסט קאָמפּליצירט מקור פון ניט-דיטערמאַניזאַם איז אין די פאָדעם סקעדזשולער. די וועג די קערן סקעדזשולז פֿעדעם דעפּענדס אויף פילע פונדרויסנדיק סיבות, אַרייַנגערעכנט די נומער פון גשמיות קפּוס אָדער אנדערע פֿעדעם פליסנדיק אויף די סיסטעם וואָס דאַרפן קפּו צייט.
פון די מער קאָמפּליצירט ניט-שטענדיק ינפלואַנסיז אויף פאָרשטעלונג, כיילייץ פאָדעם סקעדזשולער, וועמענס נאַטור דעפּענדס אויף פילע פונדרויסנדיק סיבות, אַזאַ ווי די נומער פון קפּו קאָרעס און די בייַזייַן פון אנדערע פליסנדיק פֿעדעם.
צו ענשור ריפּיטאַבאַל סקעדזשולער נאַטור, אַלע פֿעדעם זענען סיריאַלייזד, געבונדן צו אַ איין קפּו האַרץ און אין די סדר אין וואָס קאָנטראָל איז דורכגעגאנגען צו די פֿעדעם. יעדער פאָדעם איז דערלויבט צו ויספירן אַ פאַרפעסטיקט נומער פון ינסטראַקשאַנז, נאָך וואָס די דורכפירונג איז סטאַפּט און טראַנספערד צו אן אנדער פאָדעם (פֿאַר לימאַטינג, די CPU PMU (Performance Monitoring Unit) איז געניצט, וואָס סטאַפּס דורכפירונג נאָך אַ ספּעסיפיעד נומער פון קאַנדישאַנאַל צווייגן).
צו דיאַגנאָזירן פּראָבלעמס מיט פֿעדעם רעכט צו אַ ראַסע צושטאַנד, הערמיט האט אַ מאָדע צו דעטעקט אַפּעריישאַנז וואָס זענען נישט אין סדר און געפֿירט אַ בלאָקאַדע. כּדי צו אידענטיפֿיצירן אַזעלכע פּראָבלעמען, ווערט געמאַכט אַ פֿאַרגלײַך צווישן די סטעיטס, אין וועלכע די ריכטיקע אָפּעראַציע און די אומנאָרמאַלע אָפּשטעלן פֿון דער דורכפירונג זענען רעגיסטרירט געוואָרן.
צום סוף, אויב איר זענט אינטערעסירט צו לערנען מער וועגן אים, איר זאָל וויסן דאָס די פּרויעקט קאָד עס איז געשריבן אין Rust און איז פונאנדערגעטיילט אונטער די BSD דערלויבעניש.
איר קענען קאָנטראָלירן די פרטים אין די ווייַטערדיק לינק.
זייט דער ערשטער צו באַמערקן