האם תואם POSIX ל- Linux?

Is Linux Posix Compliant



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

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







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



למה מייצג המונח POSIX?

POSIX הוא קיצור של ממשק מערכת הפעלה ניידת. כפי שהוסבר בקצרה למעלה, POSIX הוא השם לאוסף של תקנים הנדרשים כדי לשמור על תאימות בין מערכות הפעלה. כפי שנאמר ב [1], [הוא] מגדיר את ממשק תכנות האפליקציות (API), יחד עם פגזי שורת פקודה וממשקי שירות, לתאימות תוכנה עם גרסאות של יוניקס ומערכות הפעלה אחרות. הגרסה הראשונה של POSIX פורסמה בשנת 1988. מאז, POSIX הורחבה ומתעדכנת ברציפות על ידי קבוצת אוסטין Common Standards Revision Group (הידועה גם בשם קבוצת אוסטין) [7].



החל משנת 2021, תקן POSIX מכיל את החלקים הבאים:





  1. שירותי ליבה (כולל תקן ANSI C) (IEEE std 1003.1-1988)-יצירת ובקרה של תהליכים, איתותים, פעולות קבצים וספריות, צינורות, ספריית C, ממשק ובקרת יציאות I/O, מפעלי תהליכים
  1. הרחבות (קישורים סמליים)
  2. הרחבות I/O בזמן אמת (IEEE Std 1003.1b-1993)-תזמון עדיפות, איתותים בזמן אמת, שעונים וטיימרים, סמפורות, העברת הודעות, זיכרון משותף, קלט/פלט אסינכרוני וסינכרוני, ממשק נעילת זיכרון
  3. הרחבות אשכולות (IEEE Std 1003.1c-1995)-יצירת, שליטה וניקיון חוטים, תזמון חוטים, סנכרון חוטים, טיפול באותות
  4. הרחבות נוספות בזמן אמת
  5. הרחבות אבטחה (רשימות בקרת גישה)
  1. מעטפת ושירותים (IEEE Std 1003.2-1992)-מתורגמן פקודות, תוכניות שירות

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

בשנים האחרונות נוספו הרחבות לעיבוד בזמן אמת. הגרסה הנוכחית שוחררה בתחילת 2018 [3]. מחברי SibylFS [5] פרסמו גם הערות רבות לתקן POSIX כדי לקבוע היגיון ואינטראקציות מסדר גבוה יותר.



מה זאת אומרת להיות תואם POSIX?

המונח תואם POSIX פירושו שמערכת הפעלה עומדת בכל הקריטריונים של POSIX. מערכת הפעלה יכולה להריץ תוכניות UNIX באופן מקורי, או שניתן להעביר יישום ממערכת UNIX למערכת אחרת. העברת יישום מ- UNIX למערכת ההפעלה היעד היא קלה, או לפחות קלה יותר, מאשר אם היא אינה תומכת ב- POSIX. כדי להיות בצד הבטוח, מערכת הפעלה הייתה צריכה להשיג בהצלחה את הסמכת POSIX [2]. שלב זה מושג (בעלות) על ידי עמידה במבחן הסמכה אוטומטי. את חבילת הבדיקות המתאימה ניתן למצוא כאן [11].

החל משנת 2021, רשימת מערכות ההפעלה המאושרות על ידי POSIX מכילה AIX מ- IBM, HP-UX מ- HP, IRIX מ- SGI, EulerOS [6] מ- Huawei, Mac OS X מ- Apple (מאז 10.5 Leopard), Solaris ו- QNX Neutrino מבית אורקל, ה- K-UX של Inspur [11], ותוכנת ההפעלה בזמן אמת של מערכת ההפעלה של Green Hills Software [15]. כרגע לא ברור אם גרסאות חדשות יותר של שלושת ממשיכי Solaris, OpenSolaris, Illumos ו- OpenIndiana, מסווגות גם הן בתואמות POSIX. מערכות הפעלה אלה היו תואמות POSIX עד POSIX 2001.

מערכות הפעלה אחרות הנראות לרוב (אך לא במלואן) תואמות POSIX כוללות אנדרואיד, BeOS, FreeBSD, הייקו, לינוקס (ראה להלן) ו- VMWare ESXi. עבור Microsoft Windows, Cygwin מספקת פיתוח ותנאי סביבת זמן ריצה התואמים במידה רבה POSIX.

האם תואם POSIX ל- Linux?

המונח לינוקס מתייחס לכל מערכת ההפעלה לינוקס, ללא קשר לטעם, כגון Debian GNU/Linux, RedHat Linux, Linux Mint, Ubuntu Linux, Fedora ו- CentOS, למשל. אם לדייק, לינוקס הוא רק שם הגרעין המהווה את מרכיב הליבה של מערכת ההפעלה החינמית הזו.

כפי שתיאר לינוס טורבלדס בספר Just For Fun [8], כדי לפתח את גרעין הלינוקס, הוא ביקש העתק של תקן POSIX. זה עזר לו ליישם את אותם מנגנונים המשמשים במערכות UNIX מסחריות. יתר על כן, הדבר איפשר לו לקשר את ליבת לינוקס לכלי ה- GNU שעקבו בעיקר באותה גישה. למען ההגינות, התוכנה במערכת לינוקס תורמת ממגוון מקורות המכבדים את תקן POSIX, אך לפעמים גם מיישמים את הרעיונות שלהם. יחד עם זאת, הדבר גם מראה את המגוון המרכיב את לינוקס כמערכת הפעלה.

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

טיעונים. כדי להשיג תאימות ל- POSIX, נוספו שלב אחר שלב ארגומנטים בסגנון POSIX. ובכל זאת, ההחלטה הסופית מתקבלת על ידי היזם. נכון להיום, רוב הפקודות מקבלות טיעונים קצרים וארוכים כאחד, או אפילו ארגומנטים ללא מקפים, כגון פקודת find, למשל. למען ההגינות, אין עקביות בין הפקודות במערכת אחת, וזו יכולה להיות בעיה כאשר אתה מתכוון להשתמש באותה פקודה במערכת מבוססת UNIX אחרת, במיוחד בעת מעבר בין Linux, OS X ו- Solaris.

לעת עתה, לינוקס אינה מוסמכת POSIX בשל עלויות גבוהות, למעט שתי ההפצות המסחריות של לינוקס Inspur K-UX [12] ו- Huawei EulerOS [6]. במקום זאת, Linux נתפסת כתואמת בעיקר ל- POSIX.

הערכה זו נובעת מכך שהפצות לינוקס גדולות עוקבות אחר Linux Standard Base (LSB) במקום POSIX [9]. LSB שואפת למזער את ההבדלים בין הפצות לינוקס בודדות [14]. הכוונה למבנה מערכת התוכנה, כולל תקן הירארכית מערכת הקבצים (FHS) המשמש בגרעין לינוקס. LSB מבוסס על מפרט POSIX, מפרט UNIX יחיד (SUS) [10], ועוד מספר תקנים פתוחים, אך מרחיב אותם גם בתחומים מסוימים.

הפצות לינוקס מבוססות LSB כוללות RedHat Linux, Debian GNU/Linux (2002-2015) ואובונטו (עד 2015), עד כמה.

פיתוח מתוך מחשבה על POSIX

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

קישורים והפניות

תודה

המחבר רוצה להודות לאקסל בקרט ולויט שילה על העזרה והעצות בעת הכנת מאמר זה.