مقدمه
ويندوز NT نسبت به سيستمهاي عامل OS/2 و UNIX و ويندوز ۱۶ بيتي داراي برتري‌هايي است كه اين خصوصيات و امكاناتي كه ويندوز NT دارد، با يك سيستم عامل يا بيشتر نيز قابل دسترسي است. ولي هيچ‌كدام از سيتم عاملها قابليتهاي ويندوز NT را ندارد. در اين قسمت مهمترين خصوصيات NT را معرفي مي‌كنيم و يكسري خصوصيات كليدي NT را شرح مي‌دهيم.

۱- آدرس‌دهي ۳۲ بيتي
در انيجا لازم است توضيحي در مورد اينكه آدرس چيست و نحوة آدرس‌دهي كه ميكروسافت DOS چگونه است بدهيم. آدرس كلاً محل يك بايت از اطلاعات در حافظه كامپيوتر يا Mass storage مي‌گويند. آدرس بر دو نوع است. آدرس مي‌تواند فيزيكي و يا مي‌تواند مجازي باشد.
۱-۱- آدرس‌دهي فيزيكي: به بايت دادة معين در محل فيزيكي معيني از حافظه يا ديسك اشاره مي‌كنند.
۲-۱- آدرس‌دهي مجازي: به آدرس منطقي (نرم‌افزاري) اشاره مي‌كند كه سيستم عامل به آدرس فيزيكي معيني اشاره مي‌كند.

مطلب قابل توجه در انيجا اين است كه ويندوزNT از بين دو آدرس‌دهي، از آدرس‌دهي مجازي استفاده مي‌كند كه براي هر درخواست اصولاً چهار گيگابايت اختصاص داده مي‌شود كه البته ۲ گيگابايت آن براي سيستم عامل منظور مي‌شود.
به دنبال پيشرفت مايكروسافت DOS به دليل محدوديتهاي حافظه، ميكروپروسسورهايي از قبيل ۸۰۸۶ و ۸۰۸۸ شانزده بيتي كه يك فضاي آدرس‌دهي بيست بيتي را عرضه مي‌داشتند طراحي كردند. يعني در واقع اين ميكروپروسسورهاي مي‌توانستند يك مگابايت از حافظه را به طور فيزيكي آدرس‌دهي كنند. با توجه به اين كه بيست بيت به خوبي در كلمه (word) شانزده بيتي جاي نمي‌گرفت مهندسين INTEL براي دستيابي به هر آدرس، طرحي به نام تقسيم حافظه ارائه دادند.

در اين نوع آدرس‌دهي آمدند يك مگابايت را به ۱۶ قسمت تقسيم كردند كه هر قسمت ۶۴ كيلوبايتي با ghunk بود. اين كار بدين دليل بود كه برنامه‌نويسان اصولاً در پردازنده‌هاي ۸ بيتي قديمي مانند INTEL 8085 و ZILOG Z80 با آدرس‌دهي ۶۴ kdyte آشنايي داشتند.

براي اينكه برنام‌نويسان بتوانند به هر آدرسي در داخل فضاي آدرس يك مگابايتي دست پيدا كنند آدرس حافظه فيزيكي محاسبه شد. (قسمت در ۱۶ ضرب كرده و سپس يك offset به آن اضافه مي‌شود. نتيجه به بايت مورد نظر اشاره مي‌كند.) بقية پردازنده‌هاي ۶ بيت مانند ۶۸۰۰۰ Motorola از آدرس‌دهي خطي استفاده مي‌كردند كه هربيت از حافظه مستقيماً و بدون استفاده از offset & segment آدرس‌دهي مي‌كرد. و علاوه بر تسهيلاتي مانند MS-DOS 5.0 و windows 3.1، طراحان زيادي طرحهاي خود را براي آدرس‌دهي و بيش از ۶۴۰ كيلوبايت حافظه پيشنهاد كردند. مي‌توان از معروفترين نمونه‌ها QEMM QUALAS’ ۳۸۶ MAو QUARTERDECK’S را نام برد.

كل اين و طرحها حافظة مورد استفاده را بيش از حد ۶۴۰ كيلوبايتي بسط داند، ولي مجبور كردن آنها به كار با يك موقعيت خاص PC و دنبالة درخواستها و تسهيلات نرم‌افزاري معمولاً يك هدر كردن زمان، پردازش خنثي‌كننده است. هميشه اين‌طور به نظر مي‌رسد كه حداقل يك درخواست مهم با يكي از تسهيلات با مديريت حافظة شما سازگار نيست.
اولين پردازنده كه فضاي آدرس‌دهي خطي را به كار برد و نيز با DOS سازگاري داشت INTEL 386 بودكه مي‌بايست تقسيم‌بندي حافظه در كنار آن احتياج به مديريت شخص ثالث را حذف كرد كه در واقع فضاي آدرس‌دهي ۳۲ بيتي INTEL 386 با برنامه‌ها نوشته شده براي پردازنده‌هاي INTEL قبلي سازگاري نداشت.

اين برنامه‌هاي ناسازگار، DOS و تمام برنامه‌هاي اجرا شده تحت DOS بودند. برايايجاد سازگاري با DOS و درخواستهاي آن INTEL يك طريقة ديگر آدرس‌دهي را طرح كرد بنام Real Mode .
اين نوع آدرس‌دهي با ساير نرم‌افزارهاي قبل سازگاري داشت ولي متذسفانه در هنگام كار با اين نوع آدرس‌دهي يعني Real moed ، ۳۸۶ و (۴۸۶) بيش از يك ۸۰۸۶ خيلي سريع عمل نمي‌كند. DOS كه در مقابل محدوديتهاي ۸۰۸۶ و ۸۰۸۸ نوشته شده بود، هنوز بسيار شبيه نسخه سريع حد خود در سال ۱۹۸۱ با تمام محدوديتهاي آدرس‌دهي عمل مي‌كنند.
دو طريق آدرس‌دهي حافظه:
Real Mode : يك طريقة آدرس‌دهي حافظه است كه از آدرس‌دهي نوع تقسيم‌بندي حافظه يعني همان segment & offset استفاده مي‌كنند. ماننده پردازندة INTEL 8086.
‍‍‍‍‍Protected Mode : يك طريقة ديگر آدرس‌دهي حافظه كه براي دستيابي به بايت حافظه به جاي segment & offset از آدرس‌دهي خطي استفاده مي‌كند. اين نوع آدرس‌دهي مشخصات حفاظت سخت‌افزاري كه windows و windows NT آن را به كار گرفته‌اند، فعال مي‌كند.

windows NT براي تهيه آدرس‌دهي ۳۲ بيتي واقعي Trune 32-bit addressing از آدرس‌دهي خطي ۳۸۶ و ۱۸۶ و پنتوم (INTELS586) و همچنين پردازنده pisk همچنون Mips و DigtalAlpha استفاده مي كند. قابل ذكر است كه ديگر NT از سازگار بودن با DOS و windos 16بيتي صرفنظر مي كند و داراي طرحي است بنام (viriul dos machine) كه در اين صورت اين امكان را به ويندوز NT مي دهد كه بتواند در خواستهاي Dos و windows16 بيتي را اجرا كند (بعدا در مورد VDM صحبت خواهيم كرد ) .
مزيت هاي آدرس دهي ۳۲ بيتي :

