מקשר דינמי – הבדלי גרסאות

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