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