עבודה אקדמית? חפשו עכשיו במאגר הענק, האיכותי והעדכני ביותר:

מוענק על כל האתר 7 אחוז הנחה בעת "חרבות ברזל". קוד קופון: "מלחמה"

ב"ה. אנו חב"דניקים ולא נחטא בגזל: יש גם עבודות אקדמיות בחינם (גמ"ח). 15,000 עבודות אקדמיות במחיר שפוי של 99 - 390 שח.  סרטון על מאגר העבודות האקדמיות

اللغة العربية Русский

français              አማርኛ

לא מצאתם עבודה מתאימה במאגר? סמסו לנו דרישות לכתיבה מותאמת אישית - ונפנה למומחה חיצוני בעל תואר שני בתחום שלכם לכתיבה הנתפרת לצרכים שלכם בדיוק!

פרסמו את עבודותיכם הישנות אצלינו וקבלו הכנסה פסיבית נהדרת!

חוות דעת על מרצים

הוצאת ויזה לדובאי תשלום מאובטח בעברית

אמריקן אקספרס – ויקיפדיה    (לא דיינרס)    

תוצאת תמונה עבור פייבוקס 5% הנחה ב-פייבוקס  

bit ביט on the App Store   ×ª×©×œ×•× בחיוב אשראי טלפוני דרך נציג שירות 24/7העברה בנקאית

 

עבודה אקדמית זיכרון וירטואלי - שיטות לניהול זכרון ע"י מערכות ההפעלה (עבודה אקדמית מס. 9993)

‏290.00 ₪

 63 עמודים.

עבודה אקדמית זיכרון וירטואלי - שיטות לניהול זכרון ע"י מערכות ההפעלה

  • תוכנית יותר לא תהייה מוגבלת בכמות הזיכרון הפיזי הפנוי.
    1. משתמשים יוכלו לכתוב תוכניות למרחב כתובות לוגי גדול, מה שעושה את העבודה לקלה יותר.
    1. יותר תוכניות יוכלו לרוץ בו זמנית, משום שהן תופסות פחות מקום.
    1. פחות I/O יהיה דרוש לטעינה והחלפה של כל תוכנית משתמש, כל התוכניות ירוצו מהר יותר.

    זיכרון וירטואלי הוא הפרדה בין זיכרון לוגי לזיכרון פיזי.
    ניתן ליישם זיכרון וירטואלי בשתי דרכים:
    1. Demand paging
    1. Demand segmentation

    החלפת דפים ע"פ דרישה -Demand Paging
    מערכת demand paging דומה למערכת paging הכוללת swapping. תהליכים נשמרים בזיכרון המשני. כאשר נרצה להריץ תהליך נכניס (swap) אותו לזיכרון. בנוסף לכך נשתמש ב-lazy swapper. Lazy swapper לעולם לא יכניס לזיכרון תהליך אלא אם כן יש בו צורך. מכיוון שאנו מתייחסים כעת לתהליך כעל סידרה של דפים, ולא מרחב כתובות רציף, ולכן המונח swap אינו נכון מבחינה טכנית. Swapper מופעל על תהליכים שלמים, בעוד ש-pager עוסק בדפים עצמאיים של תהליך. ולכן, נשתמש במונח pager בהקשר של demand paging.
    כאשר יש צורך להביא תהליך לזיכרון, ה-pager מנחש אילו דפים יהיו בשימוש לפני שהתהליך יוצא שוב מחוץ לזיכרון. במקום להכניס את כל הזיכרון, ה-pager מביא רק את אותם דפים דרושים. כך, נמנעים מקריאת דפים לזיכרון שבמילא לא יעשה בהם שימוש, ובכך מפחיתים את זמני ההחלפות ואת כמות הזיכרון הפיזי הנדרשת.
    בשיטה זו, יש צורך לתמוך בחומרה היודעת להבחין בין דפים שנמצאים בזיכרון לבין אלו שבדיסק. לצורך כך מוסיפים לכל דף ביט valid-invalid. ערך valid מציין שהדף הוא חוקי ונמצא בזיכרון. ערך invalid מציין שהדף או לא חוקי או לא נמצא בזיכרון. כאשר הערך הוא ב-valid הכניסה המתאימה לדף בטבלת הדפים מעודכנת כרגיל, אבל כאשר הערך ה-invalid הכניסה עצמה מסומנת כ-invalid או מכילה את כתובת הדף בדיסק.
    שגיאת דף – פניה לדף שכרגע לא בזיכרון - Page Fault
    גישה לדף המסומן כ-invalid גורמת לשליחת page fault trap למערכת ההפעלה. Trap זה הוא תוצאה מניסיון כושל של מערכת ההפעלה להביא דף רצוי לזיכרון, בניגוד לשגיאת כתובת לא נכונה שהיא תוצאה של ניסיון גישה לכתובת לא חוקית. יש צורך להבין כיצד נוצרה הטעות האם בגלל שהדף לא נמצא או הכתובת לא חוקית. תהליך הטיפול ב-Page Fault יהיה אם כן:
    1. בודקים בטבלה פנימית של התהליך (בד"כ  נמצאת ב-PCB) כדי לקבוע האם ההפניה לזיכרון חוקית או לא.
    1. אם ההפניה לא חוקית, נפסיק את התהליך (באסה). אם ההפניה חוקית והדף לא נמצא, נדאג להביא אותו כעת.
    1. נמצא frame פנוי.
    1. נתזמן פעולת דיסק אשר תקרא את הדף המתאים אל  ה-frame החדש.
    1. כאשר פעולת הקריאה הושלמה, נעדכן את הטבלה הפנימית של התהליך וכן את טבלת הדפים כך שתצביע על כך שהדף נמצא כעת בזיכרון.
    1. נאתחל את ההוראה שהופרעה ע"י ה-trap. התהליך יוכל כעת לגשת לדף המתאים כאילו הוא תמיד היה בזיכרון (והם חיו באושר ובעושר עד עצם היום הזה).

    כיצד ומתי נדפדף - Page Replacement
    גישת החלפת הדפים אומרת שבמידה ואין שום frame פנוי, נחפש frame שלא נמצא כרגע בשימוש ונשחרר אותו. הבעיה היא שאם אני משחררת דף ששיניתי, לא ניתן לשחרר אותו סתם, אלא יש צורך לכתוב אותו שוב לזיכרון. סדר הפעולות המתקבל הינו:
    1. מצא frame פנוי.
    1. במידה ויש כזה השתמש בו.
    1. אחרת, השתמש באלגוריתם להחלפת דפים כדי להוציא את הדף החוצה.
    1. כתוב לדיסק את הדף שהוצאת ועדכן את הטבלאות.
    1. קרא את הדף הרצי ל-frame הפנוי ושנה את הטבלאות בהתאם.
    1. התחל את התהליך מחדש.
    נשים לב כי הכפלנו את זמן ה-page fault משום שהוספנו כתיבה לדיסק. בחלק מהמקרים, ייתכן ובדף שהחזרנו כלל לא נעשו שינויים, ולכן אין צורך לכתוב אותו חזרה לדיסק. לכן נוסיף ביט בשם dirty. ערך הביט יהיה 1 ברגע שנעשה שינוי בדף הנמצא בזיכרון. כאשר נחזיר את הדף לדיסק, נכתוב אותו רק במידה והביט יצביע על 1.
    הפרדה אחרי שינוי - Copy On Write
    Copy on Write מאפשר לתהליך אב ותהליך בן לחלוק דפים בזיכרון. כאשר יוצרים תהליך בן, האב והבן משתמשים באותם דפים (הבן מקבל רק העתק של טבלת הדפים). ברגע שאחד מהם משנה דף מסוים, הדף משוכפל והוא מקבל הצבעה עצמאית לדף זה. כך חוסכים בזמן יצירת תהליך חדש. בנוסף, חוסכים במקום - לפחות הקוד של התהליכים יהיה משותף.
    מיפוי קבצים לזיכרון - Memory Mapped Files
    כאשר תהליך רוצה לקרוא מקובץ מעה"פ טוענת חלק מהקובץ (בגודל דף) לזיכרון. כך ניתן להתייחס לקובץ כמו אל פנייה רגילה לזיכרון - ללא System Calls. הרבה יותר מהיר. מקבלים מצביע לאזור זה בזיכרון ואפשר לגשת לכל מקום בדף ישירות. אם חורגים מהגבולות - מקבלים פסיקה רגילה.
    בנוסף, כך תהליכים יכולים לשתף קבצים - יכולים כולם לגשת לאותו אזור.
    אלגוריתמים לדפדוף - Page Replacement Algorithms
    קיימים אלגוריתם רבים להחלפת דפים. באופן כללי נרצה אלגוריתם שבו שיעור דפדוף הדפים הוא הנמוך ביותר (page-fault rate). נדע להעריך את האלגוריתם ע"י הרצה יבשה של הפניות זיכרון, כאשר תוך כדי נספור את מספר הפעמים בהם ביצענו החלפה.
    אלג' הדפדוף –
    • ·קובעת את מדיניות החלפת הדפים:איזו מסגרת בזיכרון הראשי תפונה על-מנת לפנות מקום לדף החדש.
    • ·דפדוף ע"פ דרישה – paging by demand – מביא דף לזיכרון רק אם הגישה אליו גרמה ל page fault, להבדיל מהבאה מוקדמת – המנסה לחזות איזה דפים ידרשו.
    • ·אלג' דפדוף לוקלי יפנה מהזיכרון הפיסי רק דפים של התהליך שגרם ל page fault. משמר את מספר המסגרות שהוקצא לתהליך. להבדיל מאלג' דפדוף גלובלי.
    1) אלג' ראשון בא, ראשון יצא - First In First Out (FIFO) Algorithm
    ה-frame הראשון שנכנס לזיכרון יהיה גם הראשון שישוחרר. נשים לב שהגדלת מספר ה-frame-ים לא תקטין את מספר ההחלפות.
    דוגמא בשקף 10.16
    2) אלג' הדף האופטימלי - Optimal Algorithm
    באלגוריתם זה קיימת הנחה שאנחנו יודעים מראש מה הולך לקרות. כלומר נדע מראש מתי נזדקק לכל דף (דבר שכמובן לא קורה במציאות). במקרה כזה נוציא תמיד מהזיכרון את הדף שלא יהיה בשימוש הכי הרבה זמן.
    3) אלג' הוצא את הלא פופולארי -Least Recently Used (LRU) Algorithm
    נוציא מהזיכרון את הדף שלא היה בשימוש הכי הרבה זמן. ניתן לממש אלגוריתם זה בשתי דרכים:
    1. מחסנית – בכל פעם שיש הפנייה לדף, נכניס את הדף לראש המחסנית. כאשר הדף שנמצא בתחתית המחסנית הוא הדף שלא השתמשנו בו הכי הרבה זמן. מכיוון שנרצה להוציא דפים מאמצע המחסנית, נממש את המחסנית בעזרת רשימה דו מקושרת עם מצביע לראש ולזנב. במקרה הגרוע נצטרך לעדכן שישה פוינטרים (בעת הוצאה מהאמצע). כלומר, כל שיני כאן הוא יקר, אבל אין צורך לרוץ על כל המחסנית כדי למצוא את הדף הישן ביותר.
    1. אפשר להוסיף שעון ולבדוק אותו
    1. תור דו כיווני – בכל פעם שהשתמשנו בדף , נשים אותו בתחילת התור, וכאשר נרצה לזרוק דף, נזרוק את זה שבסוף התור.
    **מימוש יקר ולכן קשה לממש
    4) אלג' קירוב ל LRU -  LRU Approximation Algorithm
    מעט מאוד מערכות הפעלה משתמשות בחומרה התומכת בהחלפת דפים בעזרת LRU. אולם רוב המערכות מספקות עזרה בצורה של reference bit. לכל דף מוסיפים ביט המותחל ל-0. ברגע שיש הפניה לדף הביט נדלק. כאשר יש צורך להוציא דף, נבחר דף שהביט שלו עדיין ב-0.
    אין אפשרות לדעת את סדר השימוש בדפים.
    5) אלג' שמשתמשים במונה -  Counting Algorithm
    מונה כניסות - נוסיף מונה לכל דף. בכל פעם שמשתמשים בדף, מגדילים את המונה שלו באחד. קיימים שני אלגוריתמים המשתמשים במונה זה:
    1. Least Frequently Used (LFU) – אלגוריתם זה דורש שהדף בעל המונה הנמוך ביותר יוחלף. הסיבה לבחירה זו היא שדף שכבר השתמשנו בו הרבה פעמים יהיה בעל מונה הגישות הגבוה ביותר. החיסרון של האלגוריתם הוא מצב שבו בתהליך האתחול השתמשנו בדף מסוים פעמים רבות, אבל עכשיו כבר אין לנו שום צורך בו. הבעיה היא שדף זה לא יוחלף ויישאר בזיכרון. הפתרון יעשה ע"י שמירת ה-counter בבסיס בינארי ולא נתייחס אליו כאל מספר. בכל פעם שניגשים לדף, נבצע הזזה ימינה במונה של כל דף ודף, כאשר רק בדף שנגענו נכניס 1 ולא 0.
    1. MFU – אלגוריתם יעבוד באותה שיטה, אלא שהפעם נוציא מהזיכרון את הדף בעל המונה הגובה ביותר. אלגוריתם זה מתבסס על ההנחה שדף בעל מונה נמוך רק הובא לזיכרון ועדיין לא הספקנו להשתמש בו.
    אף אחת מהשיטות הנ"ל אינה נפוצה מכיוון והן די יקרות.
    הַקְצָאָה של מסגרות - Allocation of Frames
    הבעיה מתעוררת כאשר יש דרישה לדפדף תוך כדי שילוב עם multiprogramming.  במקרה כזה יש יותר מתהליך אחד בזיכרון, והשאלה היא כמה frame-ים נקצה לכל תהליך.
    לא ניתן להקצות יותר frame-ים ממה שיש. קיים מספר מינימאלי של frame-ים שניתן להקצאת. ככל שמספר ה-frame-ים המוקצה לכל תהליך קטן, שיעור הדפדוף גדל ומאט את זמן הריצה של התהליך. בנוסף, קיים מספר מינימלי של frame-ים שחייבים להקצות. מספר מינימלי זה מוגדר ע"י ה-instruction-set architecture. יש לזכור שברגע שמתרחש page-fault תוך כדי הוראה, ההוראה תאתחל מחדש. כתוצאה מכך, עלינו להחזיק מספיק fame-ים כך שיחזיקו את הדפים השונים אליהם יכולה כל הוראה לפנות.
    המספר המינימלי של ה-frame-ים מוגדר ע"י הארכיטקטורה של המחשב.
    המקרה הגרוע ביותר הוא כאשר יש רמות רבות של מיעון עקיף. כלומר כל frame מכיל בתוכו כתובת ל-frame אחר, ובכך מבזבזים מספר רב של frame-ים על כתובות ולא על מידע.
    קיימות שתי שיטות הקצאה עיקריות:
    1. Fixed allocation – הקצאה שווה. כל תהליך מקבל מספר קבוע של Frame-ים. . קיימת הקצאה לפי פרופורציה, בה כל תהליך מקבל frame-ים ביחס מתאים לגודל שלו.
    1. Priority allocation – הקצאה על פי עדיפות. הקצאה על פי עדיפות עובדת באותה שיטה, אלא שהפעם מקצים לתהליך Frame-ים על פי העדיפות שלו. אם תהליך מסוים מייצר page fault, אזי בוחרים דף מאוסף הדפים שמוקצים לו. במידה ואין דפים פנויים, אזי מקצים לו דף מתהליך בעל עדיפות נמוכה יותר.

    העבודה האקדמית בקובץ וורד פתוח, ניתן לעריכה והכנסת פרטיך. גופן דיויד 12, רווח 1.5. שתי שניות לאחר הרכישה, קובץ העבודה האקדמית ייפתח לך באתר מיידית אוטומטית + יישלח קובץ גיבוי וקבלה למייל שהזנת

    ‏290.00 ₪ לקוחות חוזרים, הקישו קוד קופון:

    מחיקה ובלעדיות/מצגת


    שדה אימייל הינו חובה