۱-توسعه نرم افزار با حذف قسمت بندي حافظ آسانتر و سريع تر مي شود.
۲- برنامه نويسان ديگر لآزم نيست حافظه مورد در خواستهايشان آشنا باشد .
۳-كارسيستم باحذف سربارپردازشي كه موردلزوم مديريت حافظه است بهبود مي يابد.يعني در هيچ گونه نيازي به حافظه ثالثي ندارد.رهايي از مديريت حافظه سازگاريهاي NT واقع ويندوز مختلف سخت افزار ونرم افزار را نيزحذفمي كنديعني وضعيت استقرارنرم افزار مي تواند ساده و ۱۶ بيتي باشد WindowsياDos ابتدايي تر از
۴- ميزان برنامه قابل دسترسي و اندازه داده در آدرس دهي ۳۲ بيتي زياد مي شود.

ويندوز NT از تركيب برنامه و سيستم با اندازه چهار گيگا با يت كه صدها برابر بزرگتر از حدودقابل اجرا روي بر نامه هاي DOS و ويندوز ۱۶ بيتي تشكيل شده است . فايلهاي بزرگ كه توسط ويندوز NT قابل پردازش مي باشد غير ممكن است كه توسط DOS وياwindos16 بيتي پردازش شوددر خواست كننده هاي (در خواستهاي ) پيچيده كه فايلهاي بزرگ را پردازش ميكنند فقط با ويندوز NT عمل مي كندو آن هم فقط به دليل آدرس دهي ۳۲ بيتي است . در خواستهاي پيچيده همچون رزرواسيون، مبادله دارايي وسيستمهاي پردازش طلبهاي بيمه است
از ديگر خصوصيات كليدي ويندوز NT ،حافظه مجازي و يا VM است كه در زير توضيح مي دهيم .
۲-VIRTUAL MEMORY (حافظه مجازي)
هر در خواست در ويندوز NT ميتواند به ۴ گيگا بايت حافظه دست پيدا كند (به خاطر فضاي ۳۲ بيتي )
كه البته از مقدار تصور شده براي هر در خواست بيشتر است . دو نوع حافظه اصلي كامپيوتر به شرح زير است :
RAM :RAM يا حافظه تصادفي (حافظه دسترسي تصادفي ) از نوع ديگر سريعتر است . مزيتهاي آن به شرح زير است :
۱-PC براي اينكه بتوانند يك بايت داده را در ۷۰ بيليونيم ثانيه دريافت و بعد ذخيره كننداز RAM استفاده مي كنند

۲-برنامه ها به طور مستقيم مي توانند به آدرس حافظه بروند و بايت مورد نظر خود را دريافت كنند درواقع بجاي اينكه به بلاك مورد نظر در روي ديسك مراجعه كند و با يتها ي بلاك را بايت به بايت بخواند وبه بايت مورد نظر برسد مي تواند به طور مستقيم به آدرس حافظه بروند . ترجيحا استفاده از RAM را پيشنهاد مي كنند.
عيوب استفاده ازRAM :
1 -در هنگام قطع برق تمام اطلاعات ذخيره شده در RAMاز بين مي رود.اين نوع حافظه را VOLATL STORAGE ناميده ميشود . در اين جا قابل ذكر است كه در بسياري از كامپيوتر هايي كه قابل حمل هستند
هنگامي كه كامپيوتر خاموش است مقداري برق به حافظه RAM كامپيوترمي رسدكه باعث مي شود داده هاي ذخيره شده در آن از بين نرود و در هنگام تمام شدن باطري آن اطلاعات در آن با تمام شدن باطري از بين مي رود.

