קריאת מערכת היא דרך לתוכנת משתמש להתממשק עם מערכת ההפעלה. התוכנית מבקשת מספר שירותים, ומערכת ההפעלה מגיבה על ידי הפעלת סדרה של שיחות מערכת כדי לספק את הבקשה. קריאת מערכת יכולה להיכתב בשפת assembly או שפה ברמה גבוהה כמו ג אוֹ פסקל . קריאות מערכת הן פונקציות מוגדרות מראש שמערכת ההפעלה עשויה להפעיל ישירות אם נעשה שימוש בשפה ברמה גבוהה.
במאמר זה תלמדו על קריאות המערכת במערכת ההפעלה ותדברו על סוגיהן ועוד הרבה דברים.
מהי שיחת מערכת?
קריאת מערכת היא שיטה לתוכנת מחשב לבקש שירות מהקרנל של מערכת ההפעלה עליה היא פועלת. קריאת מערכת היא שיטה לאינטראקציה עם מערכת ההפעלה באמצעות תוכניות. קריאת מערכת היא בקשה מתוכנת מחשב לגרעין של מערכת הפעלה.
ה ממשק תוכניות יישומים (API) מחבר את הפונקציות של מערכת ההפעלה לתוכניות משתמש. הוא פועל כמקשר בין מערכת ההפעלה לתהליך, ומאפשר לתוכניות ברמת המשתמש לבקש שירותי מערכת הפעלה. ניתן לגשת למערכת הליבה רק באמצעות קריאות מערכת. קריאות מערכת נדרשות עבור כל תוכנה המשתמשת במשאבים.
כיצד מתבצעות שיחות מערכת?
כאשר תוכנת מחשב צריכה לגשת לקרנל של מערכת ההפעלה, היא מבצעת קריאת מערכת. קריאת המערכת משתמשת ב-API כדי לחשוף את שירותי מערכת ההפעלה לתוכניות משתמש. זוהי השיטה היחידה לגשת למערכת הליבה. כל התוכנות או התהליכים הדורשים משאבים לביצוע חייבים להשתמש בקריאות מערכת, מכיוון שהם משמשים ממשק בין מערכת ההפעלה לתוכניות המשתמש.
להלן כמה דוגמאות לאופן שבו קריאת מערכת משתנה מפונקציית משתמש.
מופע java של
- פונקציית קריאת מערכת עשויה ליצור ולהשתמש בתהליכי ליבה כדי לבצע את העיבוד האסינכרוני.
- לשיחת מערכת יש סמכות גדולה יותר מתת שגרה רגילה. קריאת מערכת עם הרשאות מצב ליבה מבוצעת בתחום הגנת ליבה.
- קריאות מערכת אינן מורשות להשתמש בספריות משותפות או בסמלים כלשהם שאינם קיימים בתחום ההגנה על הליבה.
- הקוד והנתונים עבור קריאות מערכת מאוחסנים בזיכרון הליבה העולמי.
למה אתה צריך שיחות מערכת במערכת ההפעלה?
ישנם מצבים שונים שבהם אתה חייב לדרוש שיחות מערכת במערכת ההפעלה. להלן המצבים הבאים:
- זה חייב לדרוש כאשר מערכת קבצים רוצה ליצור או למחוק קובץ.
- חיבורי רשת מחייבים את קריאות המערכת לשליחה וקבלה של מנות נתונים.
- אם אתה רוצה לקרוא או לכתוב קובץ, אתה צריך שיחות מערכת.
- אם אתה רוצה לגשת להתקני חומרה, כולל מדפסת, סורק, אתה צריך שיחת מערכת.
- קריאות מערכת משמשות ליצירה וניהול של תהליכים חדשים.
כיצד פועלות שיחות מערכת
האפליקציות פועלות באזור זיכרון המכונה מרחב משתמש. קריאת מערכת מתחברת לקרנל של מערכת ההפעלה, שפועל במרחב הקרנל. כאשר יישום יוצר קריאת מערכת, עליו לקבל תחילה הרשאה מהקרנל. הוא משיג זאת באמצעות בקשת פסיקה, אשר משהה את התהליך הנוכחי ומעבירה את השליטה לקרנל.
אם הבקשה מותרת, הקרנל מבצע את הפעולה המבוקשת, כמו יצירה או מחיקה של קובץ. כקלט, האפליקציה מקבלת את הפלט של הקרנל. הבקשה ממשיכה את ההליך לאחר קבלת הקלט. כאשר הפעולה מסתיימת, הקרנל מחזיר את התוצאות לאפליקציה ולאחר מכן מעביר נתונים ממרחב ליבה למרחב משתמש בזיכרון.
תקליטון
שיחת מערכת פשוטה עשויה לקחת כמה ננו-שניות כדי לספק את התוצאה, כמו אחזור התאריך והשעה של המערכת. שיחת מערכת מסובכת יותר, כגון התחברות להתקן רשת, עשויה להימשך מספר שניות. רוב מערכות ההפעלה משיקות חוט ליבה נפרד עבור כל קריאת מערכת כדי למנוע צווארי בקבוק. מערכות הפעלה מודרניות הן רב-הליכיות, מה שאומר שהן יכולות לטפל בשיחות מערכת שונות בו-זמנית.
סוגי שיחות מערכת
בדרך כלל ישנם חמישה סוגים של שיחות מערכת. אלה הם כדלקמן:
כעת, תלמדו על כל הסוגים השונים של שיחות מערכת אחת אחת.
בקרת תהליכים
בקרת תהליכים היא קריאת המערכת המשמשת לכוון את התהליכים. כמה דוגמאות לבקרת תהליכים כוללות יצירה, טעינה, ביטול, סיום, ביצוע, תהליך, סיום התהליך וכו'.
ניהול קבצים
ניהול קבצים הוא קריאת מערכת המשמשת לטיפול בקבצים. כמה דוגמאות לניהול קבצים כוללות יצירת קבצים, מחיקת קבצים, פתיחה, סגירה, קריאה, כתיבה וכו'.
ניהול התקנים
ניהול התקנים הוא קריאת מערכת המשמשת לטיפול במכשירים. כמה דוגמאות לניהול מכשירים כוללות קריאה, התקן, כתיבה, קבלת תכונות מכשיר, שחרור מכשיר וכו'.
תחזוקת מידע
תחזוקת מידע היא קריאת מערכת המשמשת לתחזוקת מידע. ישנן כמה דוגמאות לתחזוקת מידע, כולל קבלת נתוני מערכת, הגדרת שעה או תאריך, קבלת שעה או תאריך, הגדרת נתוני מערכת וכו'.
תִקשׁוֹרֶת
תקשורת היא קריאת מערכת המשמשת לתקשורת. ישנן כמה דוגמאות לתקשורת, כולל יצירה, מחיקה של חיבורי תקשורת, שליחה, קבלה של הודעות וכו'.
דוגמאות לקריאות מערכת של Windows ו-Unix
ישנן דוגמאות שונות לקריאות מערכת של Windows ו-Unix. אלה הם כמפורט להלן בטבלה:
תהליך | חלונות | יוניקס |
---|---|---|
בקרת תהליכים | CreateProcess() ExitProcess() WaitForSingleObject() | מזלג() יְצִיאָה() לַחֲכוֹת() |
מניפולציה של קבצים | CreateFile() ReadFile() WriteFile() CloseHandle() | לִפְתוֹחַ() לקרוא() לִכתוֹב() סגור() |
ניהול התקנים | SetConsoleMode() ReadConsole() WriteConsole() | Ioctl() לקרוא() לִכתוֹב() |
תחזוקת מידע | GetCurrentProcessID() SetTimer() לִישׁוֹן() | Getpid() אזעקה() לִישׁוֹן() |
תִקשׁוֹרֶת | CreatePipe() CreateFileMapping() MapViewOfFile() | צינור() Shmget() Mmap() |
הֲגָנָה | SetFileSecurity() InitializeSecurityDescriptor() SetSecurityDescriptorgroup() | Chmod() umask() Chown() |
כאן תלמדו על כמה שיטות בקצרה:
לִפְתוֹחַ()
ה לִפְתוֹחַ() קריאת מערכת מאפשרת לך לגשת לקובץ במערכת קבצים. הוא מקצה משאבים לקובץ ומספק נקודת אחיזה שהתהליך עשוי להתייחס אליה. תהליכים רבים יכולים לפתוח קובץ בבת אחת או בתהליך בודד בלבד. הכל מבוסס על מערכת הקבצים והמבנה.
לקרוא()
הוא משמש להשגת נתונים מקובץ במערכת הקבצים. הוא מקבל שלוש טיעונים באופן כללי:
cdr טופס מלא
- מתאר קובץ.
- מאגר לאחסון נתוני קריאה.
- מספר הבתים לקריאה מהקובץ.
ניתן להשתמש במתאר הקובץ של הקובץ לקריאה כדי לזהות אותו ולפתוח אותו באמצעות לִפְתוֹחַ() לפני קריאה.
לַחֲכוֹת()
במערכות מסוימות, תהליך עשוי להמתין לתהליך אחר כדי להשלים את ביצועו לפני שימשיך. כאשר תהליך הורה הופך תהליך צאצא, ביצוע תהליך האב מושעה עד שתהליך הצאצא מסתיים. ה לַחֲכוֹת() קריאת מערכת משמשת להשעיית תהליך האב. לאחר שתהליך הצאצא השלים את ביצועו, השליטה מוחזרת לתהליך האב.
לִכתוֹב()
הוא משמש לכתיבת נתונים ממאגר משתמש למכשיר כמו קובץ. קריאת מערכת זו היא אחת הדרכים לתוכנית ליצור נתונים. יש צורך בשלושה טיעונים באופן כללי:
- מתאר קובץ.
- מצביע למאגר שבו הנתונים נשמרים.
- מספר הבתים שייכתב מהמאגר.
מזלג()
תהליכים יוצרים שיבוטים של עצמם באמצעות ה מזלג() שיחת מערכת. זוהי אחת הדרכים הנפוצות ביותר ליצור תהליכים במערכות הפעלה. כאשר תהליך הורה מוליד תהליך צאצא, ביצוע תהליך האב מופסק עד שתהליך הצאצא מסתיים. לאחר שתהליך הצאצא השלים את ביצועו, השליטה מוחזרת לתהליך האב.
סגור()
הוא משמש לסיום הגישה למערכת הקבצים. כאשר קריאת מערכת זו מופעלת, זה מסמל שהתוכנית כבר לא דורשת את הקובץ, והמאגרים נשטפים, מידע הקובץ משתנה, ומשאבי הקבצים מבוטלים כתוצאה מכך.
exec()
כאשר קובץ הפעלה מחליף קובץ הפעלה מוקדם יותר בתהליך שכבר בוצע, פונקציית מערכת זו מופעלת. מכיוון שלא נבנה תהליך חדש, זיהוי התהליך הישן נשאר, אך התהליך החדש מחליף נתונים, מחסנית, נתונים, ראש וכו'.
מוצר numpy dot
יְצִיאָה()
ה יְצִיאָה() היא קריאת מערכת המשמשת לסיום ביצוע התוכנית. קריאה זו מציינת שביצוע השרשור הושלם, וזה שימושי במיוחד בסביבות מרובות פתילים. מערכת ההפעלה מחזירה משאבים שהושקעו בתהליך בעקבות השימוש ב- יְצִיאָה() תפקוד המערכת.