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