۲-عيب ديگر RAM ها در قيمت آن مشاهده مي شودوآن نيزگران بودن قيمت RAMها است در واقع هر مگا بايت از RAM ها براي pc ها حدود ۳۵ دلار فروخته مي شود . از روي اين قيمت مي تواند تعداد RAMهايي كه در يك pc مي توان نصب كردرا حدس زد .اصولا به pc هاي kigh-end 8 مگا بايت RAM وصل مي شود و اين مقدار را خيلي ها مي توانند تا ۲۰ مگابايت افزايش دهند و بعضي نيز اين مقدار را به ۶۴ مگابايت ميرسانند .براي اين امر به RAM با چگالي بالا تري نياز است كه قيمت آن به ازاي هر مگابايت افزايش مي يابد ولي فضاي فيزيكي كمتري را اشغال ميكند نوع ديگر حافظه اصلي در كامپيوتر hard disk است كه در زير شرح داده شده است :(نوع ديگر حافظه Mass storage ها هستند كه روي hard disk سواري مي شوند.

Mass STORAGE :HARD DISK
همان طور كه در بالا گرفته شده نوع ديگر حافظه اصلي Mass storage ها هستند كه بر رويhard disk سوار مي شوندhard disk ها به مراتب كند تر از RAM ها هستند .
از نظر قابليت ذخيره سازي hard disk ها از ۴۰ مگا بايت تا حدود ۲ گيگا بايت قابليت ذخيره سازي دارند .
از نظر قيمت هم يك pc hard 200 مگابايتي تقريبا ۴۰۰ دلار ويا به عبارتي دو دلار به ازاي هر مگا بايت مي باشد كه در مقايسه با قيمت RAM كه در حدود قيمت يك مگا بايت RAM است . در هنگام قطع برق محتويات hard ها از بين نمي رود به اين گونه حافظه Nonvolatile storage مي شود .

استفاده از هر دو نوع حافظه براي pc ضروري به نظر مي رسد.از RAM براي برنامه هاي اجرايي و ذخيره.
دادههاي حساس هنگامي كه اجرا ضروريست استفاذه مي شود واز hard disk براي ذخيره طولاني اطلاعات در زماني كه قيمت به ازاي هر بايت مهم مي باشد، استفاده ميشود .
در اين جا يك سئوالي كه پيش مي آيد اين است كه اگر به بيش از RAM قابل ذسترسي نياز پيدا كرديم چه مي كنيم؟مثلآ فرض كنيد كه يك برنامهspreed sheet به دو مگا بايت وRAM ويك فايل spreed sheetكه به دو مگا بايت احتياج دارد داشته باشيم . اين سئوال پيش مي آيد كه آيا فقط به همين ۴ مگابايت نياز داريم ؟ خود سيستم عامل به مقداري زياد RAM احتاج دارد . پس ما ميزان لازم RAM براي سيستم عامل و پردازنش speed sheet به طور همزمان در دست نداريم .

در DOS براي فراخواني برنامه و داده اگر RAM به مقداركافي نداشتيم مجبوربوديم يك RAM اضافه ديگر خريداري مي كرديم وبه PC نصب مي كرديم. ولي در ويندوز NT ما راه چاره اي داريم وآن اين است كه امكان تبديل قسمتي از hard به فضاي RAM وجود دارد.به طوري كه در خواستهايي بزرگتر از آن هستند كه در حافظه RAM جاي بگيرند ، مي توانيم اجرا كنيم . اين خصوصيت ويندوزNT را viriual Memory نامگذاري كردند . بعدا به طرز كار VM تحت ويندوز NT وتوضيح وشرح آن خواهيم پرداخت .
در هنگام نصب ويندوز NT (براي اولين )كاربران و يا مديرسيستم موظف است كه برنامه راه اندازNT را چك كند تا به فضاي قابل دسترسي پذيرRAM وHARDدر سيستم عالملي پي ببرد.برپايه فضاي دسترسي پذير ديسك RAM يك swap file ايجاد ميكنند كه اندازه آن حداكثر مي تواند به اندازه RAM موجود در سيستم باشد . در هنگام نصب ويندوز NT كاربر ميتواند اندازهswap file را تغيير بدهد . رابطه swap file با حافظه مجازي از نظر اندازه مستقيم است . يعني هر چه اندازه swap file بزرگ باشد ، حافظه مجازي نيز بزرگ ميباشد. ولي قابل ذكر است كه بزرگي آن تا اندازه فضاي ذخيره سازي فايل ثابت، اذامه خواهد داشت .

اندازه نهايي swap file را جابجايي وظرفيت كل ديسك مشخص مي كند.در زير توضيحي در مورد swap fileو اين كه swap file چيست مي دهيم .

SWAP FILE
swap file قسمتي از حافظه سخت است كه توسط مديريت حافظه مجازي بكار مي رود كه كارش در واقع نگهداري موقت بخشي از محتويات RAM است تا اينكه به سيستم اين امكان داده شود كه برنامه هلآيي كه از نظر اندازه از RAM قابل دسترسي بزرگترند ،را بتواند اجرا كند.
دنباله بحث :بعد از نصب ويندوز NT و اجراي آن swap file به عنوان يك انباره موقت براي محتويات RAM بكار برده مي شود. در زير دو وظيفه مهم مدير حافظه مجازي را بررسي مي كنيم:
۱-مديريت داده ذخيره شده بر روي ديسك وانتقال آدرس داده هاي روي پايه ديسك به فضاي آدرس دهي ۳۲ بيتي ويندوز NT .در خواست ميتواند عملياتي را بر روي داده انجام دهد بدون اينكه توجه به اين داشته باشد كه داده از نظر فيزيكي دركجا قرارگرفته است.يعني ميتواند عملآياتي را برروي داده درفضاي حافظه مجازي انجام دهد

۲-در ويندوز NT هنگامي كه بخواهند از RAM بيشتر از آنچه كه در دسترس است استفاده كنند اين مديريت حافظه مجازي است كه قسمتي ازRAM رابه swap file منتقل مي كندتا اينكه فضايي براي داده هاي لازم باز كند و در زمان لازم دوباره بهRAM بازگردانده مي شود .براي جلوگيري از هدر رفتن زمان ،به جاي اينكه داده ها بايت به بايت از RAM به ذيسك ويا از ديسك به RAM منتقل شوند ،اين انتقال به اين صورت است كه داده هاي به صورت۴kilopages منتقل مي شوند نه بايت به بايت.برنامه درخواستي لزومي نداردكه چيزي در مورد پردازش swaping بداند swaping تكرار شونده روي پاسخ خرابي سيستم وهمچنين روي فعاليتهاي سنگين ديسك تاثير گذار است .

برنامه اي كه يك فايل راروي فضاي آدرس دهي مجازي ويندوزطNT مورد پردازش قرار مي دهد(روي هارد )از نظر سرعت خيلي كند تر از برنامه اي است كه از دادها در داخل RAM استفاده ميكند .يعني برنامه اولي از برنامه دومي كندتر اجرا مي شود .مديريت حافظه مجازي براي اين طرحي كه در فايلهاي داده اي خيلي بزرگتر و سيستمهاي چند برنامه اي از به وجود آمدنswaping ها خيلي ضروري جلو گيري كند ولي در واقع ميزان كار به مقدار RAM قابل دسترس بستگي دارد يعني هر چه مقدار RAM قابل دسترس بيشترباشد كار كلي بيشتراست ويندوز ۱۶ بيتي هم نيز از حافظه مجازي استفاده مي كند ولي در طرز كار آن در ويندوز NT پيچيده تر است .اندازه فضاي swap حافظه مجازي در ويندوز ۱۶ بيتي وابسته به مقدار RAMقابل دسترس است وتا تقريبا اندازه ۳۰ مگا بايت مجاز است .اين نكته قابل ذكر است كه اگر كارتصميم به حذف swap file ها با خاموش كردن حافظه مجازي بگيرد،و به اين ترتيب در خواستهاي بزرگتري را انجام دهد ،بهswap file اين نياز نيست .

اين حدود اندازه swap file در ويندوز ۱۶ بيتي برايtop disk desk ها (desk top pc ) ها مناسب ميباشد .اگر مقدار ram دسترس پذير شما در حدود ۳۲ مگا بايت يا بيشتر باشد ،كمترين مقدارswap فضاي يكdiskرا اشغال ميكنددرحالي كه۳۰مگابايت از فضايseap براي بسياري تزدز خواستهايRAMبسيار كم است .ولي ويندوز NT اين خصوصيت را دارد كه شما هر مقدار swap (زياد وكم )كه نيازدارد ،اختصاص دهيد . ولي اين موضوع هم هست كه حافظه مجازي نمي تواند جوابگوي تمام مشكلات با شد .اين امكان را مي دهد (حافظه مجازي )كه با مقداريRAM محدود برنامه هاي بزرگ را پردازش كنيم ولي بدون توجه به سرعت پردازش آن يعني ممكن است سرعت پردازش خيلي كم باشد .در هنگام كار با ويندوز NTهنگامي كه حافظه مجازي مشغول مبادلهdata بهhard ازRAM بهhard ويا بالعكس است.توجه داشته باشيدكه به محض پايين آمدن كارايي سيستم ،به RAM اضافه كنيم.البته ممكن است كه با اضافه كردن hard سريعتر به اصلاحاتي دست يابيم ولي مزاياي بالا بردن مقدار ديسك سريعتر قابل مقايسه با اضافه كردن RAM نمي باشد .از ديگر خصوصيات (خصوصيت سوم) در زير توضيح داده مي شود .

۳-PREEMPTIVE MULTITASKING
اين خصوصيت به معنا ي چند كاره بودن يعني قابليت چند كاره بودن كامپيوتر براي انجام يك سري عمليات در واحد زمان است.اين عمليات،اجراي برنامه ويا پردازش يك برنامه و يا به تمام رساندن يك كار ، مي تواند باشد .درNT برنامه وپردازش ها از اجرايي به نامthread تشكيل شده اند كه بعد در مورد آنها بحث مي شود .

THREAD
معمولا قسمتي از پردازش به عهده سيستم عامل است كه سيستم عامل آن را اجرا مي كند كه به آن قسمت thrad گفته مي شود . يك thred نمي تواند متعلق به چند پردازش باشد ولي يك پردازش مي تواند چند thread داشته باشد و مي توانند به وسيله طرحي چند thread را به طور همزمان اجرا كند.

حال مي خواهيم ببينيم مفهومmultiasking يعني چه و براي چه كاري است؟براي اينكه به اين مفهوم بيشتر آشنا بشوم قبل از هر توضيحي اشاره به مثالي مي كنيم .مي دانيم كه نوشتن يك document كارراحتي است.هنگامي كه داريم باDOS كارمي كنيم وبخواهيم ازنوشته پرينت تهيه كنيم قبل ازانجام هر كاري بايست فرمها،نوع قلم،كدهاي خاص را به كدها يي قابل فهم براي .چابگرتبديل كنيم سپس سيستم را اندازه فايل را كه مي داند چاپگر توانايي تحمل آن را دارد به چابگر مي فرستد. چاپگر و سيستم عامل انقدر به تبادل اطلاعات ادامه مي دهندكه تمام فايل به چاپگرفرستاده شود .در حين تبادل اطلاعات بين چابگر و سيستم عامل ،ديگر ما به عنوان يك كاربر هيچ كار ديگري نمي توانيم با كامپيوترانجام دهيم .وجود يك سيستم multitasking است كه در اينجا لازم ديده مي شود در واقعmultitasking اين اجازه را به كاربرمي دهدكه همزمان با ارسال اطلاعات به چابگر ،بتواند عمليات ديگري بر روي كامپيوتر انجام دهد

همانطور كه ميدانيم پردازنده در هر زمان فقط يك كار را انجام مي دهد ولي اين كارها سريع تغييروضعيت مي دهد كه به نظرمي آيد در هرزمان بيش ازيك كارانجام مي شود.مثل ديگري كه براي فهم بهتر multitasking مي شود زد ،در مورد فيلم است .اگر ما يك حلقه فيلم را جلوي نور بگيريم مي بينم از تعدادي تصوير و عكس ثابت تشكيل شده است ولي آن را با يك پروژكتور به صورت ۲۴ تصوير در ثانيه نمايش دهند ما همان تصويرهاي ثابت رابه صورت يك فيلم متحرك مي بينيم و براي ما غير باور است كه فكر كنيم آن همان عكسهاي ثابت است كه به صورت فيلم درآمده است .يك multitasking انعطاف پذير خوب همانند اين فيلم دنباله دار ومتحرك به نظر مي آيد .

در هنگام اجراي هر thread ، كنترل تمام كامپيوتر بدست آنها مي افتد ولي در بعضي اوقات سيستم عامل مي آيد اين thread و اطلاعات ضروري براي سيستم را به محلي كه مشابه swap شرح شده در قبل مي باشد ، انتقال دهد و thread ديگر بداخل فرستاده مي شود و اجراو سپس به خارج فرستاده مي شود اين عمل اين قدر سريع انجام مي شودكه كاربر احساس مي كند thread ها با هم در يك زمان اجرا مي گردد .

دو نوع multitasking وجود دارد كه اول آنها را نام برده سپس شرحمي دهيم .
۱-preemptive
2- nonpreemptive
nonpreemptive :
دراين نوع multitasking ، قبل از جايگزين يك thread در حال اجرا با thread ديگر thread مشخص مي كند كه چه مدت زمان كار دارد .

Preemptive multitasking :
هر thread برايش مقدار ثابتي زمان مشخص مي شود تا در اين زمان ثابت كار خود را انجام دهند كه به اين زمانtimeslice گفته مي شود.وقتي كه يكthread زمانtime slic اش تمام شد موظف است كه به خارج انتقال يابد. مسئله ديگري هم كه است مسئله حق تقدم است يعني يك thread با اولويت بالا ميتواند جلوي اجراي thread با اولويت پايين تر را بگيرد.در عوض ويندوزNT كه ازpreemptive استفاده مي كند ويندوز ۱۶ بيتي از multitasking از نوع nonpreemptive استفاده مي كنيم .

مقايسه nonpreemptive و Preemptive :
در nonpreemptive هر در خواست براي اجراي در خواستهاي ديگر ناچاربه رها كردن كنترل پردازنده است كه البته در مدل Preemptive ديگر به اين صورت نيست بلكه سيستم عامل خود به طور اتوماتيك موقتا كنار كذاشته ودر خواستهاي مورد لزوم براي كار،سرويس داده مي شود .همان طور كه در بالا گفته شدويندوز ۱۶بيتي ازnonpreemptive استفاده مي كند به نام cooperative.دراين سيستمcooperative هردرخواستي براي اجراي درخواست ديگر كنترل پردازنده را رها مي كند.
در يك سيستم nonpreemptive ،در حالي كه يك thread خودش دارد اجرا مي شود هيچ thread ديگري نمي تواند كامپيوتر را در اختيار گيرد. ولي در Preemptive اگر مدت زمان لازم براي هر thread X باشد براي دو thread دو برابر اين مقدار ،براي سه thread سه برابر اين مقدار و …مي باشد . به علاوه threadهاي با اولويت بالاتر مي توانند بر thread ها با اولويت پايين تر تقدم يابند . براي فهميدن بهتر مفهوم Preemptive و nonpreemptive به مثالي جوع مي كنيم :

در اين مدلها multitasking مي توانيم پردازنده را مانند يك راهداري در جاده در نظر بگيريم .در يك سيستم Preemptive ، هر ماشيني زماني كه صرف ورود به راهدار وپول دادن و خروج مي كند،براي هر ماشين يكسان است . مثال آ يك ماشين ،كه حدودا دهمين ماشين است ميتواند تخمين بزند كه چه زمان ديگر نوبت او مي رسد .(مثل سيستم عامل ويندوز (NT ولي در سيستم nonpreemptive ديگر اين طور نيست يعني فقط هر ماشين با ورود به راهداري مي تواند تخمين بزند كه چه مقدار كار دارد ديگر ماشيني كه در صف ماشين هاي است نمي تواند تخمين بزند كه كي و چه زماني نوبت او فرا مي رسد. حال براي اينكه بفهميم كه سيستم nonpreemptive سست است مثالي ميزنيم :

در ويندوز ۱۶بيتي مديريت چاپ براي مسير دهي ducument ها به چاپگر استفاده مي شود . به اين ترتيب كه مديريت چاپ همواره با چاپگر دررابطه است كه در صورت بيكاربودنducumentهارا منتقل كنددر غير اين صورت روي فضاي hard ذخيره كند.در طي اين اعمال كنترل به كاربر اين قدر سريع انجام ميشود كه كارديگري نمي تواند انجام دهد.ولي به صورت تئوري كارانتقال كنترل به كاربراين قدرسريع انجام مي شود كه كاربر به نظر مي رسدكه دفعتآ كار كنترل را به عهده مي تواند بگيرد. ولي در واقعيت حدود چند ثانيه اي طول مي كشد.

ولي در Preemptive كاربر،براستي و واقعآ دفعتآ كنترل را به دست مي گيرد .چون فعاليتهاي كاربر داراي حق تقدم بالاتري است در نتيجه كنترول به او واگذار مي شود .
حال مي پردازيم به خصوصيات ذيگر سيستم عامل ويندوز NT بنام symmetric multipocess (چند پردازشگر متقارن )

۴- symmetric multipocess
تمام كامپيوتر هاي desk top ، داراي يك پردازنده يا CPU هستند .مي توانيم از CPU ها ،از INTEL 80386 وهمينطور از MIPS4000 نام برد . يك CPU مي تواند در زمان يك thread را اجرا نمايد و اين قدر بين آنها تغيير وضعيت مي دهد كه كار بر احساس مي كندچند thread رااجرا مي كند . جاييجايي بين threadها خود پردازشي است در پردازنده كه احتاج به زمان دارد .هرچه threadهاي بيشتري براي زمان پردازنده رقابت كنند ، منابع پردازنده درگير در جابجايي بين thread ها قسمت بزرگتري از زمان قابل دسترس را مصرف ميكنند و يا پردازنده دريافت thread هاي جديد را متوقف مي كند ويا به هر يك از thread ها آن چنان زمان كمي مي رسد كه همه چيز در يك halt از بين مي رود. در اواخر دهة هفتاد ،طراحان نعداد پردازنده سه برابر در خواستها زياد افزايش دادند (muliprocceing).با دو پردازنده ،دو برابر در خواستهاوبا سه پردازنده سه برابر در خواستها را مي توانيد انجام دهيد وبه … همچنين يك كامپيوتر كه بيش از يك پردازنده داشته باشدمي تئاندد يك زمان چندthreadرابدون جابجايي كارها اجرا كند .هميشه ميزان زيادي از نيروي پردازش صرف مديريت فعاليتهاي پردازنده هاي چند گانه مي شود .
MULTIPROCESSING*
اگر در كامپيوتري بيش از يك پردازنده استفاده شود اصطلاحا مي گوييم muliprocceing كه اين پردازنده ها با يك حافظة مشترك يا high –speed- link به هم متصلند .به كامپيوتري كه از اين سيستم استفاده مي كنند ميگوييم Multipoccesssor
LOAD BALANCING :در صورتي پردازنده اي اشغال باشد ،كارها براي افزايش در خواستها مي توانند به ساير پردازتده ها منتقلآ شوند اين خصوصيت load balancing گفته مي شود .
انتقال كارها به پردازنده با توجه به حق تقدم صورت مي گيرد .كارهاي با حق تقدم بالاتر به پردازنده با ظرفيت كمتر و كارها با حق تقدم پاينتر مي توانند در CPU هاي مشغول تروشلوغت و منتظر نوبت خود باشند .
سيستم هاي داراي چند پردازنده نيز داراي مشكلاتي بودند .مثلآ يكي از آنها اين است كه بدون توجه به تعداد پردازنده ميبايستي كپي از بانك اطلاعاتي(data base ) داشته باشيم ولي اگر ما در حال اجراي يك برنامة پردازش تصوير باشيم،ترجيح مي دهيم كه فقط روي يك كوپي از تصوير ،بجاي يك كپي براي هر پردازنده كار كنيم. داشتن كپي هايمتفاوت از يك data براي چند پردازنده فاقد كارائيست .
داشتن يك كپي نيز خطر مي باشد. فرض كنيد مثلآ پردازندة A يك ركورد را از بانك اطلاعاتي بخواند و آماده شود كه تغييراتي در آن دهد .پردازندة ديگري مانند B هم همان ركورد را از بانك اطلاعاتي مي خواند و تغييرات متفاوت در آن مي دهد . بعد ، دو پردازنده Aو B ركوردهاي تغيير يافته را (هر دو را )در بانك اطلاعاتي باز نويسي مي كنند .اول پردازنده A ركورد تغيير ياقته را مي نويسد وبعد B ركورد تغيير يافته را باز نويسي مي كند. بدون سيستم حفاظتي نمي توان از درستي بانك اطلاغاتي اطمينان داشت و نمي توان فهميد كه در حال آخرين نسخة جاري ركورد ميباشيم.

MULTIPROCESSING متقارن و نا متقارن
سيستم عامل بايد معمولآ داراي multiprocessing باشندو تقسيم كار در بين پردازنده ها را خوب بايد بداندو داراي سيستم حفاظت باشد تا از درستي data اطمينان كامل كسب كند.
ما دو نوع سيستم عامل چند پردازنده داريم :۱-متقارن ۲- نا متقارن
در سيستم عامل چند پردازنده از نوع متقارن ،سيستمهاي متقارن روي يك پردازندة انحصاري اجرا مي شوند و ساير كارهاي سيستم عامل روي ديگر پردازنده ها اجرا مي شود .تمام ورودي خروجي هاI/O) ) توسط پردازندة اجرا كنندة سيستم عامل ، مديريت مي شود .سيستمهاي متقارن ،سيستم عامل را روي يك پردازنده از پردازندها اجرا مي كنند . ويندوز NT از يك مدل پردازنده متقارن استفاده مني كند .سيستمهاي متقارن در مقايسه با سيتمهاي چند پردازندةنامتقارن كه به يك پردازنده فرمان مي دهند كه سيستم عامل رااجرا كند ، سيستمهاي متقارن قابل اطمينان بيشتري دارند چرا كه براي خرابي يك پردازندة واحد بر خلاف بهم ريختن تمام سيستم است.
مزيتهاو عيوب سيستمها ي چند پرداشي نا متقارن :
اولين مزيت اين است كه راحتتربه انجام مي رسد . براي افزايش در خواست ويا كارها تعداد زيادي پردازندة خادم اضافه مي كنيم.اين سيستمها RAM را در اختيار هر پردازنده قرار مي دهدو براي درستي و يا بادرستي داده اين كار انجام مي شود .پردازندة پايه ممكن است براي حمايت پردازنده هاي ديگر احتياج به تغييراتي داشته باشد .

معايب سيستم هاي متقارن :
از بز رگترين عيوب اين است كه شديدا در معرض شكستن هستند يعني خطر شكستن براي آنها وجود دارد .اگر يكي از پردازنده هاي خادم خراب شود پردازندة مخدوم مي تواند كارها را بين پردازنده هاي باقيمانده تقسيم كند وشيفت دهد وبه اين ترتيب سيستم را سر پا نگه مي داردولآي اگر پردازندة مخدوم خراب شود متوقف مي شود و در واقع تنها كپي سيستم عامل متوقف ميشود وتمام دستگاههاي I/Oكه توسط سيستم عامل كنترل مي شوند ،غير قابل دسترس مي شوند. پردازندة خادم هنگام افزايش درخواست در سيستم عامل، ميتواند دچار اشكال شود .در زمان اتفاق اين حالت كار سيستم كند مي شود حتي زماني كه بعضي از مخدوم ها كمي ظرفيت داشته باشند . كار با سيستمهاي متقارن مشكل است چون فضاي زيادي از حافضه را اشغال كرده است در نتيجه براي درستي ويا نا درستي داده نياز به سيستم محافظ بيشتري دارد .
سيستم عامل بايدبتواند به طورهمرمان روي چند پردازنده اجرا شود بدون اينكه روي خودش بلغزد و بايد بتواند در حال اجرا شدن روي هرپردازنده اي،هر پردازندة خراب ويا از كار افتاده اي به خارج بفرستد .

مزاياي سيستمهاي متقارن :
۱-كارايي بيشتري دارند براي اينكه هم سيستم عامل و برنامه هاي كاربر ميتوانند بين پردازنده ها تقسيم شود . امكان اينكه پردازنده اي مشغول باشد وپردازنده اي بيكار مانده باشد وجود ندارد چرا كه در خواستها بين تمام پردازنده ها تقسيسم مي شود .
۲-قابل اطمنان تر هستند چرا كه خرابي يك پردازنده موجب از كار افتادن تمام سيستم نمي شود . آنها وابسته به MASTER/SIAVE كه سيستم هاي متقارن را بين پردازنده ها قابلآ حملآ ميسازد ،نيستتند.

THRAD
در ويندوز NT يك پردازش شامل دستور العمل ها ، فضاي آدرس دهي مجازي كه براي نگهداري برنامه لازم است ،داده و منابع سيستم عامل كه توسط برنامه هاي در حال اجرا به كار رفته اند، مي باشد. در هر پردازش حداقل يك thread وجود دارد و قسمتي است كه معمولآ ويندوز NT براي اجرا، زمانبندي مي كند . هر پردازش يك thread نيازمند است چرا كه بدون thread هيچ ازرشي ندارد . در هنگام اجراي thread است كه پردازش هم صورت مي گيرد.اگر چه در ويندوز NT در يك زمان مي شودچند برنامه را با هم انجام شوند و اين بدين معني است كه هر پردازش بيش از يك thread دارد .

برنامه پايگاه اطلاعاتي را براي آ ژانس هاي مسافرتي در نظر مي گيريم اين برنامه آثار ركوردهاي سرويس گيرندة آژانس را روي يك كامپيوتر محلي حفظ ميكند وبراي به دست آوردن اطلاعات پرواز براي سرويس گيرنده ، به يك سيستم رزرواسيون از طريق شبكه يا مودم وصل شود .يك شركت مسافرتي مي تواند براي سرويس گيرنده در خواست اطلاعات بكند و فايل مسافرتي سرويس گيرنده را صدا زند .اتصال شبكه اي به سيستم رزرواسيون براي ايجاد و تكميل ،زمان بيشتري لازم دارد تا دريافت فايل از هاردديسك اصلي .اگر اين درخواست به صورت يك thread نوشته شود ، شركت بايد قبل از دستيابي به فايل مسافرتي انقدر صبر كند تا اتصال رزرواسيون انجام شود و اطلاعات مورد در خواست انتقا ل داده شود گر چه براي يك درخواست چند thread،برنامه مي تواند دست يابي به يروفايل سرويس گيرنده را هر زمان كه شركت مسافرتي اتصال شبكه اي به سيستم رزرواسيون برقرار كرد ، آغاز كند ،در حالي كه يك thread منتظر پاسخ رزرواسيون است ، thread ديگر پروفايل سرويس گيرنده دريافت و نمايش مي دهد.

ويندوز NT هم مي تواند اين thread هاي مجزا را انجام دهد وهم مي تواند thread را به پردازنده هاي گوناگون در سيستمهاي چند پردازنده اي بفرستد. اين threadهاي چندگانه به طورهمزمان با هم اجرا مي شوند .

يك برنامه با يد نوشته شو دتا اين thread هاي چند گانه را باهم ادغام كند . اكثر برنامه ها كه در سيستم چند پردازنده اي قابل اجرا هستند ويك thread دارند ، بسياري از امكانات اجرايي نهفته و پنهان سيستم را از بين ميبرند .در بعضي از جاها يك پردازش با يك thread مي توانند سرعت پردازنده هاي ديگر را پايين بياورد اين مسئله معمولآ در سيستم هاي شبكه اي كه پردازش هاي اجرا شونده روي پردازنده هاي يك منبع مشترك مانند مديريت شبكه را بكارمي برند،واقعيت دارد اگر مديريت شبكه چند thread باشد ، بازيابي مي تواند بين thread هايي كه روي چند پردازنده اجرا مي شوند مانند تقاضا براي افزايش منابع مديريت،تقسيم شود .اگر يك طرح تك thread بكار رود ، مديريت شبكه مي تواند تنها روي يك پردازنده كار كند . با افزايش تقاضا، پردازنده تضعيف مي شود وبراي سيستم موجود اشكالاتي پيدا مي شوند .

حالا نوبت آن رسيده است كه از خصوصيت ديگر ويندوز NT (خصوصيت پنجم )نام ببريد و آن client/server است كه در صفحة بعد توضيحات آن داده خواهد شد.
۵- ساختارCLIENT/SERVER
خيلي ها اصطلاح client/server را با شبكه هاي محلي و يا lan بكار مي برند ما در اول شرح اصطلاح مي پردازيم سپس در مورد چگونگي كار ويندوزNT كه چگونه طرح client/server را از شبكه به سيستم عامل منتقل مي كند.
براي درك بهتر متوسل به مثالي مي شويم:

فرض كنيد شما در شركتي كه كار مي كنيد در اتاق خود يك PC كه در آن يك ديسك قرار دارد و يك چاپگر كه متصل به كامپيوتر است و همچنين مودم، داريد، اين PC براي شما يك نفر در هر زمان بخوبي كار نخواهد كرد اگر شركت افراد استخدام شده خود را افزايش داد به هر نفر يك PC تعلق مي گيرد. حال بايد تصميم بگيريم كه ايا شما مي توانيد به هر كدام اين افراد جداگانه يك چاپگر و يك مودم بدهيد.

مسلم است كه اين كار پر هزينه استو بعلاوه چاپگر شما كه اغلب بلا استفاده است چه لزومي دارد كه براي هر نفر هم يك چاپگر خريداري شود.
سؤال ديگر كه پيش مي آيد اين است كه ممكن است افراد ديگري هم در شركت به فايلهايي كه در هارد PC شما است احتياج داشته باشد يكي از راهها اين است كه اين فايلها روي فلاپي ديسك Save شود.

وقتي هر كدام از آنها بخواهند فايلي را كپي كنند يعني پرينت بگيرند اول آن فايل را روي فلاپي ديسك مي برد و بعد فلاپي را درPC شما قرار مي دهد و توسط چاپگر شما مي تواند پرينت بگيرند. در خيلي از سازمانها و شركتها از اين روش كه به sneaker net معروف است استفاده ميكنند ولي معايب و مشكلاتي دارد كه در زير شرح مي دهيم :
۱- سودي ندارد
۲- ايمني ندارد
۳- داراي دادة غير ضروري هستند
۴- امكان اينكه داده تحريف شود وجود دارد
۵- …
بهترين راه حل براي اين مشكل استفاده از شبكه ها است. در سيستم‌اي كه از شبكه استفاده مي كند تمام PC ها با هم در ارتباط هستند و تمام دستگاههاي ورودي و خروجي با هم به اشتراك گذاشته مي شود از جمله چاپگر و مودم. در اين سيستمها كه از شبكه lan استفاده مي شود هر فردي مي تواند از فايلهاي شما استفاده كند بدون اينكه به كار شما صدمه و وقفه اي وارد آورد اينگونه شبكه بنام peer-to-peer معروف است. هنگامي كه فردي بخواهد در شبكه فايلي را پرينت بگيرد، كار شما در PC آهسته تر انجام خواهد شدكه همزمان با اينكه آن بايد كار شما را انجام دهد بايد درخواست ديگري را هم پردازش كند. در شبكه هاي كوچكتر بر خورد درخواست به دليل اشتراك منبع كمتر صورت مي گيرد يعني درواقع فرقي ندارد كه PC چه كسي به چاپگر متصل مي‌شود ولي هر چه شبكه بزرگتر باشد، تاخير افزايش بيشتري ميابد سرعت PC ها كمتر مي‌شود چرا كه تعداد افرادي كه مي‌خواهند به فايلهاي مشترك دسترسي پيدا كنند بيشتر مي‌شود. به همين دليل لازم است كه شبكة peer-to-peer تكميل شود براي همين بايديك كامپيوتر را در نظر بگيريم كه فايلهاي مشترك را مديريت كند. به همين دلدل است كه از client/server استفاده ميشود. فايلهاي مشترك، ازPC شما به سرويس دهنده فايل يك كامپيوتر منتقل ‌شود. منظوراز سرويس دهنده فايل يك كامپيوتر انحصاري است كه كارش ايت است كه امكان دستيابي مساوي به سيستم فايل مركزي را براي كاربران فراهم مي كند. هر كس كه فكر مي كند در PC خود فايلهايي دارد كه بقيه نيز به آن نيازمند است به سرويس دهنده فايل، اين فايلها را منتقل مي كند و بدين ترتيب كارايي PC افزايش ميابد.

پس بطور كلي مي توان گفت كه سرويس دهنده فايل يك كامپيوتر با يك ديسك سخت با ظرفيت بالا است كه به شبكه محلي وصل مي‌شودوفايلهاي بكار رفته توسط ساير كامپيوترهاي متصل به همان شبكه را ذخيره مي كند منظور از سرويس گيرنده از هر شبكه، PC شما و PC هركاربرديگر است. درخواستهاي سرويس گيرنده از يك سرويس دهنده منشاء مي‌گيرد مانند فايلهاي ديتا و دستيابي به چاپگر.
CUENT/SERVER در ويندور NT

ويندوز NT در دو لايه كار مي‌كند يكي لاية كاربر و ديگري لاية Kernel با اجراي ويندوز NT تمام كارهاي مديريت مثل مديريت ورودي و خروجي، حافظة مجازي تمام پردازش‌ها را انجام مي دهد.
اجراي ويندوز NT در لاية Kernel انجام مي‌شود چرا كه داراي امنيت خاصي است و از دسترسي به پردازش هاي كاربر جلوگيري مي‌كند. درلاية كاربر ويندوزNT موارد چندي از سيستمهاي حفاظت شده را فراهم مي‌كند برنامه نويسي win32 (API) مثالي از اين مورد است كاربران به توسطwin32 مي‌توانند به لاية user و ديگر امكانات ويندوزNT دسترسي پيدا كنند. به توسط اين برنامه نويسي، سازندگان بدون اينكه در مورد تفاوت سيستمهاي سخت افزاري NT نگران باشند مي‌توانند يك درخواست يكسان را در كامپيوترهاي مختلف اجرا كنند.
زيرا سيستم امنيت از جمله زير سيستمهاي محافظت شمرد مي‌شود كه داراي روش‌هاي مختلف محافظت و همچنين Password محافظتي است. DOS و درخواستهاي ويندوز ۱۶ بيتي را مي‌توان در فضايي از جنبة كاربر كه بنام virtual Dos Machine معروف است، مورد بررسي قرار داد.
virtual Dos Machine نيز با زير سيستم win32 در ارتباط است. برنامه هاي درخواست در ويندوز NT سرويس گيرنده و زير سيتمهاي حفاظت شده، سرويس دهنده هستند. توسط اجراي NT اين درخواستهاي سرويس گيرنده پيغام خود را به زير سيستمهاي حافظت سرويس دهنده، كه فضاي مشتركي براي سرويس دهنده‌ها ايجادكرده، مي فرستند. سرويس دهنده‌ها توسط همين فضا، پاسخ سرويس گيرنده‌ها را مي دهند. client/server با حذف منابع يكسان، سيستم اجرايي را جهت مي دهند. زيرا اگر اجراي NT بخواهد همراه API باشد سيستم خيلي دشوار مي‌شود. مزيت ديگر اين ساختار اين است كه بدون هيچگونه اجراي جديدي مي‌توانيد به API اضافه كنيد. به علاوه هر زير سيستم در حافظه حفاظت شدة خود داراي مراحل عمل مخصوص به خود است. در نتيجه اگر يكي از زير سيستم دچار مشكلي شود، كار كليه سيستم NT خراب نمي‌شود. طراحي مراحل اجرايي زير سيستم بگونه اي است كه هنگام كار قادر به تبادل اطلاعات متعدد و در نتيجه شكوفا كردن ظرفيت NT Multipracessor مي‌شود. ساختار client/server، طراحي ويندوزNT را به صورتي خلاصه كرده، تا به عنوان بهتر كردن سيستم هاي اجرايي Multipracessor و حمايت اطلاعاتي گسترده شبكه، API هاي جديدي در هر زمان دلخواه به سيستم اضافه كرد. همچنين كاربران زيرسيستم حفاظت شده مي‌توانند به وسيلة پردازندة يكساني با ديگر كاربران ارتباط برقرار كنند كه اين خود سبب كارايي بيشتر سيستم مي‌شود. امنيت در سيستم ويندوز NT داراي دو بعد است و اين دو بعد:
۱- كنترل بر چگونگي دستيابي به سيستم مركزي NT و همچنين كنترل از جهت دستيابي به پرونده ها و subdirectory هاي داخل سيستم.
۲- حفاظت عملكرد كلي و جزء به جزء مراحل عمل سيستم، به جهت جلوگيري از مختل كردن كار كل و ياجزء به جزء سيستم بوسيلة ويروس و ديگر برنامه هاي ايجاد شده جهت خراب كردن كار سيستم.
در سيستمهاي شبكه، يك وقفه ممكن است دچار بسياري از مشكلات شود يعني مشكلات زيادي رافراهم كند چرا كه باعث مي‌شود كه ويروس دهنده متوقف شود و همين توقف سرويس دهنده بر روي تمام در خواستهاي اجرا شده روي سرويس دهنده تاثير مي‌گذارد و باعث مي‌شود بسياري از فايلهاكه ذخيره شده اند از بين بروند. ويندوز NT مزاياي گسترده اي براي اطمينان از امنيت سيستم دارد تا بتواند سيستم‌هاي NT را در شرايط سخت نگه دارد و اشكالات سيستم رابهبود دهد و رفع كند.

خصوصيت كنترل دستيابي

سيستم‌هاي عامل DOS و ويندوز۱۶ بيتي داراي خصوصيت امنيت مانند ويندوزNT نيستند. چرا كه هر PC متعلق به يك كاربر بوده و توسط همان يك نفر مورد استفاده قرار مي‌گيرد و ديگر احتياجي به password ندارد و همچنين هيچ‌گونه محدوديتي در استفاده از فايلها ندارد. سيستم عامل‌هاي شبكه و مديريت LAN (همچون شبكه فايل) براي دستگاههايي طراحي مي‌شوند كه ذر آنها يك كامپيوتر يا سيستم فايل ميان تعداد زيادي كاربرمشترك است. اين سيستمهاي عامل محدوده اي از امكانات امنيتي را براي اجازه دادن Data به مشترك بودن بين كاربران و درخواستها بكار مي‌برند در حالي كه دستيابي به فايل شخصي و حساس را محدود مي‌كند.
براي همين است كه ويندورNT يك سيستم حفاظت و امنيت كنترل دستيايب را پيش بيني مي‌كند هدف‌هاي ويندوز NT از سيستم حفاظت و امنيت اين است كه از اينكه فقط كاربران مجاز به اطلاعات سيستم دسترسي پيدا كند اطمينان حاصل كند.

مقدمه
xinu سيستم عاملي است كه روي دستگاههاي ۱۶ بيتي LSI11.2 و سازگار با آن قابل اجراست. اين سيستم عامل قابليت اجراي چند برنامه و شبكه را دارد. برنامه اصلي آن به زبان C و۵۵۰ خط كد زبان اسمبلي است (بدون Comment )

:System _ Calls
در sinu حدود ۳۳ سيستم call وجود دارد كه در اينجا به ذكر چند نوع از آنها كه در بيشتر سيستمهاي عامل مشترك هستند،مي پردازيم :
براي اجراي هر پروسه اي دو نوع sys-cal داريم، يكي create و ديگري resume ميباشد.
:Create اين sys-cal يك پروسه را به حال اجرا در مي آورد و اگر پروسه اي در حال اجرا باشد و اين sys-cal را اجرا كند خودش موقتاً به حال تعليق ميرود و پروسه اي را از حـالـت ready بـه حـالـت اجـرا (current) مـي بـرد.

:resume وقتيكه يك فرآيند فرزند كارش تمام شود ، اين sys-cal اجرا مي شود تا فرآيند پدر كه در حالت تعليق (suspended) بود به كار خودش ادامه دهد.
:Kill در حقيقت اين sys-cal برعكس cerate دمي باشد kill ، كار يك فرآيند را فوراً خاتمهن مي دهد و كلية مشخصات آن را (preocess Identification) از Process-Table پاك مي كند. اگر فرآيند در صف Semaphore باشد ، از اين صف نيز خارج شده و شمارة semaphore يكي افزايش پيدا ميكند . اگر فرآيند منتظر L/Q باشد ، كار L/Q در صورت امكان قطع مي شود.
در xinu براي اجتناب از wating Busy از روش semaphore producer& Consumrt)) استفاده مي شود، در اين حالت ما دو sys-cal داريم به نامهاي Wait و Singnal .
:Wait اين sys-calيكي از عدد semaphor كم مي كند، اگر جواب منفي بود موجب مي شود كه پروسه به تاخير بيفتد ( به حالت wait ميرود)
:Signal اين sys-cal دقيقاً برعكس wait عمل مي كند ، يعني يكي به semaphor اضافه مي كند. اگر عدد مثبت بود به پروسه اي كه در حالت انتظار بود (waiting) اجازه ميدهد به حالت ready برود.

