מקשר דינמי

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

מקשר דינמיאנגלית: Dynamic linker) הוא סוג של טוען שטוען ומקשר בזמן הריצה (run-time) או הטעינה (load-time) ספריות משותפות (קובצי dll במערכת ההפעלה חלונות, so במערכת לינוקס) לתוכניות שנמצאות בזיכרון המחשב. הספריות המשותפות נמצאות בדרך כלל בקבצים נפרדים על גבי הכונן הקשיח.

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

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

הספריות עצמן מכילות טבלאות קפיצה (jump table), שנקראות Procedure Linking Table (PLT), שמורות על מיקום השגרות בספרייה. כדי להפעיל שגרה בספרייה מסוימת, יש לאתר את מיקומה בטבלת הקפיצה על מנת לדעת את מיקומה בזיכרון המחשב. התקורה שנוצרת בשיטה זו בדרך כלל קטנה וזניחה.

ראו גם[עריכת קוד מקור | עריכה]