מאמרים אחרונים

שתף בפייסבוק שיתוף בפייסבוק
RSS - מאמריםמאמרים
RSS - פורומיםפורומים
דווח למנהל דיווח למנהל
קישור לעמוד זה קישור לעמוד זה


מתאם רשת אתרנט


   פורומים > HTPC ומחשוב > רשתות, IT ומחשוב
מחבר הודעה
Dor1992 (דור)
חבר פעיל מאוד
חבר פעיל מאוד

הצטרף בתאריך:
  Aug 18, 2018

מיקום: חיפה
הבעות תודה: 4
מספר הודעות: 497

 #1  נשלח: שבת 12/09/2020 13:03
מתאם רשת אתרנט

שלום לכולם,

שאלה שאני תוהה לגביה זמן רב ולא מוצא שום תשובה לגביה בגוגל..

מתאם הרשת הרי מקבל פריימים (במקרה שלנו לדוגמא פריימים של אתרנט).
ואמורה להיות לו קושחה.

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

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

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

עכשיו השאלה שלי איזו תוכנה שרצה כל הזמן במערכת הפעלה אחראית לזה?
תכלס אנחנו אמורים לראות אותה למשל בווינדוז רצה בtask manager כתהליך ששייך לליבה ורץ לכל דבר ועניין לא?

תודה לעוזרים,
דור


נערך בפעם אחרונה על-ידי Dor1992 בתאריך שבת 12/09/2020 13:38, נערך בסך הכל 2 פעמים
פרופיל | שלח הודעה | חפש
Dor1992 (דור)
חבר פעיל מאוד
חבר פעיל מאוד

הצטרף בתאריך:
  Aug 18, 2018

מיקום: חיפה
הבעות תודה: 4
מספר הודעות: 497

 #2  נשלח: שבת 12/09/2020 13:23
Re: קושחת מתאם רשת

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

עכשיו השאלה שלי איזו תוכנה שרצה כל הזמן במערכת הפעלה אחראית לזה?
תכלס אנחנו אמורים לראות אותה למשל בווינדוז רצה בtask manager כתהליך ששייך לליבה ורץ לכל דבר ועניין לא?
פרופיל | שלח הודעה | חפש
eran405
אחראי תחום רשתות
אחראי תחום רשתות

הצטרף בתאריך:
  Feb 27, 2012
הבעות תודה: 667
מספר הודעות: 2990

 #3  נשלח: שבת 12/09/2020 16:16
Re: קושחת מתאם רשת

Dor1992
·

בגדול זה הולך משהו כזה: (שליחת פאקטה תהיה בדיוק הפוך)