ساختار سيستم عامل :xinu
سيستم عامل xinu يك سيستم عامل لايه اي مي باشد كه از ۱۰ لايه تشكيل شده است كه به ترتيب اهميت عبارتند از:
۱) سخت افزار ۲)مديريت حافظه
۳) مديريت پردازش ۴) هماهنگي فرآيندها
۵) روابط بين فرآيندي ۶) مديريت clock
7) مديريت I/Q 8) لايه شبكه

۹) سيستم فايل ها ۱۰) برنامه هاي كاربر
زمانبندي و سوئيچ كردن:(Scheduling & Context Switching)
:Process State يكي از فيلدهاي ۱۲ گانة Process Table مي باشد
در xinu ما براي فرايندها ۶ حالت داريم :
۱٫Current 2.ready 3.wait 4.sleeping 5.receiving 6.suspended

تقريباً تمام سيستم ها به دو حالت ready و current نياز دارند.
:Current حالتي است كه يك پروسه يا فرآيند ، زمان cpu را دريافت كرده و در حال اجرا است .
تعريف زمانبند (scheduler) :عمل سوئيچ كردن از يك پروسه به پروسه ديگر شامل دو چيز است :
الف –انتخاب يك پروسه از ميان پروسه هايي كه در حالت ready هستند.
ب –واگذار كردن cpu به فرآيند انتخاب شده

