logo

מה זה ת'ראש?

במדעי המחשב, לַחֲבוֹט הוא הביצועים הגרועים של מערכת זיכרון וירטואלית (או מערכת החלפה) כאשר אותם דפים נטענים שוב ושוב עקב מחסור בזיכרון ראשי כדי לשמור אותם בזיכרון. בהתאם לתצורה ולאלגוריתם, התפוקה בפועל של מערכת יכולה להתדרדר במספר סדרי גודל.

במדעי המחשב, חֲבָטָה מתרחש כאשר נעשה שימוש יתר במשאבי הזיכרון הווירטואלי של המחשב, מה שמוביל למצב קבוע של תקלות דפדוף ועמודים, המעכבים את רוב העיבודים ברמת היישום. זה גורם לביצועי המחשב להתדרדר או להתמוטט. המצב יכול להימשך ללא הגבלת זמן עד שהמשתמש יסגור כמה יישומים פועלים או שהתהליכים הפעילים יפנו משאבי זיכרון וירטואלי נוספים.

כדי לדעת בצורה ברורה יותר על חבטה, ראשית, עלינו לדעת על תקלות בדף והחלפה.

    תקלה בדף:אנחנו יודעים שכל תוכנית מחולקת לכמה עמודים. תקלת עמוד מתרחשת כאשר תוכנית מנסה לגשת לנתונים או קוד במרחב הכתובות שלה אך אינה ממוקמת כעת ב-RAM של המערכת.החלפה:בכל פעם שמתרחשת תקלת עמוד, מערכת ההפעלה תנסה להביא את הדף הזה מהזיכרון המשני ותנסה להחליף אותו עם אחד מהעמודים ב-RAM. תהליך זה נקרא החלפה.

חֲבָטָה זה כאשר תקלת העמוד וההחלפה מתרחשים בתדירות גבוהה בקצב גבוה יותר, ואז מערכת ההפעלה צריכה להשקיע יותר זמן בהחלפת דפים אלו. מצב זה במערכת ההפעלה ידוע כ-thashing. בגלל התנגשות, ניצול ה-CPU הולך להיות מופחת או זניח.

מה זה תראש

התפיסה הבסיסית הכרוכה בכך היא שאם לתהליך מוקצים מעט מדי פריימים, אז יהיו יותר מדי תקלות עמודים תכופות מדי. כתוצאה מכך, לא תבוצע עבודה חשובה על ידי ה-CPU, ושימוש ה-CPU ירד בצורה דרסטית.

המתזמן לטווח ארוך ינסה לשפר את ניצול ה-CPU על ידי טעינת עוד כמה תהליכים לתוך הזיכרון, ובכך להגדיל את מידת התכנות הרב-תכנות. למרבה הצער, הדבר יביא לירידה נוספת בניצול ה-CPU, ויגרום לתגובה משורשרת של תקלות עמוד גבוהות יותר ואחריה עלייה במידת התכנות הרב-תכנות, הנקראת ת'ראש.

אלגוריתמים במהלך חבטות

בכל פעם שמתחיל נגיחה, מערכת ההפעלה מנסה להחיל את אלגוריתם החלפת הדף הגלובלי או את האלגוריתם להחלפת הדף המקומי.

1. החלפת דף גלובלית

מכיוון שהחלפת עמודים גלובלית יכולה להביא כל עמוד, היא מנסה להביא דפים נוספים בכל פעם שנמצא תסיסה. אבל מה שבעצם יקרה הוא שאף תהליך לא מקבל מספיק פריימים, וכתוצאה מכך, החבטות יגדלו יותר ויותר. לכן, האלגוריתם הגלובלי להחלפת עמודים אינו מתאים כאשר מתרחשת פגיעה.

2. החלפת דף מקומי

שלא כמו האלגוריתם הגלובלי להחלפת עמודים, החלפת דף מקומית תבחר בדפים השייכים רק לתהליך זה. אז יש סיכוי לצמצם את החבטות. אבל הוכח שיש הרבה חסרונות אם אנחנו משתמשים בהחלפת עמוד מקומי. לכן, החלפת עמוד מקומי היא רק אלטרנטיבה להחלפת עמוד גלובלית בתרחיש מטורף.

גורמים לחבטות

תוכניות או עומסי עבודה עלולים לגרום לחבטות, וזה גורם לבעיות ביצועים חמורות, כגון:

  • אם ניצול המעבד נמוך מדי, אנו מגדילים את מידת התכנות הרב-תכנות על ידי הצגת מערכת חדשה. נעשה שימוש באלגוריתם להחלפת עמוד גלובלי. מתזמן ה-CPU רואה את הפחתת ניצול ה-CPU ומגביר את מידת התכנות הרב-תכנות.
  • ניצול המעבד מתוכנן מול מידת התכנות הרב-תכנות.
  • ככל שמידת הריבוי-תכנות עולה, ניצול המעבד עולה גם הוא.
  • אם מידת התכנות הרב-תכנות מוגברת עוד יותר, התנגשות מתחילה, וניצול ה-CPU צונח בחדות.
  • אז, בשלב זה, כדי להגביר את ניצול ה-CPU וכדי להפסיק את ה-thash, עלינו להפחית את מידת הריבוי-תכנות.

איך להעלים את החבטות

