כיצד שרתים מקשיבים לבקשות חדשות?
כאשר לומדים על שרתי אינטרנט וכיצד הם עובדים, אתה עשוי להיות סקרן אם הם כל הזמן מקשיב לבקשות או אם הם מחכים עד שהם מקבלים בקשה להיכנס לפעולה. עם זאת, היום של SuperUser Q & A פוסט יש את התשובות כדי לספק את סקרנות הקורא.
מפגש השאלות והתשובות של היום מגיע אלינו באדיבות SuperUser - חלוקה מחודשת של Stack Exchange, קיבוץ מונחה על ידי הקהילה של אתרי אינטרנט של Q & A.
צילום מסך באדיבות xmodulo / לינוקס צילומי מסך (Flickr).
השאלה
קורא SuperUser user2202911 רוצה לדעת כיצד שרתי אינטרנט מקשיבים לבקשות חדשות:
אני מנסה להבין את הפרטים 'ברמה עמוקה יותר' של האופן שבו שרתי אינטרנט פועלים. אני רוצה לדעת אם שרת, אומר אפאצ 'י, למשל, הוא סקר שוטף עבור בקשות חדשות או אם זה עובד על ידי איזושהי מערכת פסיקה. אם זה קטע, מה מעורר את ההפרעה? האם זהו מנהל ההתקן של כרטיס הרשת?
כיצד שרת אינטרנט מקשיב לבקשות חדשות?
התשובה
גרג Bowser תורם SuperUser יש את התשובה עבורנו:
התשובה הקצרה היא סוג של מערכת פסיקה. בעיקרו של דבר, הם משתמשים בחסימת I / O, כלומר הם ישנים (בלוק) בזמן ההמתנה לנתונים חדשים.
- השרת יוצר שקע האזנה ולאחר מכן חוסם בזמן ההמתנה לחיבורים חדשים. במהלך הזמן הזה, הקרנל מעביר את התהליך לתוך שינה מופרעת המדינה ומנהלת תהליכים אחרים. זו נקודה חשובה; לאחר סקר התהליך ברציפות יבזבז משאבי CPU. הקרנל הוא מסוגל להשתמש במשאבי המערכת בצורה יעילה יותר על ידי חסימת התהליך עד שיש עבודה לעשות את זה.
- כאשר נתונים חדשים מגיעים לרשת, כרטיס הרשת מפריע.
- אם אתה רואה שיש הפרעה מכרטיס הרשת, הקרנל, באמצעות מנהל כרטיס הרשת, קורא את הנתונים החדשים מכרטיס הרשת ומאחסן אותו בזיכרון. (זה חייב להיעשות במהירות והוא מטופל בדרך כלל בתוך המטפל interrupt.)
- הקרנל מעבד את הנתונים החדשים ומגיע אליו עם שקע. תהליך זה חוסם על שקע זה יהיה מסומן runnable, כלומר, היא זכאית כעת לרוץ. זה לא בהכרח לרוץ מיד (הקרנל עשוי להחליט להפעיל תהליכים אחרים עדיין).
- בזמן הפנאי, הקרנל יעיר את תהליך שרת האינטרנט החסום. (מאז זה עכשיו runnable.)
- תהליך שרת האינטרנט ממשיך לבצע כאילו לא חלף זמן. מערכת החסימה שלו חוזרת ומחזירה נתונים חדשים. לאחר מכן עבור לשלב 1.
יש לך משהו להוסיף להסבר? נשמע את ההערות. רוצה לקרוא תשובות נוספות ממשתמשים אחרים בעלי ידע טכנולוגי מתמצא? בדוק את נושא הדיון המלא כאן.