نرم افزارهايي كه اين عمل را انجام مي دهند ، اصطلاحاً (زمانبند) يا “scheduler” ناميده ميشوند.
براي اجراي فرايند ها بطور همزمان نياز به يك Process-Tabld است كه اطلاعات هر فرآيند در آن ذخيره شود. در xinu اين (جدول فرآيندها )شامل ۱۲ فيلد است ، اين فيلدها عبارتند از :
۱) اولويت فرآيند ها ۲) semaphor ها ۳) حالت فرآيند ها (porcess state)
4) مقادير ثبات ها ۵) پيغام هاي دريافتي ۶) طول )stack)
7) اسم فرآيند ۸) آدرس كد ادامه برنامه و ….

:priority در xinu اولويت هر فزآيند داخل فيلدي در process-T نگه داري مي شود . در xinu پروسه در حال اجرا بالاترين اولويت را دارد. پروسه هاي كه داراي اولويت برابر هستند به روش round-robin در يك صف قرار مي گيرند . اولويت پروسه به ترتيب ، از صفر به بالا افزايش مي يابد ، يعني كمترين اولويت مقدارش صفر است كه مخصوص فرآيندي بنام Null-Process مي باشد.
فرآيند پوچ :(Null Process)
برنامه زمانبند (scheduler) فقط مي تواند زمان cpu را بين فرآيند هايي كه در حالت current و ready هستند ، سوئيچ كند . اما نمي تواند خودش يك فرآيند جديد بسازد . بنابراين هميشه فرض بر اين است كه يك پروسه در دسترسي وجود دارد در نتيجه بايد هميشه ، حداقل يك فرآيند در صف فرآيند هاي ready وجود داشته باشد. در xinu هنگامي كه سيستم راه اندازي مي شود يك فرآيند اضافي (Extra Process) ساخته مي شود كه Null Process نام دارد. اين فرآيند داراي درجه اولويت صفر مي باشد و شامل يك حلقه بينهايت است.
‍‍Process Suspension& Resumption
:Suspend توقف يك پروسه يا فرآيند بطور موقت