למחיקה יש כמה השפעות שליליות על בריאות הכונן הקשיח וביצועי המערכת. לכן, יש צורך לנקוט בכמה פעולות כדי להימנע מכך. כדי לפתור את בעיית החבטות, הנה השיטות הבאות, כגון:

    התאם את גודל קובץ ההחלפה:אם קובץ ההחלפה של המערכת אינו מוגדר כהלכה, פגיעה בדיסק יכולה לקרות גם לך.הגדל את כמות ה-RAM:מכיוון שלא מספיק זיכרון עלול לגרום לחבטות דיסק, פתרון אחד הוא להוסיף עוד זיכרון RAM למחשב הנייד. עם יותר זיכרון, המחשב שלך יכול להתמודד עם משימות בקלות ולא צריך לעבוד יותר מדי. באופן כללי, זה הפתרון הטוב ביותר לטווח ארוך.הקטן את מספר היישומים הפועלים במחשב:אם יש יותר מדי יישומים שפועלים ברקע, משאב המערכת שלך יצרוך הרבה. ומשאב המערכת שנותר הוא איטי שיכול לגרום לחבטות. אז בזמן הסגירה, חלק מהיישומים ישחררו כמה משאבים כדי שתוכל להימנע מהתנגשות במידה מסוימת.החלפת תוכניות:החלף את אותן תוכניות שזיכרון כבד תפוס בתוכניות מקבילות שצורכות פחות זיכרון.

טכניקות למניעת חבטות

החלפת הדף המקומי עדיפה מהחלפת הדף הגלובלי, אך להחלפת הדף המקומי יש חסרונות רבים, כך שלעתים היא לא מועילה. לכן להלן כמה טכניקות אחרות המשמשות לטיפול במחיקה:

1. מודל יישוב

יישוב הוא קבוצה של דפים שנמצאים בשימוש פעיל יחד. מודל היישוב קובע שככל שתהליך מתבצע, הוא עובר מיישוב אחד לאחר. לפיכך, תוכנית מורכבת בדרך כלל ממספר יישובים שונים שעלולים לחפוף.

לדוגמה, כאשר פונקציה נקראת, היא מגדירה מקומית חדשה שבה מבוצעות הפניות זיכרון להוראות קריאת הפונקציה, משתנים מקומיים וגלובליים וכו'. באופן דומה, כאשר יוצאים מהפונקציה, התהליך עוזב את היישוב הזה.

2. מודל סט עבודה

מודל זה מבוסס על התפיסה האמורה לעיל של מודל היישוב.

העיקרון הבסיסי קובע שאם נקצה מספיק מסגרות לתהליך כדי להתאים את היישוב הנוכחי שלו, הוא יתקל רק בכל פעם שהוא יעבור ליישוב חדש כלשהו. אבל אם המסגרות שהוקצו קטנות מגודלו של היישוב הנוכחי, התהליך חייב להתקלקל.

על פי מודל זה, בהתבסס על פרמטר A, מערך העבודה מוגדר כקבוצת הדפים בהפניות העדכניות ביותר לדף 'A'. לפיכך, כל הדפים בשימוש פעיל תמיד יהיו בסופו של דבר חלק ממערך העבודה.

xor ב-c++

הדיוק של ערכת העבודה תלויה בערך של פרמטר A. אם A גדול מדי, ערכות העבודה עשויות לחפוף. מצד שני, עבור ערכים קטנים יותר של A, ייתכן שהיישוב לא יהיה מכוסה כולו.

אם D הוא הביקוש הכולל למסגרות ו-WSSאניהוא גודל סט העבודה עבור תהליך i,

D = ⅀ WSSאני

כעת, אם 'm' הוא מספר הפריימים הזמינים בזיכרון, ישנן שתי אפשרויות:

  • D>m, כלומר, הביקוש הכולל עולה על מספר הפריימים, אז תתרחש נגיחה מכיוון שתהליכים מסוימים לא יקבלו מספיק פריימים.
  • ד<=m, then there would be no thrashing.< li>

אם יש מספיק מסגרות נוספות, ניתן לטעון עוד כמה תהליכים לזיכרון. מצד שני, אם סיכום גדלי קבוצות העבודה חורג מהזמינות של הפריימים, יש להשעות חלק מהתהליכים (להחליף את הזיכרון).

טכניקה זו מונעת חבטות יחד עם הבטחת הדרגה הגבוהה ביותר של ריבוי תכנות. לפיכך, זה מייעל את ניצול המעבד.

3. תדירות תקלות עמוד

גישה ישירה יותר לטיפול ב-thashing היא זו שמשתמשת במושג Page-Fault Frequency.

מה זה ת'ראש

הבעיה הקשורה ל-thashing היא שיעור תקלות הדף הגבוה, ולפיכך, הרעיון כאן הוא לשלוט בשיעור תקלות הדף.

אם שיעור תקלות הדף גבוה מדי, זה מצביע על כך שלתהליך הוקצו לו מעט מדי פריימים. להיפך, שיעור תקלות נמוך בעמוד מצביע על כך שלתהליך יש יותר מדי פריימים.

ניתן לקבוע גבולות עליונים ותחתונים על שיעור תקלות הדף הרצוי, כפי שמוצג בתרשים.

אם שיעור תקלות הדף יורד מתחת לגבול התחתון, ניתן להסיר מסגרות מהתהליך. באופן דומה, אם שיעור תקלות העמוד חורג מהגבול העליון, ניתן להקצות יותר פריימים לתהליך.

במילים אחרות, המצב הגרפי של המערכת צריך להיות מוגבל לאזור המלבני שנוצר בתרשים הנתון.

אם שיעור תקלות הדף גבוה ללא מסגרות פנויות, ניתן להשעות חלק מהתהליכים ולהקצות להם מחדש לתהליכים אחרים. התהליכים המושעים יכולים להתחיל מחדש מאוחר יותר.