سیستم عامل چیست؟
سیستم عامل قسمت مهم هر سیستم کامپیوتری است یک سیستم کامپیوتری بصورت کلان می تواند به چهار جزء تقسیم شود: سخت افزار، سیستم عامل، برنامه های کاربردی و کاربرها.
سخت افزار که شامل واحد پردازش مرکزی (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 با استفاده از خاصیت لایه ای تکمیل شده است.
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 ها بطور محدودی ساده هستند.
آن ها نمی توانند حافظه یک بند را تغییر دهند.
نمی توانند اشیاء ایجاد کنند و یا روی آن ها منتظر بمانند و آن ها را بخواهند و نمی توانند سرویس های سیستم را صدا کنند یا نقص صفحه ایجاد کنند.
شکل 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 اول یک کپی خصوصی برای استفاده آن پردازش درست می کند.