:Resume شروع دوباره فرآيند
:Suspend State يكي از ۶ حالت فرآيند هاست كه با دو سيگنال suspend و resume در ارتباط است و به اين معني است كه : (منتظر ماندن يك پروسه براي فراهم شدن يك يا چند شرط بدون توجه بهن اينكه اين شرايط كي فراهم مي شوند. )
هماهنگي فرآيند ها (Process Coordination)
براي هماهنگ كردن فرآيند ها از semaphor استفاده مي شود. براي اين كار ما دو روال wit و signal داريم:
:wait يكي از مقدار S كم مي كند.
:signal يكي به مقدار S اضافه مي كند.
اگر مقدار S منفي شود، فرآيند مربوطه به حالت wait مي رود. اگر روال signal فراخواني شود و مقدار S مثبت باشد آنگاه فرآيندي كه در حالت wait است به حالت ready باز مي گردد. اگر هيچگاه روال signal فراخواني نشود ، فرآيند براي هميشه forever)) در حالت wait مي ماند . قابل توجه است كه فرآيندي كه در حال wait است هيچ دستوري را نمي تواند اجرا كند . بنابراين هنگاميكه تمام فرآيند ها به حالت wait بروند ديگر سيستم نمي تواند هيچ كدي را اجرا نمايد.
بخاطر اينكه سيستم هيچ وقت به حالت Halt نرود هميشه يك فرآيند در حالت ready باقي مي ماند كه آن فرآيند ، همان فرآيند null-process مي باشد.