כבל רשת => חומרה/קושחה של כרטיס רשת => כרטיס הרשת מתקשר עם המעבד דרך ה-PCI bus וכו'
=> דרייבר של כרטיס הרשת במערכת ההפעלה => network stack במערכת ההפעלה
=> ניהול רשת ב-user space (נפוץ שינוהל ע"י ספריה גנרית של הסביבה בה פותחה האפליקציה)
=> קוד יחודי של האפליקציה לטפל בתקשורת הספציפית שלה

כאשר השורה הראשונה זה חומרה, הששורה השניה זה מערכת ההפעלה והשלישית והרביעית ב-user space. מה שרץ ב-user space זה בעצם אפליקציה מסויימת שתראה ב-task manager (או top ב-linux וכו'), בעוד שהשכבות היותר נמוכות רצות בתוך קרנל ולכן לא תראה כלום ב-task manager ודומיו. ללא רקע מתאים של מה זה מערכת הפעלה, דרייברים, קרנל וכו' אני ממליץ לך בחום לקבל שככה הדברים עובדים ויש לזה סיבות טובות.

כמו שכבר הוזכר בשירשורים קודמים שפתחת, שם לב שאין היום קו ברור לגבי איזה שכבות, לדוגמא של מודל OSI, יפורשו באיזה רמה. בצורה הכי "שמרנית" החומרה/קושחה/דרייבר יטפלו בשכבה 2, ה-network stack בקרנל יטפל בשכבות של IP ו-TCP וכו' (נגיד שכבות 3-5 כולל במודל OSI) והשאר יעשה ב-user space. אבל זה לא חייב להיות ככה, ולדוגמא במקרה של האצת חומרה מתאימה לפחות חלק מהטיפול בפרוטוקולים כמו IP ו-TCP יעשה בחומרה/קושחה של כרטיס הרשת. בתחומים מסויימים בכלל מקובל לעקוף את ה-kernel ולעשות מימוש של network stack מקוסטם ב-user space. ואני בטוח שיש עוד דוגמאות שאני פחות מכיר.

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

הצטרף בתאריך:
  Aug 18, 2018

מיקום: חיפה
הבעות תודה: 4
מספר הודעות: 497

 #4  נשלח: שבת 12/09/2020 16:34
Re: קושחת מתאם רשת

eran405
·

תודה.

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

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

הצטרף בתאריך:
  Feb 27, 2012
הבעות תודה: 667
מספר הודעות: 2990

 #5  נשלח: שבת 12/09/2020 23:21
Re: קושחת מתאם רשת

Dor1992
·

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

הקרנל זה הלב של מערכת ההפעלה והדבר הראשון והעיקרי שעולה כשאתה מעלה מערכת ההפעלה. הקרנל ממומש את כל השירותים שמערכת ההפעלה נותנת, כולל הרצה של אפליקציות שונות כל אחת עם זיכרון וירטואלי משלה, מערכת קבצים, דרייברים לפניה לחומרה וכו' (במקרה של windows הדרייברים יושבים בנפרד מהקרנל אבל יועלו וירצו כחלק מהקרנל). מעבר לזה הקוד של הקרנל זה קוד "רגיל" כמו כל קוד אחר, שה-boot record בדיסק מפנה אליו וככה ה-bios יודע להפעיל אותו. במקרה של windows הקרנל יושב בקובץ c:\Windows\System32\ntoskrnl.exe (מסתבר שהוא אפילו קובץ PE שאפשר להשתמש ב-dumpbin עליו וכו').

רב הדברים שהקרנל עושה זה לא דברים שרצים ברקע אלא כתגובה לבקשות שמגיעות אליו לדוגמא מאפליקציה מסויימת. אם ניקח לדוגמא שליחת פאקטה לרשת, אז האפליקציה משתמשת בספריה מסויימת לשלוח מידע לרשת, הספריה מפנה את הקשה ל-API של מערכת ההפעלה כגון winsock. הבקשה עוברת ל-kernel mode שם ממומש ה-network stack ובשלב מסויים מועברת לדרייבר של הכרטיס רשת שמעביר אותה לחומרה של כרטיס הרשת שמבצע את שליחת המידע בפועל. כל זאת קרה ביוזמת האפליקציה ולכן גם נספר בסטיסטיקות של האפליקציה. זאת כמובן רק דוגמא אחת לפניה של האפליקציה לקרנל, וכמעט כל דבר מעבר לעבודה "חישובית" יעבור דרך הקרנל כמו: בקשות להקצות/שיחרור זיכרון, פניה לדיסק, פניה לחומרה כלשהי, תקשורת עם תהליכים אחרים, הפעלה של תוכנות אחרות וכו'.

אני לא מכיר דרך לראות את זה ב-task manager שלא בדיוק מיועד לאנשים שרוצים מידע. מומלץ בחום להשתמש ב-process explorer (שיכול גם להחליף את ה-task manager הרגיל של windows):
https://docs.microsoft.com/en-us/sysinternals/down...
הנה לדוגמא תמונת מסך מ-process explorer שמראה תהליך שיש לו כ-50 דקות של זמן מעבד שמתוכם כ-18 דקות היו בקרנל ו-32 ב-user space:



זה לא שהקרנל הוא אוסף תהליכים שאתה לא רואה, הקרנל הוא המערכת שנותנת לך בכלל לדבר על תהליכים ולכן הקרנל עצמו לא יכול להיות תהליך, לפחות לא תהליך רגיל. אם רוצים לדייק, יש כמה "תהליכים" שמופיעים ב-task manager או process explorer שמייצגים חלקים של הקרנל כגון: System, System Idle Process, Registry, Interrupts וכו' (כאשר ה-System Idle Process לא מופיע ב-task manager אבל כן ב-process explorer). כאמור חלק חשוב ממה שנעשה ברמת הקרנל יופיע בכלל תחת האפליקציה שביקשה את השירות, ואני מנחש שה"תהליכים" הנ"ל הם בשביל דברים שהקרנל צריך להריץ ברקע (לדוגמא Interrupts זה כנראה החלק בקרנל שמאזין לאירועים שמגיעים מהחומרה ומפעיל את הדרייבר הרלוונטי).

למען השלמות אציין שיש משמעות מאד מדוייקת להפרדה בין kernel space ל-user space. המשמעות הטכנית נובעת מזה שמערכות ההפעלה משתמשות בתכונות חומרתיות של המעבד בשביל לממש את ההפרדה בין תהליכים כולל ההפרדה בזיכרון הוירטואלי של התהליכים. כחלק מההפרדה הזאת קוד של הקרנל רץ ב-ring 0 ואילו ה-user space רץ ב-ring 3:
https://en.wikipedia.org/wiki/Protection_ring
לקוד של הקרנל שרץ ב-ring 0 יש גישה מלאה לכל הזיכרון הפיזי וכו', בעוד שלקוד ב-user space יש גישה רק לזיכרון הוירטואלי שמערכת ההפעלה בוחרת לחשוף בשבילו. ספציפית הזיכרון של הקרנל וגישה לחומרה וכו' חסומים לקוד ב-user space ולכן אפליקציות חייבות לפנות ל-kernel בשביל דברים כאלה.
(1) הבעות תודה: Dor1992
פרופיל | שלח הודעה | חפש
כל הזמנים הם שעון קיץ - ישראל (GMT+3) הצג הודעות קודמות:    
פורומים > רשתות, IT ומחשוב


  
    שם משתמש:
נתוני כניסה לכל אתרי HT:

  סיסמא:
 

  


 | 

קפוץ אל: 
לא ניתן לשלוח הודעות בפורום זה
לא ניתן להגיב להודעות בפורום זה
לא ניתן לערוך את הודעותיך בפורום זה
לא ניתן למחוק את הודעותיך בפורום זה
לא ניתן להצביע לסקרים בפורום זה
לא ניתן לצרף קבצים בפורום זה
לא ניתן להוריד קבצים בפורום זה

תקנון / תנאי השימוש באתר צור קשר / contact us כל הזכויות שמורות לקבוצת ht