ההבדל בין שיחת המערכת לבין שיחת הפונקציה

Anonim

System Call לעומת פונקציה התקשר

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

-> ->

מהי שיחת מערכת?

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

-> ->

מהי פונקציית שיחה?

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

מה ההבדל בין שיחת מערכת לבין שיחת פונקציה?

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