بخشی از مقاله
مفاهیم سیستم عامل به همراه ویندوز NT
سيستم عامل چيست؟
سيستم عامل قسمت مهم هر سيستم کامپيوتري است يک سيستم کامپيوتري بصورت کلان مي تواند به چهار جزء تقسيم شود: سخت افزار، سيستم عامل، برنامه هاي کاربردي و کاربرها.
سخت افزار که شامل واحد پردازش مرکزي (CPU)، حافظه، دستگاه هاي ورودي و خروجي (I/O) مي باشد. منابع اصلي محاسبات را تشکيل مي دهد. برنامه هاي کاربردي مانند کمپايلرها، سيستم هاي بانک اطلاعاتي، بازي ها، و برنامه هاي تجاري روش هايي را که اين منابع براي حل مسائل محاسباتي کاربران بکار مي برند تعريف مي کنند.
ممکن است کاربران مختلفي (افراد، ماشين ها، کامپيوترهاي ديگر) در جهت حل مسائل مختلفي کوشش کنند. همچنين، ممکن است برنامه هاي کاربردي مختلفي وجود داشته باشد. سيستم عامل استفاده از سخت افزار را بين کاربران مختلف براي برنامه هاي کاربردي کنترل و هماهنگ مي کند.
سيستم عامل مانند يک حکومت است. اجزاء يک سيستم کامپيوتري شامل سخت افزار، نرم افزار و داده هاي آن مي باشد. سيستم عامل امکانات براي استفاده مناسب اين منابع را در عمليات سيستم کامپيوتري فراهم مي کند. مانند يک حکومت، سيستم عامل به خودي خودکار مفيدي انجام نمي دهد. ولي بطور ساده محيطي فراهم مي کند که در آن برنامه ها بتوانند کار مفيد انجام دهند.
مي توانيم به سيستم عامل بعنوان تخصيص دهنده منابع نگاه کنيم. يک سيستم کامپيوتري منابع زيادي دارد (سخت افزار و نرم افزار) که ممکن است براي يک مسئله لازم باشد: مانند زمان CPU، فضاي حافظه، فضاي ذخيره فايل دستگاه هاي I/O و غيره. سيستم عامل مانند مديران منابع عمل مي کند و هنگام لزوم آن ها را به برنامه هاي مشخص و کاربران تخصيص مي دهد. بعلت آنکه ممکن است تقاضاي زيادي که احتمال متناقض بودنشان براي منابع وجود داشته باشد بشود. سيستم عامل بايد تصميم بگيرد. منابع را به کدام تقاضا تخصيص دهد تا سيستم کامپيوتر موثر و
عادلانه عمل کند. يک نظر تفاوت ديگر از سيستم عامل روي لزوم کنترل دستگاه ها و برنامه هاي متعدد تمرکز مي کند. هر سيستم عامل يک برنامه کنترل کننده مي باشد. برنامه کنترل اجراي برنامه هاي کاربر را نظارت مي کند تا از اشتباه ها و استفاده نادرست کامپيوتر جلوگيري کند. مخصوصاً نسبت به عمليات دستگاه هاي I/O و کنترل آنها دخالت دارد.
گرچه کلا يک تعريف کامل و مناسب براي سيستم عامل وجود ندارد، سيستم عامل ها
وجود دارند زيرا آنها روش منطقي حل مسائل براي ايجاد سيستم کامپيوتري مفيد هستند. هدف اصلي سيستم هاي کامپيوتري اجراي برنامه هاي کاربر و راحت تر کردن حل مسائل او مي باشد. در راستاي هدف،سخت افزار کامپيوتر ساخته شده است. بعلت آنکه استفاه مستقيم از سخت افزار کار آساني نيست. برنامه هاي کاربر بوجود آمده است. اين برنامه هاي متعدد به اعمال همگاني مشخص مانند کنترل دستگاه هاي I/O نياز دارند. کارهاي عمومي کنترل و تخصيص منابع در يک نرم افزار جمع شده اند که سيستم عامل مي باشد.
ويندوز NT
سيستم عامل ويندوز NT مايکروسافت، سيستم عاملي 32 بيتي براي مايکروپروسسورهاي جديد مي باشد. NT قابل حمل روي انواع مختلف معماري هاي پردازنده ها مي باشد. يک يا چند نسخه NT روي اينتل 386 يا بالاتر روي POWER PC, DEC ALPHA, MIPS R4000 پياده سازي شده است. هدف هاي کليدي اين سيستم عبارتند از: قابليت حمل و امنيت. واسطه قابل حمل به نام POSIX با همگامي با IEEE Std 1003 حمايت چند پردازنده اي قابليت گسترش حمايت بين المللي و سازگاري با برنامه هاي کاربردي MS-DOS و NT.MS-WINDOWS معماري ميکروهسته اي مانند کامپيوترهاي مکينتاش مي باشد، بطوري که مي توان يک قسمت سيستم عامل را بهينه سازي نمود بدون آنکه قسمت ديگر را شديدا تحت تاثير قرار دهد. NT (نسخه 4) يک سيستم چند کاربره نيست.
دو نسخه NT، يکي NT ايستگاه کاري و ديگري NT سرويس دهنده است. آنها از يک هسته و يک کد سيستم عامل استفاده مي کنند، اما NT سرويس دهنده براي کاربردهاي سرويس دهنده و مشتري پيکربندي شده است و مي تواند به عنوان سرويس دهنده روي NetWARE و LANها استفاده شود. نسخه چهار سرويس دهنده NT از تعداد مجوزهاي فروخته شده UNIX بيشتر بوده است.
تاريخچه:
در اواسط دهه 1980 شرکت مايکروسافت و آي – بي – ام همکاري مشترک براي سيستم عامل OS/2 را شروع کردند که به زبان اسمبلي براي پردازنده اينتل 286 نوشته بود. در 1988 شرکت
مايکروسافت تصميم به شروع يک تکنولوژي جديد به نام NT نمود که خاصيت قابل حمل بودن را داشته باشد و در عين حال هم سيستم عامل OS/2 و واسطه هاي POSIX API کاربردي قابل حمل را حمايت کند. در اکتبر 1988، آقاي ديوکالتر، معمار سيستم عامل VAX/CMS شرکت ديجيتال استخدام شد و به او ماموريت ايجاد سيستم عامل جديد داده شد. اوايل فرض بر اين بود که NT از OS/2 API به عنوان محيط اوليه استفاده کند، ليکن در خلال توليد، سيستم NT تغيير کرد تا از امکانات 32 بيتي ويندوز API يا API WIN32 استفاده کند که منعکس کننده محبوبيت ويندوز 1 . 3 باشد. نسخه هاي NT ويندوز 1 .3 و ويندوز NT 1 .3 سرور پيشرفته بود (در آن زمان ويندوز 16 بيتي نسخه 1 . 3 بود) در نسخه NT4.0 واسطه کاربرد ويندوز 95 را اختيار کرد و اينترنت وب سرور و نرم افزار بروزر را نيز در سيستم ادغام کرد. بعلاوه بعضي از روال هاي ارتباطي و کدهاي گرافيکي به هسته مرکزي KERNEL براي بهبود سيستم انتقال داده شد با توجه به اينکه امکان قابليت اطمينان سيستم کاهش خواهد يافت.
اصول طراحي
هدف هايي که مايکروسافت براي NT اعلام کرد در برگيرنده قابليت گسترش، قابليت حمل، قابليت اطمينان، سازگاري، کارآيي و پشتيباني بين المللي بود.
قابليت گسترش خاصيت مهمي براي هر سيستم عاملي است که خواهان همگاني با پيشرفت هاي تکنولوژي کامپيوتر مي باشد بطوري که تغييرات در طول زمان امکان پذير باشد، NT با استفاد
ه از خاصيت لايه اي تکميل شده است. مديريت عالي اجرايي NT که در هسته اجرا مي شود حالت حفاظت شده دارد که سرويس هاي اصلي سيستم را دربرمي گيرد. در بالاي مديريت اجرايي،چندين زير سيستم سرويس دهنده در حالت کاربر کار مي کند در بين آنها زير سيستم هاي محيطي هستند که سيستم عامل هاي مختلفي را مدل سازي مي کنند بنابراين برنامه هاي نوشته شده براي MS-DOS ، ويندوز مايکروسافت و پوزيکس همه مي توانند تحت NT در محيط
خودشان کار کنند. قسمت 4 . 23 را براي اطلاع بيشتر روي سيستم هاي محيطي مطالعه کنيد. به علت ساختار قطعه اي زير سيستم هاي بيشتري را مي توان بدون تاثير گذاشتن روي مديريت عالي اجرايي به آن اضافه نمود. علاوه بر اين از گرداننده هاي قابل بارگذاري در سيستم i/o استفاده مي کننده به طوري که سيستم هاي فايل جديد و انواع دستگاه هاي I/O را مي توان بدون گذاشتن روي مديريت عالي اجرايي به آن اضافه نمود. علاوه بر اين از گرداننده هاي قابل بارگذاري در سيستم I/O استفاده مي کنند به طوري که سيستم هاي فايل جديد و انواع دستگاه هاي I/O را مي توان اضافه نمود در حالي که سيستم در حال اجرا مي باشد. NT يک مدل شبيه سيستم عامل مکينتاش و پردازش توزيع شده را از طريق فراخواني راه دور (RPC) به طريقي که در مباني سيستم هاي باز تعريف شده است حمايت مي کند.
يک سيستم قابل حمل مي باشد اگر بتوان آن را از يک معماري سخت افزاري به معماري ديگر با تغييرات جزئي انتقال داد. NT بصورت قابل حمل طراحي شده است. همانطوري که در مورد UNIX صادق است،قسمت عمده سيستم به زبان C و C++ نوشته شده است. تمام کدهاي وابسته به پردازشگر در کتابخانه پيوند ديناميک DLL به نام لايه مجزاي سخت افزار HAL قرار دارد. يک
DLL فايلي است که در فضاي آدرس پردازش قرار مي گيرد به طوري که هر کاري در DLL مانند آن است که قسمتي از پردازش مي باشد. لايه هاي بالايي NT وابسته به HAL مي باشد و نه به سخت افزار و اين به NT کمک مي کند که قابل حمل باشد. HAL مستقيما سخت افزار را بکا
ر مي گيرد. بدين ترتيب مابقي NT را از تفاوت هاي سخت افزاري که در سکوهاي مختلفي اجرا مي شود جدا مي سازد. قابليت اطمينان به معناي قدرت مقابله با شرايط خطا مي باشد که دربرگيرنده قدرت سيستم براي حفاظت خود و استفاده کنندگانش در مقابل نرم افزارهاي مخرب يا کينه توز مي باشد. NT براي مقابله با خرابي ها و حمله ها با استفاده از سخت افزار براي حافظه مجازي و مکانيزم هاي NT نرم افزاري براي حفاظت منابع سيستم عامل طراحي شده است. همچنين NT با يک سيستم قابل به نام سيستم مي کند. NT نسخه 3015 داراي درجه امنيت C-2 از آمريکا مي باشد که مبين سطح متوسط حفاظت در مقابل نرم افزارهاي مخرب و حمله هاي
کينه توزانه مي باشد.
NT داراي سازگاري با کاربردهايي که استاندارد IEEE 1003.1 POSIX را رعايت مي کند مي باشد. بنابراين اين برنامه ها مي توانند کامپايل شوند و روي NT بدون تغيير کد اجرا گردند.
علاوه بر اين NT برنامه هاي اجرايي اغلب برنامه هايي که براي X- 86 روي MS-DOS ويندوز 16 بيتي و OS/2 و LAN MANAGER ويندوز 32 بيتي کمپايل شده اند را مي تواند اجرا کند. اين کار را توسط دو مکانيزم انجام مي دهد. اول نسخه هاي NT براي پردازنده هاي غير INTEL دستورات
X-86 را بصورت نرم افزاري پياده سازي مي کند. دوم درخواست هاي سيستمي براي MS-DOS ويندوز 32 بيتي و ديگران را به وسيله زير سيستم هاي محيطي که قبلا اشاره شد انجام مي دهد. اين زير سيستم هاي محيطي انواع مختلف سيستم هاي فايل را حمايت مي کنند از جمله سيستم فايل FAT در MS-DOS و سيستم عامل OS HPFS سيستم فايل ISO 9660 و NTFS گرچه سازگاري در سطح باينري کامل نيست. مثلا در برنامه ها مي توانند مستقيما به درگاه هاي سخت افزاري دستيابي پيدا کنند. براي امنيت و قابل اطمينان بودن NT از اين کار جلوگيري مي کند.
NT براي بازدهي خوب طراحي شده است. زير سيستم هائي که NT را شامل مي شوند و مي توانند با يکديگر به طور موثر از طريق يک روال درخواست محلي ارتباط برقرار کنند که داراي بازدهي ارسال پيغام سريع مي باشد. به غير از هسته مرکزي بندها در زير سيستم هاي NT مي توانند توسط بندهاي با الويت بالاتر تخليه شوند. بنابراين سيستم مي تواند در برابر واقعه هاي خارجي عکس العمل سريع داشته باشد. علاوه بر اين NT براي چند پردازنده متقارن طراحي شده است. در کامپيوتر چند پردازنده اي چندين بند همزمان مي توانند در حال اجرا باشند. در مقياس حاضر NT در مقايسه با UNIX محدود است. تا سال 1977 NT تا هشت CPU را پشتيباني مي کرد، در حالي که سولاريس تا 64 پردازنده را حمايت مي کرد.
NT همچنين براي استفاده بين المللي طراحي شده است. موقعيت هاي جغرافيايي مختلف را از طريق پشتيباني زبان ملي NLS API مهيا مي کند. API روال هاي مخصوص براي فرم هاي تاريخ،زمان و پول طبق آداب مليت ها ارائه مي دهد. مقايسه هاي رشته اي براي سري گروه هاي مختلف دسته هاي حروف نيز وجود دارد. UNICODE سري حروف اصلي NT مي باشد، گرچه NT سري حروف ASCII را با تبديل آنها به UNICODE قبل از بکارگيري آنها حمايت مي کند (تبديل 8 بيت به 16 بيت)
اجزاء سيستم
معماري NT طرح لايه اي است که شامل اجزاء سيستم مي باشد. شکل 1 .23 معماري NT نسخه 4 را نشان مي دهد. مهمترين لايه ها عبارتند از لايه مجرد سخت افزار، هسته و مديريت عالي که در حالت حفاظت شده اجرا مي شوند و تعداد زيادي زير سيستم که در حالت کاربر اجرا مي شوند.
زير سيستم ها دو گروه هستند. زير سيستم هاي محيطي که سيستم عامل هاي مختلف را
شبيه سازي مي کنند و زيرسيستم هاي حفاظتي که فراهم کننده اعمال امنيتي هستند. يکي از مزاياي عمده اين نوع معماري آن است که ارتباط بين اجزاء را مي توان ساده نگهداشت. باقيمانده فصل اين لايه و زير سيستم هاي را شرح دهد.
1 .3 . 23 لايه مجرد سخت افزار HARDWARE ABSTRACTION LAYER
HAL يا لايه مجرد سخت افزار لايه نرم افزاري است که اختلافات سخت افزاري را از لايه هاي بالاتر سيستم عامل پنهان مي کند تا NT را قابل حمل نمايد. HAL يک واسطه ماشين مجازي صادر مي کند که مورد استفاده هسته،مديريت عالي و گردانندگان دستگاه ها قرار مي گيرد. مزيت اين روش آن است که فقط يک نسخه از هر گرداننده دستگاه لازم است،اين نسخه مي تواند روي تمامي سکوهاي سخت افزاريي بدون انتقال کد گرداننده اجرا گردد. HAL همچنين چند پردازنده اي متقارن را پشتيباني مي کند. به علت ملاحظات کارآيي، گردانندگان I/O (و گردانندگان گرافيکي در NT4.0) به طور مستقيم به دستگاه ها دسترسي دارند.
2. 3. 23 هسته KERNEL
هسته NT تعبيه کننده زيربنا براي مديريت عالي وزير سيستم ها مي باشد. هسته هيچگاه از حافظه روي ديسک خارج کپي نمي شود و اجراي آن هيچگاه تخليه نمي شود و چهار مسئوليت به عهده دارد: زمان بندي بندها، انجام وقفه ها و حالت هاي استثنا، همزماني سطح پايين پردازنده و بازسازي پس از قطع برق.
هسته به صورت شيئي گرا طراحي شده است. نوع شيئي در NT در يک نوع داده تعريف شده سيستم است که داراي تعدادي خواص است (مقادير داده) و تعدادي روش (مثلا وظايف يا عمليات). يک شيئي تنها يک مورد از يک نوع شيئي بخصوص مي باشد. هسته کارش را با استفاده از تعدادي اشياء هسته که صفات آنها اطلاعات هسته را نگهداري مي کنند و روش هاي آنها فعاليت هاي هسته را اجرا مي کنند انجام مي دهد.
هسته دو گروه شيئي بکار مي برد. اولين گروه اشيائ اعزام کننده هستند. اينها کنترل کننده اعزام ها و همزماني ها در سيستم هستند. مثال هايي از اين نوع شي ء ها عبارتند از وقعه گير ها. شي ء واقعه براي ثبت يک رخداد و هماهنگي آن با يک عمل بکار مي رود. متغير متلون با در نظر گرفتن مسئله مالکيت براي حالت حفاظت شده (حالت هسته) و حالت کاربر استفاده مي شود. شي ء تواما مستثني که فقط در حالت هسته موجود است براي منابع تواما مستثني جهت اجراي بدون بن بست بکار مي رود. راهنماها به عنوان کنتور يا دروازه براي کنترل تعداد دفعاتي که بندها به يک منبع دستيابي پيدا مي کنند. استفاده مي شود. شي بند موجوديتي است كه توسط هسته اجرا مي شود و در رابطه با يك شي پردازش است. شي هاي زمان براي نگهداري مدت و علامت دادن براي وقت تمام هنگامي كه عمليات طولاني مي شود و نياز به توقف دارد به كار مي روند.
سري دوم شيء هاي هسته شامل اشياء كنترل مي باشد. اين اشياء عبارتند از روال هاي فراخواني سيستم غير همزمان وقفه ها، اعلان وضعيت برق، پردازش و اشياء مقطعي. روال
فراخواني غير همزمان براي وارد شدن به يك بند در حال اجرا و درخواست يك روال مي باشد. شيء وقفه براي اتصال يك برنامه سرويس وقفه با منبع وقفه مي باشد. شي اطلاع دهنده برق براي فراخواني يك روال اتوماتيك پس از قطع برق مي باشد و شيء وضعيت برق براي چك كردن اينكه برق قطع شده است يا نه. شيء پردازش براي فضاي آدرس مجازي و اطلاعات كنترلي لازم براي اجراي يك سري بندهاي در ارتباط با يك پردازش مي باشد. نهايتاً شي مقطعي برا
ي محاسبه زمان استفاده شده براي يك بلاك كد مي باشد.
همانطور كه بيشتر سيستم عامل هاي جديد رفتار مي كنند، NT متصور پردازش ها و بندها براي كدهاي قابل اجراء مي باشد. پردازش يك فضاي آدرس مجازي و اطلاعاتي مانند اولويت اوليه و اتصال به يك يا چند پردازنده را دارد. هر پردازش داراي يك يا چند بند مي باشد كه واحدهاي پردازش اعزامي توسط هسته مي باشند. هر بند حالت خود را دارد، مانند اولويت، تعلق به پردازنده و اطلاعات حسابداري.
شش حالت بند عبارتند از حاضر، ذخيره، اجرا، انتظار، انتقال و خاتمه يافته. حاضر به معناي در انتظار براي اجرا مي باشد. بند حاضر داراي بالاترين الويت به حالت ذخيره انتقال داده مي شود كه بدين معني است كه اين بند بعدي است كه بايد اجرا شود. در سيستم چند پردازنده اي يك بند هر پردازه به حالت ذخيره نگهداري مي شود. يك بند در حال اجرا است هنگامي كه در روي يك پردازنده در حال انجام است. بند به اجرا ادامه خواهد داد تا زماني كه توسط يك بند با اولويت بالاتر تخليه گردد و يا تا هنگامي كه خاتمه يابد و يا فرجه زماني آن تمام شود و يا يك درخواست سيستم مانند تقاضاي I/O بنمايد. بند در حال انتظار است هنگامي كه منتظر يك علامت مانند اتمام I/O باشد يك بند جديد در حال انتقال است هنگامي كه منتظر منابع براي اجراست. يك بند در حال اختتام است هنگامي كه اجراي آن تمام مي شود.
اعزام كننده يك طرح اولويت 32 سطحي براي ترتيب اجراي بند بكار مي برد. اولويتها به دو دسته تقسيم مي شوند: كلاس زمان واقعي كه از 16 تا 31 مي باشد و كلاس متغير كه اولويت 0 تا 15 دارد. اعزام كننده براي هر اولويت زمانبدي يك صف استفاه مي كند و صف ها را از اولويت بالا به پايين پيمايش مي كند تا زماني كه يك بند پيدا كند كه آماده اجرا است. اگر يك بند اتصال به يك پردازنده دارد و پردازنده آماده نباشد اعزام كننده از آن گذر مي كند و براي پيدا كردن يك بند كه آماده اجراست تفحص مي كند. اگر هيچ بندي آماده اجرا نيست، اعزام كننده يك بند مخصوص به نام بند بيكار را اجرا مي كند.
هنگامي كه فرجه زماني بند تمام مي شود، بند متوقف مي شود و اگر بند در كلاس اولويت متغير باشد اولويتش پايين آورده مي شود. گرچه اولويت هيچگاه از اولويت پايه كمتر نمي شود. پايين آوردن اولويت بند باعث محدود شدن مصرف PU بندهاي CPU غالب مي شود. هنگامي كه يك بند با اولويت متغير از حالت انتظار رها مي شود، اعزام كننده اولويتش را اضافه ميكند. مقدار اضافه شدن اولويت بستگي به آن دارد كه براي چه منتظر بوده است. يك بند كه براي I/O صفحه كليد منتظر مي باشد اضافه اولويت زيادي خواهد داشت در حاليكه يك بند منتظر عمليات ديسك اضافه متعادلي خواهد داشت. اين خط مشي منجر به داشتن زمان جوابگويي خوبي براي استفاده از ماوس ويندوز خواهد شد و بندهاي I/O غالب را به مشغول نمودن دستگاه هاي I/O واميدارد. همچنين اجازه مي دهد بندهاي CPU غالب از اضافه سيكلهاي CPU بلا استفاده استفاده كنند. اين خط مشي در چندين سيستم عامل اشتراك زماني از جمله UNIX استفاده شده است. به علاوه پنجره حاضر كه كاربر با آن در حال تبادل مي باشد يك اضافه اولويت بدست مي آورد ك
ه زمان پاسخ خود را بهبود بخشد.
زمان بندي هنگامي كه يك بند وارد حالت آماده و يا حالت انتظار و يا زماني كه يك بند خاتمه مي يابد و يا يك برنامه اولويت يك بند و يا ارتباط پردازنده را تغيير مي دهد اتفاق مي افتد. اگر يك بند زمان واقعي با الويت بالا آمده شود و يك بند با الويت كمتر در حالت اجرا باشد، بند با الويت كمتر تخليه خواهد شد. اين تخليه به بند با خاصيت زمان واقعي هر زمان كه نياز داشته باشد دستيابي ترجيحي مي دهد. NT يك سيستم عامل جدي زمان واقعي نيست زيرا اين سيستم تضمين كنندة اجراي يك بند در محدودة زماني مشخص نيست.
هسته همچنين داراي امكانات تحليل تله براي استثناها و وقفه ها مي باشد كه توسط سخ
ت افزار و نرم افزار ايجاد مي شود. NT چندين استثناي غير وابسته به معماري كامپيوتر تعريف مي كند كه شامل دستيابي غير مجاز حافظه، سر ريزي اعداد صحيح، سرريزي اعداد مميز شناور و يا زير ريزي آن ها و تقسيم بر صفر اعداد صحيح، تقسيم بر صفر اعداد مميز شناور، دستورات غير مجاز، عدم تنظيم داده در حافظه، دستور ممتاز، خطاي خواندن صفحه، قانون شكني صفحه محافظ، عبور از فرجه تعداد صفحات، نقطه توقف اشكال زدا و اجراي دستور به دستور اشكال زدا مي باشد.
استثنائات ساده مي تواند توسط برنامه تحليل تله تحليل گردد. بقيه توسط اعزام كننده استثنائات هسته تحليل مي شوند. اعزام كننده استثناء يك ركورد ايجاد مي كند كه علت حالت استثنا را شامل شود تا بتواند يك تحليل گر استثنا پيدا كند كه اين استثنا را تحليل كند.
هنگامي كه حالت استثنا در حالت هسته اتفاق مي افتد، اعزام كننده استثنا، يك روال كه تحليل گر استثنا را پيدا كند صدا مي زند. اگر تحليل گري پيدا نشد كه يك اشكال سيستمي كشنده خواهد بود و كاربر با عبارت مشهور صفحه آبي مرگبار كه نشانگر نقص سيستم خواهد بود مواجه مي شود. تحليل استثنا، براي پردازش هاي حالت كاربر پيچيده تر است، زيرا يك زير سيستم محيطي (مانند سيستم POSIX)) مي تواند يك درگاه اشكال زدا و يك درگاه استثناء براي هر پردازشي كه ايجاد مي كند كارگذاري كند. اگر يك درگاه اشكال زدا ثبت شده باشد تحليل گر
استثناء حالت را به اشكال زدا خواهد فرستاد. اگر درگاه اشكال زدا پيدا نشود و يا اين نوع استثناء را جوابگو نباشد آنگاه اعزام كننده در پي پيدا كردن تحليل گر مناسب استثناء بر خواهد آمد. اگر تحليل گر پيدا نشود، اشكال زدا، دوباره صدا مي شود تا اشكال را براي اشكال زدايي بدست آورد و اگر يك برنامه اشكال زدا در حال اجرا نباشد، يك پيام به درگاه استثناء پردازنده مي فرستد تا فرصتي براي زير سيستم فراهم كند تا حالت استثناء را تفسير كند. مثلاً محيط POSIX پيام هاي استثناء NT را به علائم POSIX تبديل مي كند قبل از فرستادن آن ها به بند مربوطه كه حالت
استثناء را بوجود آورده است. نهايتاً اگر هيچ كدام كار نكنند، هسته به پردازشي كه شامل بندي است كه حالت استثناء را بوجود آورده است خاتمه مي دهد.
اعزام كننده وقفه در هسته وقفه ها را با صدا كردن يك روال سرويس وقفه (مانند يك گرداننده دستگاه) يا يك روال داخلي هسته تحليل مي كند. وقفه توسط يك شيء وقفه كه حاوي تمامي اطلاعات براي تحليل وقفه مي باشد مشخص مي شود. استفاده از شيء وقفه ارتباط بين روال سرويس وقفه و وقفه را بدون مراجعه به سخت افزار منبع وقفه آسان مي سازد.
معماري هاي مختلف پردازنده ها، مانند اينتل ودك آلفا انواع و شماره هاي مختلفي از وقفه را دارا هستند. براي قابل حمل بودن سيستم عامل اعزام كننده وقفه، وقفه هاي سخت افزاري را به يك سري وقفه هاي استاندارد برگردان مي كند. به وقفه ها اولويت داده مي شود و به ترتيب اولويت سرويس مي شوند. 32 سطح وقفه در NT وجود دارد (IRQLS). هشت عدد آن ها توسط هسته استفاده شده اند و 24 عدد ديگر نمايانگر وقفه ها از طريق HAL (لايه كلي سخت افزار) مي
باشد. وقفه هاي NT در شكل 32.2 تعريف شده اند.
هسته يك جدول اعزام وقفه را جهت نسبت دادن هر سطح وقفه به يك روال سرويس استفاده مي كند. در كامپيوتر چند پردازنده اي، NT جدول هاي مجزا براي هر پردازنده نگهداري مي كند و IRQL هر پردازنده را ميتوان بطور جداگانه برپا كرد تا وقفه را غير فعال نمايد. تمامي وقفه هاي هم سطح يا در سطح پائين تر IRQL پردازنده بلو كه مي شوند تا هنگامي كه سطح IRQL توسط يك بند در سطح هسته پايين آورده شود. NT از اين مزيت براي استفاده از وقفه هاي نرم افزاري براي عمليات سيستم استفاده مي كند. به عنوان مثال هسته براي شروع يك بند از وقفه نرم افزاري براي عمليات سيستم استفاده مي كند. به عنوان مثال هسته براي شروع يك بند از وقفه نرم افزاري براي تحليل تايمرها و پشتيباني عمليات ناهماهنگ استفاده مي كند.
هسته يك اعزام كننده وقفه را براي برگردان متن بند استفاده مي كند. هنگامي كه هسته در حال اجراست، سطح IRQL را در پردازنده بالاي سطح اعزام كننده قرار مي دهد. هنگامي كه هسته مشخصاتي دهد كه اعزام يك بند مورد نياز است، هسته يك وقفه اعزام ايجاد مي كند، اما اين وقفه تا هنگامي كه هسته كارش را تمام كند و سطح IRQL را پايين آورد بلوكه مي شود. در آن موقع وقفه اعزام مي تواند سرويس شود. بنابراين اعزام كنندة يك بند را براي اجرا انتخاب مي كند.
هنگامي كه هسته تصميم مي گيرد نهايتاً يك عمل سيستمي بايد اجرا گردد اما در آن تعجب نيست، يك شي DPC فراخواني سيستم معوق را در صف قرار مي دهد كه شامل آدرس كاري است كه بايد اجرا گردد و يك وقفه DPC ايجاد مي نمايد. هنگامي كه IRQL پردازنده به اندازه كافي پايين مي آيد شيء هاي DPC اجرا مي گردند. IRQL وقفه هاي DPC معمولاً از بندهاي كاربر بالاتر است بنابراين DPC اجراي بندهاي كاربر را دچار وقفه مي كند. براي احتراز از مسائل، DPC ها بطور محدودي ساده هستند. آن ها نمي توانند حافظه يك بند را تغيير دهند. نمي توانند اشياء ايجاد كنند و يا روي آن ها منتظر بمانند و آن ها را بخواهند و نمي توانند سرويس هاي سيستم را صدا كنند يا نقص صفحه ايجاد كنند.
نوع وقفه
سطوح وقفه
اشكال ماشين يا اشكال گذرگاه 31
قطع برق 30
اطلاع بين پردازنده اي (تقاضاي پردازنده اي ديگر به ACT مانند اعزام يك پردازه يا بروز رساني TB) ساعت (براي كنترل زمان) 29
28
وقفه هاي سخت افزاري قديمي PCIRQ 27-12
وقفه هاي اعزام و فراخواني هاي تعليقي 11-4
شكل 2302 وقفه هاي NT
فراخواني سيستم غير همزمان APC مانند مكانيزم DPC (فراخواني تعليقي) مي باشد با اين تفاوت كه براي موارد عمومي نيز بكار مي رود. مكانيزم APC بندها را قادر مي سازد تا فراخواني هائي را داير كند كه در يك زمان در آينده دفعتاً شروع بكار كند. مثلاً بسياري از سرويس هاي سيستم يك روال حالت كاربر را به عنوان پارامتر قبول مي كنند. بجاي فراخواني سيستمي همزمان كه بند را
تا تكميل فراخواني سيستم بلوكه مي كند، بند كاربر مي تواند يك فراخواني سيستمي غير همزمان داشته باشد و يك PC را ايجاد كند. بند كاربر ادامه خواهد داد. هنگامي كه سرويس سيستم تمام مي شود، بند كاربر متوقف مي شود تا APC خود به خود اجرا گردد.
APC مي تواند در صف بندهاي سيستم يا بندهاي كاربر قرار گيرد، اگر چه APC حالت كاربر فقط در حالي قابل اجراست كه به عنوان يك بند گوش به زنگ ناميده شده باشد. APC از DPC قدرتمند تر است در مواردي كه مي توان يك شيء را بدست آورد يا براي آن ها منتظر ماند، نقص صفحه ايجاد كند و سرويس هاي سيستم را فراخواني كند. بعلت اينكه APC مي تواند در فضاي آدرس بند هدف اجرا گردد، NT از APC ها براي پردازش I/O بطور گسترده استفاده مي كند.
NT مي تواند روي ماشين هاي چند پردازنده اي متقارن اجرا گردد، بنابراين هسته بايد از تغيير همزمان ساختارهاي اشتراكي ممانعت به عمل آورد. هسته از قفل هاي گران كه در حافظه سراسري قرار دارد براي حالت تواماً مستثناي پردازنده ها استفاده مي كند. بعلت آنكه زماني كه يك بند كوشش مي كند يك قفل پيچ بدست آورد تمام فعاليت هاي پردازنده متوقف مي شود، يك بند كه يك قفل پيچ را نگهداري مي كند تخليه نمي شود تا بتواند كارش را تمام كند و قفل پيچ را رها كند.
وقفه قطع برق كه دومين اولويت بالا را دارد، هنگامي كه قطع برق اتفاق مي افتد سيستم عامل را مطلع مي سازد. شيء خبر دهنده برق روشي را براي يك گرداننده دستگاه اتخاذ مي كند تا يك برنامه را براي اجرا هنگام بازگشت برق ثبت كند و اطمينان حاصل كند كه دستگاه ها به حالت مناسب تنظيم گردند. براي سيستم هاي داراي پشتيبان باطري يك شيء وضعيت برق براي مشخص كردن اينكه آيا قطع برق شده است يا نه قبل از شروع يك عمل بحراني آزمايش
مي كند، اگر گرداننده مشخص كند كه برق قطع نشده است، IRQL پردازنده اش را به حد قطع برق بالا مي برد، عمل را انجام مي دهد و IRQL را به حالت قبل بر مي گرداند. اين ترتيب عمليات وقفه قطع برق را تا بعد از اتمام عمل بحراني بلوكه مي كند.
Executive
مديريت اجرايي
مديريت اجرايي NT يك سري سرويس هائي ارائه مي دهد كه همه زير سيستم هاي محيطي مي توانند از آن ها استفاده كنند. اين سرويس ها در گروه هاي زير هستند: مدير شيء، مدير حافظه مجازي، مدير پردازش، امكانات فراخواني سيستم محلي، مدير I/O و سرپرستي امني.
مدير حافظه مجازي Virtual Memory Manager
قسمت حافظه مجازي مديريت اجراي NT مديريت حافظه مجازي است VM طراحي مديريت VM فرض مي كند كه سخت افزار تحت پوشش از نگاشت حافظه مجازي به فيزيكي حمايت مي كند، يك مكانيزيم صفحه بندي در سيستم هاي چند پردازنده اي، حافظه نهاني مرتبط را حمايت مي كند و اجازه مي دهد وروديهاي جدول هاي متفاوت را در يك صفحه نگاشت كند. مديريت VM در NT طرح مديريت بهره مندي صفحه با اندازه صفحه 4KB به كار مي برد. صفحات داده كه به يك پردازش تخصيص داده شده اند و در حافظه نيستند در فايل صفحه بندي روي ديسك ذخيره شده اند.
مدير VM از آدرس هاي 32 بيتي استفاده مي كند، بنابراين هر پردازش داراي 4GB فضاي آدرس مجازي مي باشد. 2GB بالائي براي تمام پردازش ها يكسان است و بوسيله NT در وضعيت ممتاز استفاده مي شود. 2GB پائيني براي هر پردازش مجزا است و قابل دسترسي توسط بندهاي وضعيت ممتاز و كاربر مي باشد.
مدير VM در NT يك پروسه دو مرحله اي براي تخصيص حافظه استفاده مي كند. در مرحله اول يك فضاي آدرس رزرو مي كند و در مرحله دوم تخصيص را توسط مشخص كردن فضا در فايل صفحه NT به اجرا در مي آورد. NT قادر است فضاي فايل صفحه را با محدود كردن حافظه محدود كند. يك پردازش مي تواند حافظه اي را كه ديگر قابل استفاده نيست از دور خ
ارج كند تا فرجه صفحه بندي پردازش آزاد باشد. به علت آنكه حافظه توسط اشياء بيان مي شود، هنگامي كه يك پردازش (پدر) دومين پردازش (فرزند) را ايجاد مي كند، پدر مي تواند توانائي دستيابي به حافظه مجازي فرزند را حفظ كند. چنين است كه زير سيستم هاي محيطي مي توانند حافظه مراجعين خود را اداره كنند. براي كارايي، مديريت VM به يك پردازش ممتاز اجازه مي دهد كه صفحات به فايل صفحه مبادله نمي شوند.
دو پردازش با به دست آوردن دستگيره به شيء حافظه مي توانند حاف
ظه را مشترك شوند، ليكن اين روش مي تواند غير كارا باشد، زيرا لازم است تمام حافظه آن شيء روي فايل صفحه بندي فضا دهي شود قبل از آنكه هر كدام از پردازش ها بتوانند آن شيء را دستيابي كند. NT يك گزينه بنام شيء قسمت كه نمايانگر قسمتي از حافظه است دارا مي باشد. پس از بدست آوردن يك دستگيره به شي قسمت، يك پردازش مي تواند فقط قسمت مورد نياز حافظه را نگاشت كند. اين قسمت نماد ناميده مي شود. مكانيزم نماد همچنين پردازش را قادر مي سازد كه يك شيء را كه بزرگتر از فرجه فايل صفحه پرداز مي باشد دستيابي كند. سيستم با استفاده از نماد مي تواند در فضاي آدرس شيء بصورت قسمت به قسمت سير كند.
پردازش مي تواند به طرق مختلف استفاده از حافظه مشترك را كنترل كند. اندازه ماكزيمم يك قسمت مي تواند حد گذاري شود. قسمت ميتواند هم روي فايل صفحه بندي پشتيباني شود و هم روي فايل معمولي به نام فايل نگاشت حافظه. يك قسمت مي تواند مبنا باشد و بدين معني است كه قسمت براي تمام پردازش هائي كه آنرا دستيابي مي كنند در يك آدرس مجازي است. حفاظت صفحات حافظه در قسمت مي تواند به فقط خواندني، خواندني/نوشتني، فقط اجرا شدني، صفحات حفاظت شده، كپي هنگام نوشتن علامت گذاري شوند. چنانچه به يك صفحه حفاظت شده مراجعه شود حالت استثناء اتفاق مي افتد، حالت استثناء مي تواند مثلاً براي كنترل يك برنامه داراي اشكال كه خارج از محدوده يك آرايه عمل مي كند مورد استفاده قرار گيرد. مكانيزم كپي هنگام نوشتن به خارج از محدوده يك آرايه عمل مي كند مورد استفاده قرار گيرد. مكانيزم كپي هنگام نوشتن به مديريت VM فقط يك كپي مشترك در حافظه فيزيكي قرار مي دهد، اما مديريت VM خاصيت كپي هنگام نوشتن را براي آن قسمت حافظه به فعال مي كند. اگر يكي از پردازش ها كوشش در تغيير صفحه اي با خاصيت كپي هنگام نوشتن كند، مديريت VM اول يك كپي خصوصي براي استفاده آن پردازش درست مي كند.
NT در ترجمه آدرس مجازي چندين ساختمان داده استفاده مي كنند. هر پردازش يك فهرست صفحه اي كه شامل 1024 حفره ها بايتي به نام ورودي فهرست صفحه ا
ست دارا مي باشد. معمولاً فهرست صفحه خصوصي است، ليكن چنانچه شرايط مورد نياز را داشته باشد مي تواند مشترك باشد. هر ورودي فهرست صفحه به يك قاب صفحه 4 كيلو بايتي در حافظه فيزيكي نشانه مي رود. مجموع تمام جدول هاي صفحه براي هر پردازش 4 MB مي باشد، بنابراين بر حسب نياز مديريت VM اين جدول ها را روي ديسك مبادله مي كند. به شكل 23.3
براي اين ساختار توجه كنيد.
يك عدد صحيح 10 بيتي از 1023 را نشان مي دهد. بنابراين يك عدد صحيح 10 بيتي مي تواند هر ورودي فهرست صفحه را و يا جدول صفحه را انتخاب كند. اين خاصيت هنگامي كه يك نشانه روي حافظه مجازي به يك آدرس حافظه فيزيكي تبديل مي شود مورد استفاده قرار مي گيرد. همانطوري كه در شكل 23.4 نشان داده شده است يك آدرس مجازي 32 بيتي به 3 عدد تقسيم مي شود. اولين 10 بيت آدرس مجازي به عنوان ايندكس براي فهرست صفحه استفاده مي شود. اين آدرس يك ورودي فهرست صفحه را انتخاب مي كند كه به جدول صفحه نشانه مي رود. 10 بيت بعدي آدرس مجازي براي انتخاب PTE از آن جدول استفاده مي شود. PTE به يك قاب صفحه در حافظه فيزيكي اشاره مي كند. 12 بيت باقي مانده به بابت مشخصي در آن صفحه اشاره مي كند. يك نشانه رو به بايت مشخص در حافظه فيزيكي از كنار هم قرار گرفتن 20 بيت از محتواي محل PTE با 12 بيت سمت راست آدرس مجازي به دست مي آيد. بنابراين از 32 بيت PTE 12 بيت باقي مانده، اين بيت ها براي مشخصات صفحه به كار مي رود. 5 بيت اول حفاظت صفحه را به عنوان صفحه فقط خواندني يا خواندني نوشتني مشخص مي كند. 4 بيت بعدي مشخص كننده آن است كه كدام فايل صفحه حافظه را پشتيباني مي كند. 3 بيت آخر وضعيت صفحه را در حافظه مشخص مي كند. براي اطلاعات كلي بيشتر در طرح هاي صفحه بندي به قسمت 8.5 مراجعه كنيد.
يك صفحه مي تواند داراي يكي از حالات شش گانه: معتبر، صفر شده، آزاد، گوش بزنك، تغيير يافته و بد باشد. يك صفحه معتبر براي يك پردازش در حال استفاده مي باشد. يك صفحه آزاد صفحه اي است كه در جدول صفحه به آن مراجعه نشده است. يك صفحه صفر شده صفحه اي است
نمودار ص 471
كه صفر شده است و آماده براي استفاده فوري است. صفحه گوش به زنگ از گروه صفحات در حال كار يك پردازش خارج شده است. يك صفحه تغيير يافته صفحه اي است كه روي آن نوشته شده است ليكن هنوز روي ديسك ريخته نشده است. آخرين نوع صفحه، صفحه بد است، حالت غير معمول است زيرا يك اشكال سخت افزاري مشاهده شده است.
ساختار واقعي PTE در شكل 23.5 نشان داده شده است. PTE 5 بيت براي حفاظت
، 20 بيت براي آدرس قاب صفحه، 4 بيت براي انتخاب فايل صفحه بندي و 3 بيت براي شرح حالات صفحه دارد. اگر صفحه در حافظه نباشد بيت آدرس صفحه تفاوت مكان روي فايل صفحه بندي را نشان مي دهد. به علت آن كه كدهاي اجرائي و فايل هاي نگاشت شده در حافظه يك كپي روي ديسك دارند. آن ها در فايل صفحه بندي نياز به فضا ندارند. اگر يكي از اين صفحات در حافظه نباشد، ساختمان PTE به صورت زير است. با ارزش ترين بيت براي حفاظت صفحه بك
ار مي رود و 28 بيت بعدي براي ايندكس به ساختمان داده سيستم كه نشان دهنده يك فايل و تفاوت مكان در فايل براي صفحه مي باشد، 3 بيت پائيني حالت صفحه را مشخص مي نمايد.
شكل 23.5 ورودي جدول صفحه استاندارد
اگر هر پردازش داراي جدول صفحه خود باشد، اشتراك صفحات بين پردازش ها سخت خواهد بود، زيرا هر پردازش PTE مخصوص خود را براي قاب صفحه دارد. هنگامي كه يك صفحه مشترك در حافظه فيزيكي داراي اشكال مي شود آدرس فيزيكي بايد در PTE ها بايد علامت گذاري شوند. براي پرهيز از اين كار NT يك روش غير مستقيم دارد. براي هر صفحه مشترك، پردازش يك PTE دارد كه به يك ورودي جدول و صفحه ماكت اشاره مي كند و بجاي قاب صفحه PTE ماكت اطلاعات آدرس قاب صفحه و بيت هاي حفاظت و حالت را داراست. بنابراين مديريت VM بجاي آنكه تمام پردازش هائي كه اين صفحه را مشترك هستند فقط بايد PTE ماكت را بروز برساند.
مديريت VM از طريق نگهداري تمام صفحات فيزيكي در بانك اطلاعاتي قاب صفحه آن ها را كنترل مي كند. براي هر قاب صفحه يك ورودي در آن مي بادش. ورودي به PTE كه به قاب صفحه نشانه مي رود اشاره مي كند تا مديريت VM بتواند وضعيت قاب را نگه دارد. قاب هاي صفحه به يكديگر پيوند داده شدهاند. (مثلاً) زنجيره قابها صفر شده يا قاب هاي آزاد را تشكيل دهند.
هنگامي كه نقص صفحه رخ مي دهد مديريت VM صفحه غير موجود را در اولين صفحه آزاد قرار مي دهد اما به آن اكتفا نمي كند. تحقيقات نشان مي دهد كه رجوع كردن يك بند به حافظه تمايل به داشتن خاصيت محلي است. وقتي صفحه اي مورد استفاده قرار مي گيرد، به احتمال زياد به صفحات مجاور آن در آينده نزديك رجوع خواهد شد. (راجع به يك تكرار روي يك آرايه و يا واكنش ترتيبي دستورات يك بند فكر كنيد.) به علت محلي بودن هنگامي كه مديريت VM روي يك صفحه نقص مي كند، همچنين روي چند صفحه مجاور نقص مي ند. اين نقص صفحات مجاور باعث كم شدن مجموع نقص صفحه مي شود. براي اطلاعات بيشتر روي محلي بودن به بخش 9.7.1 رجوع شود.
اگر هيچ صفحة آزادي در ليست صفحات آزاد موجود نباشد. NT بر نقص صفحه پردازش هائي كه در حد مينيمم اندازه دسته كاري هستند نظارت مي كنند و مطابق آن دسته كاري را تنظيم م
ي كند. در حالت مخصوصي كه يك پردازش تحت NT شروع مي شود، يك دسته كاري 30 صفحه اي به آن تخصيص مي دهد. NT متناوباً اين تعداد را با دزديدن يك صفحه معتبر از پردازش آزمايش مي كند. اگر پردازش بدون ايجاد نقص صفحه به كار ادامه دهد، از دسته كاري پردازش يكي كم مي شود و صفحه به ليست صفحات آزاد اضافه مي شود.
مدير پردازش Process Manager
مديريت پردازش سرويس هائي براي ايجاد – حذف و استفاده بندها و پردازش ها ارائه مي دهد. هيچگونه اطلاعي در مورد رابطه پدر و فرزند يا سلسله مراتب پردازش ها ندارد. اين ريزه كاري ها به عهده زير سيستم هاي محيطي كه صاحب پردازش ها هستند گذاشته شده است.
يك مثال ايجاد پردازش در محيط WIN32 بصورت زير است. هنگامي كه يك كاربرد WIN 32 فراخواني ايجاد پردازش را انجام مي دهد، يك پيغام به زير سيستم WIN 32 فرستاده مي شود كه مديريت پردازش را براي ايجاد يك پردازش فرا مي خواند. مديريت پردازش اقدام به فراخواني مديريت شي مي كند تا يك شي پردازش ايجاد كند و سپس دستگيره شي را به WIN 32 بر مي گرداند. WIN 32 مديريت پردازش را دوباره فرا مي خواند تا يك بند براي پردازش ايجاد كند، و نهايتاً WIN 32 دستگيره را به پردازش و بند جديد بر مي گرداند.
ابزار فراخواني محلي Local Procedure Call Facility
ابزار فراخواني محلي (LPC) براي انتقال تقاضاها و نتايج بين متقاضي و سرويس دهنده در يك ماشين تك پردازنده اي استفاده مي شود. مخصوصاً از آن براي درخواست سرويس از زير سيستم هاي مختلف NT استفاده مي شود و از بيشتر جهات مشابه مكانيزم فراخواني راه دور است كه توسط بسياري سيستم هاي عامل كه براي پردازش هاي توزيع شده در شبكه ها بكار برده مي شود مي باشد، اما LPC براي استفاده در يك سيستم NT بهينه شده است.
LPC مكانيزم ارسال پيغام است. پردازش سرويس دهنده يك شي اتصال درگاه قابل رؤيت سراسري انتشار مي دهد. هنگامي كه يك مشتري از زير سيستم سرويس مي خواهد، يك دستگيره به شي اتصال درگاه باز مي كند و سپس تقاضاي اتصال به آن درگاه مي فرستد.
سرويس دهنده يك كانال ايجاد مي كند و يك دستگيره براي مشتري مي فرستد. كانال شامل يك جفت درگاه خصوصي ارتباط مي باشد: يكي براي پيغام هاي مشتري به سرويس دهنده و ديگري براي پيغام هاي سرويس دهنده به مشتري. كانال هاي ارتباط مكانيزم بازخواني را حمايت مي كند بطوريكه سرويس دهنده و مشتري مي توانند تقاضاها را قبول كنند در حالي كه انتظار جواب را دارند.
هنگامي كه يك كانال LPC ايجاد مي شود يكي از سه نوع تكنيك فرستادن پيغام بايد مشخص گردد. نوع اول براي پيغام هاي كوتاه (تا 256 بايت) مناسب مي باشد. در اين حالت صف پيغام درگاه به عنوان حافظه مياني مورد استفاده قار مي گيرد. و پيغام ها از يك پردازش به ديگري كپي مي شود. نوع دوم براي پيغام هاي بزرگ است در اين حالت يك شيء حافظه مشترك براي كانال ايجاد مي شود. پيغام هائي كه از طريق صف پيام درگاه فرستاده مي شود داراي يك نش
انگر و اندازه مي باشد كه به شي قسمت رجوع مي كند. بدين ترتيب از كپي كردن پيغام هاي طولاني خودداري مي شود. فرستنده داده ها را در قسمت مشترك مي گذارد و گيرنده مي تواند مستقيماً آن ها را مشاهده كند.
روش سوم عبور پيغام LPC به نام LPC سريع، توسط قسمت نمايش گرافيكي زير سيستم WIN 32 استفاده شده است. هنگامي كه مشتري تقاضاي اتصال براي استفاده LPC سريع مي كند تا LPC سريع استفاده كند، سرويس دهنده سه عدد شيء بنا مي كند، يك بند مخصوص سرويس دهنده براي تقاضاها، يك شيء قسمت 64KB و يك شيء رويداد جفت. شيء رويداد جفت شيء هماهنگي زماني است كه توسط زير سيستم WIN 32 براي اطلاع زماني كه بند مشتري يك پيغام را به سرويس دهنده WIN 32 كپي كرده است و بالعكس استفاده مي وشد. پيغام هاي LPC به شيء قسمت فرستاده مي شوند و هماهنگي توسط شيء رويداد جفت انجام مي گردد. شيء قسمت كپي كردن پيغام را حذف مي كند. زيرا آن يك ناحيه مشترك حافظه است. استفاده از شيء رويداد جفت براي هماهنگي باعث حذف بار سر فرستادن پيغام ها با نشانه رو و طول مي گردد. بند مخصوص سرويس دهنده باعث حذف بار سر اينكه كدام مشتري سرويس دهنده را مي طلبد مي شود زيرا براي هر بند مشتري يك بند سرويس دهنده وجود دارد. از طرفي هسته به بندهاي مخصوص سرويس دهنده اولويت جهت بالا بردن راندمان قائل است. زيان اين روش آن است كه LPC سريع از دو روش ديگر منابع مصرف مي كند و بدين جهت زير سيستم WIN 32 از LPC سريع فقط براي واسطه مديريت پنجره و دستگاه گرافيك استفاده مي كند.
مدير ورودي/خروجي I/O Manager
مديريت ورودي/خروجي مسئول زير سيستم فايل، مديريت كش، درايورهاي دستگاه و درايورهاي شبكه مي باشد. زير سيستم قابل نصب فايل ها را كنترل مي كند و براي تقاضاهاي I/O مديريت بافر را به عهده دارد. با مديريت VM براي فايل هاي نگاشته شده در حافظه همكاري كرده و مديريت كش NT را كه سيستم كش را براي كل سيستم I/O انجام مي دهد كنترل مي كند. مديريت I/O هم عمليات هماهنگ و هم عمليات غير هماهنگ را حمايت مي كند، براي درايورها فرجه زماني قرار مي دهد و مكانيزمي براي فراخواني از يك درايور، درايور ديگري را دارد.
مدير I/O تقاضاي رسيده را تبديل به يك فراخواني استاندارد به نام بسته تقاضاي (IRP) I/O مي كند و سپس IRP را به درايور مناسب براي پردازش مي فرستد. هنگامي كه عمليات خاتمه مي يابد، مديريت I/O از درايوري كه اخيراً يك عمليات انجام داده است IRP دريافت مي كند و تقاضا را كامل مي كند.
در بسياري سيستم عامل ها ذخيره پنهاني توسط سيستم فايل انجام مي گيرد. NT يك سيستم ذخيره مركزي ارائه مي دهد. مديريت كش سرويس هاي كش را براي تمام اجزاء تحت كنترل مديريت I/O ارائه مي دهد، و بصورت تنگاتنگ با مديريت VM كار مي كند. اندازه حافظه ك
ش به صورت پويا در حال تغيير است و بستگي به مقدار حافظه آزاد در سيستم دارد. خاطر نشان مي كنيم كه 2 GB حافظه بالاي آدرس پردازش فضاي سيستم است و براي همه پردازش ها يكسان است. مديريت VM نصف اين فضا را به كش سيستم اختصاص مي دهد. مديريت كش فايل ها را در اين فضاي آدرس نگاشت مي كند و از امكانات مديريت VM براي I/O فايل استفاده مي كند.
حافظه كش به بلاك هاي 256 KB تقسيم شده است. هر بلاك كش مي تواند يك ديدگاه (ناحيه نگاشت حافظه) از يك فايل را نگه دارد. هر بلاك كش توسط بلاك كنترل آدرس مجازي VACB كه آدرس مجازي و تفاوت مكان فايل براي آن ديدگاه و همچنين تعداد پردازش هائي كه اين ديدگاه را استفاده مي كنند را نگهداري مي كند تعريف مي شود. VACB در يك آرايه كه توسط مديريت كش نگهداري مي شود قرار دارد و يك IRP به مديريت كش مي فرستد.
براي هر فايل باز مديريت كش يك آرايه ايندكس جداگانه به آرايه VACB دارد. اين آرايه يك عضو براي هر 256 KB محتويات فايل دارد، بنابراين مثلاً براي 2MB فايل يك آرايه ايندكس 8 VACB عضوي دارد. اگر قسمتي از فايل در VACB باشد يك عضو در آرايه ايندكس VACB به آن نشانه مي رود و در غير اين صورت مقدار تهي است.
هنگامي كه عمل خواندن سطح كاربر توسط مديريت I /O دريافت مي شود، يك IRP به مديريت كش مي فرستد (مگر آنكه تقاضا صريحاً خواندن بدون كش تقاضا كند). مديريت كش عضو آرايه ايندكس VACB فايل كه متعلق به تفاوت مكان بايت مي باشد را محاسبه مي كند. ورودي يا به ديدگاه در كش اشاره مي كند و يا صفر است. اگر صفر باشد، مديريت كش يك بلاك كش تخصيص مي دهد (و ورودي وابسته در آرايه VACB) و ديدگاه را در آن بلاك كش نگاشت مي كند. مديري
ت كش سپس كوشش مي كند اطلاعات را از فايل به بافر فراخوان كپي كند. اگر كپي مؤفق بود، عمليات تكميل شده است. اگر كپي نامؤفق بود، بعلت نقص صفحه است، كه باعث خواهد شد مديريت VM يك خواندن بدون كش به مديريت I/O از درايور مناسب تقاضا مي كند كه اطلاعات را خوانده و داده ها را به مديريت VM برگرداند كه داده ها را در كش بارگذاري كند. داده ها كه اكنون در كش مي باشند به بافر خواندن كپي مي شوند و تقاضاي I/O تكميل مي شود.
شكل 23.6 چگونگي پيشرفت اين عمليات را نشان مي دهد.