Interprocess Communication
ارتباط بين فرآيند ها توسط ارسال پيغام :(message passing)
در xinu دو روش ارسال پيغام (message passing) وجود دارد كه فقط يكي از آنها را توضيح خواهيم داد ، روش دوم براي شبكه ها استفاده مي شود.
پيغام هاي بين فرآيندي : (process to process message passing)
در xinu براي ارتباط بين فرآيند ها از روش (ارسال پيغام ) استفاده مي شود كه به اين صورت است كه سيستم عامل اجازه مي دهد يك فرآيند براي فرآيند ديگر اطلاعاتش را بفرستد. اين اطلاعات يا پيغام ها فقط بين فرآيند هايي ارسال مي شود كه در حالت Block نباشند.

در xinu ، در هر زمان فقط يك پيغام قابل دريافت است و اگر چند پيغام همزمان ارسال شود ، سيستم فقط اولي را دريافت كرده و به بقيه جواب نمي دهد.
روال send ، پيغام يك ID و آرگومان يك پروسه را مي گيرد (پروسه اي كه قرار است پيغام به آن فرستاده شود ) سپس پيغام مذبور را به آن پروسه خاص تحويل مي دهد و همچنين هنگام اجراي روال send ، فرآيندي كه پيغام را دريافت مي كند به حالت ready باز مي گردد تا كاوش را ادامه دهد.
روال receive منتظر مي ماند تا يك پيغام دريافت شود تا آن را به راي فرآيند مورد نظر بفرستند. هنگامي كه اين روال يك پيغام را دريافت كرد فيلد phasmsg در process-table چك نمي شود اگر فرآيندي منتظر دريافت باشد اين فيلد (۱) است سپس پيغام دريافتي را براي فرآيند مورد نظر مي فرستد.