مقدمه ویندوز NT نسبت به سیستمهای عامل OS/2 و UNIX و ویندوز 16 بیتی دارای برتریهایی است که این خصوصیات و امکاناتی که ویندوز NT دارد، با یک سیستم عامل یا بیشتر نیز قابل دسترسی است.
ولی هیچکدام از سیتم عاملها قابلیتهای ویندوز NT را ندارد.
در این قسمت مهمترین خصوصیات NT را معرفی میکنیم و یکسری خصوصیات کلیدی NT را شرح میدهیم.
1- آدرسدهی 32 بیتی در انیجا لازم است توضیحی در مورد اینکه آدرس چیست و نحوه آدرسدهی که میکروسافت DOS چگونه است بدهیم.
آدرس کلاً محل یک بایت از اطلاعات در حافظه کامپیوتر یا Mass storage میگویند.
آدرس بر دو نوع است.
آدرس میتواند فیزیکی و یا میتواند مجازی باشد.
1-1- آدرسدهی فیزیکی: به بایت داده معین در محل فیزیکی معینی از حافظه یا دیسک اشاره میکنند.
2-1- آدرسدهی مجازی: به آدرس منطقی (نرمافزاری) اشاره میکند که سیستم عامل به آدرس فیزیکی معینی اشاره میکند.
مطلب قابل توجه در انیجا این است که ویندوزNT از بین دو آدرسدهی، از آدرسدهی مجازی استفاده میکند که برای هر درخواست اصولاً چهار گیگابایت اختصاص داده میشود که البته 2 گیگابایت آن برای سیستم عامل منظور میشود.
به دنبال پیشرفت مایکروسافت DOS به دلیل محدودیتهای حافظه، میکروپروسسورهایی از قبیل 8086 و 8088 شانزده بیتی که یک فضای آدرسدهی بیست بیتی را عرضه میداشتند طراحی کردند.
یعنی در واقع این میکروپروسسورهای میتوانستند یک مگابایت از حافظه را به طور فیزیکی آدرسدهی کنند.
با توجه به این که بیست بیت به خوبی در کلمه (word) شانزده بیتی جای نمیگرفت مهندسین INTEL برای دستیابی به هر آدرس، طرحی به نام تقسیم حافظه ارائه دادند.
در این نوع آدرسدهی آمدند یک مگابایت را به 16 قسمت تقسیم کردند که هر قسمت 64 کیلوبایتی با ghunk بود.
این کار بدین دلیل بود که برنامهنویسان اصولاً در پردازندههای 8 بیتی قدیمی مانند INTEL 8085 و ZILOG Z80 با آدرسدهی 64 kdyte آشنایی داشتند.
برای اینکه برنامنویسان بتوانند به هر آدرسی در داخل فضای آدرس یک مگابایتی دست پیدا کنند آدرس حافظه فیزیکی محاسبه شد.
(قسمت در 16 ضرب کرده و سپس یک offset به آن اضافه میشود.
نتیجه به بایت مورد نظر اشاره میکند.) بقیه پردازندههای 6 بیت مانند 68000 Motorola از آدرسدهی خطی استفاده میکردند که هربیت از حافظه مستقیماً و بدون استفاده از offset & segment آدرسدهی میکرد.
و علاوه بر تسهیلاتی مانند MS-DOS 5.0 و windows 3.1، طراحان زیادی طرحهای خود را برای آدرسدهی و بیش از 640 کیلوبایت حافظه پیشنهاد کردند.
میتوان از معروفترین نمونهها QEMM QUALAS’ 386 MAو QUARTERDECK’S را نام برد.
کل این و طرحها حافظه مورد استفاده را بیش از حد 640 کیلوبایتی بسط داند، ولی مجبور کردن آنها به کار با یک موقعیت خاص PC و دنباله درخواستها و تسهیلات نرمافزاری معمولاً یک هدر کردن زمان، پردازش خنثیکننده است.
همیشه اینطور به نظر میرسد که حداقل یک درخواست مهم با یکی از تسهیلات با مدیریت حافظه شما سازگار نیست.
اولین پردازنده که فضای آدرسدهی خطی را به کار برد و نیز با DOS سازگاری داشت INTEL 386 بودکه میبایست تقسیمبندی حافظه در کنار آن احتیاج به مدیریت شخص ثالث را حذف کرد که در واقع فضای آدرسدهی 32 بیتی INTEL 386 با برنامهها نوشته شده برای پردازندههای INTEL قبلی سازگاری نداشت.
این برنامههای ناسازگار، DOS و تمام برنامههای اجرا شده تحت DOS بودند.
برایایجاد سازگاری با DOS و درخواستهای آن INTEL یک طریقه دیگر آدرسدهی را طرح کرد بنام Real Mode .
این نوع آدرسدهی با سایر نرمافزارهای قبل سازگاری داشت ولی متذسفانه در هنگام کار با این نوع آدرسدهی یعنی Real moed ، 386 و (486) بیش از یک 8086 خیلی سریع عمل نمیکند.
DOS که در مقابل محدودیتهای 8086 و 8088 نوشته شده بود، هنوز بسیار شبیه نسخه سریع حد خود در سال 1981 با تمام محدودیتهای آدرسدهی عمل میکنند.
دو طریق آدرس دهی حافظه: Real Mode : یک طریقه آدرسدهی حافظه است که از آدرسدهی نوع تقسیمبندی حافظه یعنی همان segment & offset استفاده میکنند.
ماننده پردازنده INTEL 8086.
Protected Mode : یک طریقه دیگر آدرسدهی حافظه که برای دستیابی به بایت حافظه به جای segment & offset از آدرسدهی خطی استفاده میکند.
این نوع آدرسدهی مشخصات حفاظت سختافزاری که windows و windows NT آن را به کار گرفتهاند، فعال میکند.
windows NT برای تهیه آدرسدهی 32 بیتی واقعی Trune 32-bit addressing از آدرسدهی خطی 386 و 186 و پنتوم (INTELS586) و همچنین پردازنده pisk همچنون Mips و DigtalAlpha استفاده می کند.
قابل ذکر است که دیگر NT از سازگار بودن با DOS و windos 16بیتی صرفنظر می کند و دارای طرحی است بنام (viriul dos machine) که در این صورت این امکان را به ویندوز NT می دهد که بتواند در خواستهای Dos و windows16 بیتی را اجرا کند (بعدا در مورد VDM صحبت خواهیم کرد ) .
مزیت های آدرس دهی 32 بیتی : 1-توسعه نرم افزار با حذف قسمت بندی حافظ آسانتر و سریع تر می شود.
2- برنامه نویسان دیگر لآزم نیست حافظه مورد در خواستهایشان آشنا باشد .
3-کارسیستم باحذف سربارپردازشی که موردلزوم مدیریت حافظه است بهبود می یابد.یعنی در هیچ گونه نیازی به حافظه ثالثی ندارد.رهایی از مدیریت حافظه سازگاریهای NT واقع ویندوز مختلف سخت افزار ونرم افزار را نیزحذفمی کندیعنی وضعیت استقرارنرم افزار می تواند ساده و 16 بیتی باشد WindowsیاDos ابتدایی تر از 4- میزان برنامه قابل دسترسی و اندازه داده در آدرس دهی 32 بیتی زیاد می شود.
ویندوز NT از ترکیب برنامه و سیستم با اندازه چهار گیگا با یت که صدها برابر بزرگتر از حدودقابل اجرا روی بر نامه های DOS و ویندوز 16 بیتی تشکیل شده است .
فایلهای بزرگ که توسط ویندوز NT قابل پردازش می باشد غیر ممکن است که توسط DOS ویاwindos16 بیتی پردازش شوددر خواست کننده های (در خواستهای ) پیچیده که فایلهای بزرگ را پردازش میکنند فقط با ویندوز NT عمل می کندو آن هم فقط به دلیل آدرس دهی 32 بیتی است .
در خواستهای پیچیده همچون رزرواسیون، مبادله دارایی وسیستمهای پردازش طلبهای بیمه است از دیگر خصوصیات کلیدی ویندوز NT ،حافظه مجازی و یا VM است که در زیر توضیح می دهیم .
2-VIRTUAL MEMORY (حافظه مجازی) هر در خواست در ویندوز NT میتواند به 4 گیگا بایت حافظه دست پیدا کند (به خاطر فضای 32 بیتی ) که البته از مقدار تصور شده برای هر در خواست بیشتر است .
دو نوع حافظه اصلی کامپیوتر به شرح زیر است : RAM :RAM یا حافظه تصادفی (حافظه دسترسی تصادفی ) از نوع دیگر سریعتر است .
مزیتهای آن به شرح زیر است : 1-PC برای اینکه بتوانند یک بایت داده را در 70 بیلیونیم ثانیه دریافت و بعد ذخیره کننداز RAM استفاده می کنند -برنامه ها به طور مستقیم می توانند به آدرس حافظه بروند و بایت مورد نظر خود را دریافت کنند درواقع بجای اینکه به بلاک مورد نظر در روی دیسک مراجعه کند و با یتها ی بلاک را بایت به بایت بخواند وبه بایت مورد نظر برسد می تواند به طور مستقیم به آدرس حافظه بروند .
ترجیحا استفاده از RAM را پیشنهاد می کنند.
عیوب استفاده ازRAM : 1 -در هنگام قطع برق تمام اطلاعات ذخیره شده در RAMاز بین می رود.این نوع حافظه را VOLATL STORAGE نامیده میشود .
در این جا قابل ذکر است که در بسیاری از کامپیوتر هایی که قابل حمل هستند هنگامی که کامپیوتر خاموش است مقداری برق به حافظه RAM کامپیوترمی رسدکه باعث می شود داده های ذخیره شده در آن از بین نرود و در هنگام تمام شدن باطری آن اطلاعات در آن با تمام شدن باطری از بین می رود.
2-عیب دیگر RAM ها در قیمت آن مشاهده می شودوآن نیزگران بودن قیمت RAMها است در واقع هر مگا بایت از RAM ها برای pc ها حدود 35 دلار فروخته می شود .
از روی این قیمت می تواند تعداد RAMهایی که در یک pc می توان نصب کردرا حدس زد .اصولا به pc های kigh-end 8 مگا بایت RAM وصل می شود و این مقدار را خیلی ها می توانند تا 20 مگابایت افزایش دهند و بعضی نیز این مقدار را به 64 مگابایت میرسانند .برای این امر به RAM با چگالی بالا تری نیاز است که قیمت آن به ازای هر مگابایت افزایش می یابد ولی فضای فیزیکی کمتری را اشغال میکند نوع دیگر حافظه اصلی در کامپیوتر hard disk است که در زیر شرح داده شده است :(نوع دیگر حافظه Mass storage ها هستند که روی hard disk سواری می شوند.
Mass STORAGE :HARD DISK همان طور که در بالا گرفته شده نوع دیگر حافظه اصلی Mass storage ها هستند که بر رویhard disk سوار می شوندhard disk ها به مراتب کند تر از RAM ها هستند .
از نظر قابلیت ذخیره سازی hard disk ها از 40 مگا بایت تا حدود 2 گیگا بایت قابلیت ذخیره سازی دارند .
از نظر قیمت هم یک pc hard 200 مگابایتی تقریبا 400 دلار ویا به عبارتی دو دلار به ازای هر مگا بایت می باشد که در مقایسه با قیمت RAM که در حدود قیمت یک مگا بایت RAM است .
در هنگام قطع برق محتویات hard ها از بین نمی رود به این گونه حافظه Nonvolatile storage می شود .
استفاده از هر دو نوع حافظه برای pc ضروری به نظر می رسد.از RAM برای برنامه های اجرایی و ذخیره.
دادههای حساس هنگامی که اجرا ضروریست استفاذه می شود واز hard disk برای ذخیره طولانی اطلاعات در زمانی که قیمت به ازای هر بایت مهم می باشد، استفاده میشود .
در این جا یک سئوالی که پیش می آید این است که اگر به بیش از RAM قابل ذسترسی نیاز پیدا کردیم چه می کنیم؟مثلآ فرض کنید که یک برنامهspreed sheet به دو مگا بایت وRAM ویک فایل spreed sheetکه به دو مگا بایت احتیاج دارد داشته باشیم .
این سئوال پیش می آید که آیا فقط به همین 4 مگابایت نیاز داریم ؟
خود سیستم عامل به مقداری زیاد 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 بکار برده می شود.
در زیر دو وظیفه مهم مدیر حافظه مجازی را بررسی می کنیم: 1-مدیریت داده ذخیره شده بر روی دیسک وانتقال آدرس داده های روی پایه دیسک به فضای آدرس دهی 32 بیتی ویندوز NT .در خواست میتواند عملیاتی را بر روی داده انجام دهد بدون اینکه توجه به این داشته باشد که داده از نظر فیزیکی درکجا قرارگرفته است.یعنی میتواند عملآیاتی را برروی داده درفضای حافظه مجازی انجام دهد 2-در ویندوز NT هنگامی که بخواهند از RAM بیشتر از آنچه که در دسترس است استفاده کنند این مدیریت حافظه مجازی است که قسمتی ازRAM رابه swap file منتقل می کندتا اینکه فضایی برای داده های لازم باز کند و در زمان لازم دوباره بهRAM بازگردانده می شود .برای جلوگیری از هدر رفتن زمان ،به جای اینکه داده ها بایت به بایت از RAM به ذیسک ویا از دیسک به RAM منتقل شوند ،این انتقال به این صورت است که داده های به صورت4kilopages منتقل می شوند نه بایت به بایت.برنامه درخواستی لزومی نداردکه چیزی در مورد پردازش swaping بداند swaping تکرار شونده روی پاسخ خرابی سیستم وهمچنین روی فعالیتهای سنگین دیسک تاثیر گذار است .
برنامه ای که یک فایل راروی فضای آدرس دهی مجازی ویندوزطNT مورد پردازش قرار می دهد(روی هارد )از نظر سرعت خیلی کند تر از برنامه ای است که از دادها در داخل RAM استفاده میکند .یعنی برنامه اولی از برنامه دومی کندتر اجرا می شود .مدیریت حافظه مجازی برای این طرحی که در فایلهای داده ای خیلی بزرگتر و سیستمهای چند برنامه ای از به وجود آمدنswaping ها خیلی ضروری جلو گیری کند ولی در واقع میزان کار به مقدار RAM قابل دسترس بستگی دارد یعنی هر چه مقدار RAM قابل دسترس بیشترباشد کار کلی بیشتراست ویندوز 16 بیتی هم نیز از حافظه مجازی استفاده می کند ولی در طرز کار آن در ویندوز NT پیچیده تر است .اندازه فضای swap حافظه مجازی در ویندوز 16 بیتی وابسته به مقدار RAMقابل دسترس است وتا تقریبا اندازه 30 مگا بایت مجاز است .این نکته قابل ذکر است که اگر کارتصمیم به حذف swap file ها با خاموش کردن حافظه مجازی بگیرد،و به این ترتیب در خواستهای بزرگتری را انجام دهد ،بهswap file این نیاز نیست .
این حدود اندازه swap file در ویندوز 16 بیتی برایtop disk desk ها (desk top pc ) ها مناسب میباشد .اگر مقدار ram دسترس پذیر شما در حدود 32 مگا بایت یا بیشتر باشد ،کمترین مقدارswap فضای یکdiskرا اشغال میکنددرحالی که30مگابایت از فضایseap برای بسیاری تزدز خواستهایRAMبسیار کم است .ولی ویندوز NT این خصوصیت را دارد که شما هر مقدار swap (زیاد وکم )که نیازدارد ،اختصاص دهید .
ولی این موضوع هم هست که حافظه مجازی نمی تواند جوابگوی تمام مشکلات با شد .این امکان را می دهد (حافظه مجازی )که با مقداریRAM محدود برنامه های بزرگ را پردازش کنیم ولی بدون توجه به سرعت پردازش آن یعنی ممکن است سرعت پردازش خیلی کم باشد .در هنگام کار با ویندوز NTهنگامی که حافظه مجازی مشغول مبادلهdata بهhard ازRAM بهhard ویا بالعکس است.توجه داشته باشیدکه به محض پایین آمدن کارایی سیستم ،به RAM اضافه کنیم.البته ممکن است که با اضافه کردن hard سریعتر به اصلاحاتی دست یابیم ولی مزایای بالا بردن مقدار دیسک سریعتر قابل مقایسه با اضافه کردن RAM نمی باشد .از دیگر خصوصیات (خصوصیت سوم) در زیر توضیح داده می شود .
3-PREEMPTIVE MULTITASKING این خصوصیت به معنا ی چند کاره بودن یعنی قابلیت چند کاره بودن کامپیوتر برای انجام یک سری عملیات در واحد زمان است.این عملیات،اجرای برنامه ویا پردازش یک برنامه و یا به تمام رساندن یک کار ، می تواند باشد .درNT برنامه وپردازش ها از اجرایی به نامthread تشکیل شده اند که بعد در مورد آنها بحث می شود .
THREAD معمولا قسمتی از پردازش به عهده سیستم عامل است که سیستم عامل آن را اجرا می کند که به آن قسمت thrad گفته می شود .
یک thred نمی تواند متعلق به چند پردازش باشد ولی یک پردازش می تواند چند thread داشته باشد و می توانند به وسیله طرحی چند thread را به طور همزمان اجرا کند.
حال می خواهیم ببینیم مفهومmultiasking یعنی چه و برای چه کاری است؟برای اینکه به این مفهوم بیشتر آشنا بشوم قبل از هر توضیحی اشاره به مثالی می کنیم .می دانیم که نوشتن یک document کارراحتی است.هنگامی که داریم باDOS کارمی کنیم وبخواهیم ازنوشته پرینت تهیه کنیم قبل ازانجام هر کاری بایست فرمها،نوع قلم،کدهای خاص را به کدها یی قابل فهم برای .چابگرتبدیل کنیم سپس سیستم را اندازه فایل را که می داند چاپگر توانایی تحمل آن را دارد به چابگر می فرستد.
چاپگر و سیستم عامل انقدر به تبادل اطلاعات ادامه می دهندکه تمام فایل به چاپگرفرستاده شود .در حین تبادل اطلاعات بین چابگر و سیستم عامل ،دیگر ما به عنوان یک کاربر هیچ کار دیگری نمی توانیم با کامپیوترانجام دهیم .وجود یک سیستم multitasking است که در اینجا لازم دیده می شود در واقعmultitasking این اجازه را به کاربرمی دهدکه همزمان با ارسال اطلاعات به چابگر ،بتواند عملیات دیگری بر روی کامپیوتر انجام دهد همانطور که میدانیم پردازنده در هر زمان فقط یک کار را انجام می دهد ولی این کارها سریع تغییروضعیت می دهد که به نظرمی آید در هرزمان بیش ازیک کارانجام می شود.مثل دیگری که برای فهم بهتر multitasking می شود زد ،در مورد فیلم است .اگر ما یک حلقه فیلم را جلوی نور بگیریم می بینم از تعدادی تصویر و عکس ثابت تشکیل شده است ولی آن را با یک پروژکتور به صورت 24 تصویر در ثانیه نمایش دهند ما همان تصویرهای ثابت رابه صورت یک فیلم متحرک می بینیم و برای ما غیر باور است که فکر کنیم آن همان عکسهای ثابت است که به صورت فیلم درآمده است .یک multitasking انعطاف پذیر خوب همانند این فیلم دنباله دار ومتحرک به نظر می آید .
در هنگام اجرای هر thread ، کنترل تمام کامپیوتر بدست آنها می افتد ولی در بعضی اوقات سیستم عامل می آید این thread و اطلاعات ضروری برای سیستم را به محلی که مشابه swap شرح شده در قبل می باشد ، انتقال دهد و thread دیگر بداخل فرستاده می شود و اجراو سپس به خارج فرستاده می شود این عمل این قدر سریع انجام می شودکه کاربر احساس می کند thread ها با هم در یک زمان اجرا می گردد .
دو نوع multitasking وجود دارد که اول آنها را نام برده سپس شرحمی دهیم .
1-preemptive 2- nonpreemptive nonpreemptive : دراین نوع multitasking ، قبل از جایگزین یک thread در حال اجرا با thread دیگر thread مشخص می کند که چه مدت زمان کار دارد .
Preemptive multitasking : هر thread برایش مقدار ثابتی زمان مشخص می شود تا در این زمان ثابت کار خود را انجام دهند که به این زمانtimeslice گفته می شود.وقتی که یکthread زمانtime slic اش تمام شد موظف است که به خارج انتقال یابد.
مسئله دیگری هم که است مسئله حق تقدم است یعنی یک thread با اولویت بالا میتواند جلوی اجرای thread با اولویت پایین تر را بگیرد.در عوض ویندوزNT که ازpreemptive استفاده می کند ویندوز 16 بیتی از multitasking از نوع nonpreemptive استفاده می کنیم .
مقایسه nonpreemptive و Preemptive : در nonpreemptive هر در خواست برای اجرای در خواستهای دیگر ناچاربه رها کردن کنترل پردازنده است که البته در مدل Preemptive دیگر به این صورت نیست بلکه سیستم عامل خود به طور اتوماتیک موقتا کنار کذاشته ودر خواستهای مورد لزوم برای کار،سرویس داده می شود .همان طور که در بالا گفته شدویندوز 16بیتی ازnonpreemptive استفاده می کند به نام cooperative.دراین سیستمcooperative هردرخواستی برای اجرای درخواست دیگر کنترل پردازنده را رها می کند.
در یک سیستم nonpreemptive ،در حالی که یک thread خودش دارد اجرا می شود هیچ thread دیگری نمی تواند کامپیوتر را در اختیار گیرد.
ولی در Preemptive اگر مدت زمان لازم برای هر thread X باشد برای دو thread دو برابر این مقدار ،برای سه thread سه برابر این مقدار و …می باشد .
به علاوه threadهای با اولویت بالاتر می توانند بر thread ها با اولویت پایین تر تقدم یابند .
برای فهمیدن بهتر مفهوم Preemptive و nonpreemptive به مثالی جوع می کنیم : در این مدلها multitasking می توانیم پردازنده را مانند یک راهداری در جاده در نظر بگیریم .در یک سیستم Preemptive ، هر ماشینی زمانی که صرف ورود به راهدار وپول دادن و خروج می کند،برای هر ماشین یکسان است .
مثال آ یک ماشین ،که حدودا دهمین ماشین است میتواند تخمین بزند که چه زمان دیگر نوبت او می رسد .(مثل سیستم عامل ویندوز (NT ولی در سیستم nonpreemptive دیگر این طور نیست یعنی فقط هر ماشین با ورود به راهداری می تواند تخمین بزند که چه مقدار کار دارد دیگر ماشینی که در صف ماشین های است نمی تواند تخمین بزند که کی و چه زمانی نوبت او فرا می رسد.
حال برای اینکه بفهمیم که سیستم nonpreemptive سست است مثالی میزنیم : در ویندوز 16بیتی مدیریت چاپ برای مسیر دهی ducument ها به چاپگر استفاده می شود .
به این ترتیب که مدیریت چاپ همواره با چاپگر دررابطه است که در صورت بیکاربودنducumentهارا منتقل کنددر غیر این صورت روی فضای hard ذخیره کند.در طی این اعمال کنترل به کاربر این قدر سریع انجام میشود که کاردیگری نمی تواند انجام دهد.ولی به صورت تئوری کارانتقال کنترل به کاربراین قدرسریع انجام می شود که کاربر به نظر می رسدکه دفعتآ کار کنترل را به عهده می تواند بگیرد.
ولی در واقعیت حدود چند ثانیه ای طول می کشد.
ولی در Preemptive کاربر،براستی و واقعآ دفعتآ کنترل را به دست می گیرد .چون فعالیتهای کاربر دارای حق تقدم بالاتری است در نتیجه کنترول به او واگذار می شود .
حال می پردازیم به خصوصیات ذیگر سیستم عامل ویندوز NT بنام symmetric multipocess (چند پردازشگر متقارن ) 4- 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 اطمینان کامل کسب کند.
ما دو نوع سیستم عامل چند پردازنده داریم :1-متقارن 2- نا متقارن در سیستم عامل چند پردازنده از نوع متقارن ،سیستمهای متقارن روی یک پردازنده انحصاری اجرا می شوند و سایر کارهای سیستم عامل روی دیگر پردازنده ها اجرا می شود .تمام ورودی خروجی هاI/O) ) توسط پردازنده اجرا کننده سیستم عامل ، مدیریت می شود .سیستمهای متقارن ،سیستم عامل را روی یک پردازنده از پردازندها اجرا می کنند .
ویندوز NT از یک مدل پردازنده متقارن استفاده منی کند .سیستمهای متقارن در مقایسه با سیتمهای چند پردازندهنامتقارن که به یک پردازنده فرمان می دهند که سیستم عامل رااجرا کند ، سیستمهای متقارن قابل اطمینان بیشتری دارند چرا که برای خرابی یک پردازنده واحد بر خلاف بهم ریختن تمام سیستم است.
مزیتهاو عیوب سیستمها ی چند پرداشی نا متقارن : اولین مزیت این است که راحتتربه انجام می رسد .
برای افزایش در خواست ویا کارها تعداد زیادی پردازنده خادم اضافه می کنیم.این سیستمها RAM را در اختیار هر پردازنده قرار می دهدو برای درستی و یا بادرستی داده این کار انجام می شود .پردازنده پایه ممکن است برای حمایت پردازنده های دیگر احتیاج به تغییراتی داشته باشد .
معایب سیستم های متقارن : از بز رگترین عیوب این است که شدیدا در معرض شکستن هستند یعنی خطر شکستن برای آنها وجود دارد .اگر یکی از پردازنده های خادم خراب شود پردازنده مخدوم می تواند کارها را بین پردازنده های باقیمانده تقسیم کند وشیفت دهد وبه این ترتیب سیستم را سر پا نگه می داردولآی اگر پردازنده مخدوم خراب شود متوقف می شود و در واقع تنها کپی سیستم عامل متوقف میشود وتمام دستگاههای I/Oکه توسط سیستم عامل کنترل می شوند ،غیر قابل دسترس می شوند.
پردازنده خادم هنگام افزایش درخواست در سیستم عامل، میتواند دچار اشکال شود .در زمان اتفاق این حالت کار سیستم کند می شود حتی زمانی که بعضی از مخدوم ها کمی ظرفیت داشته باشند .
کار با سیستمهای متقارن مشکل است چون فضای زیادی از حافضه را اشغال کرده است در نتیجه برای درستی ویا نا درستی داده نیاز به سیستم محافظ بیشتری دارد .
سیستم عامل بایدبتواند به طورهمرمان روی چند پردازنده اجرا شود بدون اینکه روی خودش بلغزد و باید بتواند در حال اجرا شدن روی هرپردازنده ای،هر پردازنده خراب ویا از کار افتاده ای به خارج بفرستد .
مزایای سیستمهای متقارن : 1-کارایی بیشتری دارند برای اینکه هم سیستم عامل و برنامه های کاربر میتوانند بین پردازنده ها تقسیم شود .
امکان اینکه پردازنده ای مشغول باشد وپردازنده ای بیکار مانده باشد وجود ندارد چرا که در خواستها بین تمام پردازنده ها تقسیسم می شود .
2-قابل اطمنان تر هستند چرا که خرابی یک پردازنده موجب از کار افتادن تمام سیستم نمی شود .
آنها وابسته به 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 است که در صفحه بعد توضیحات آن داده خواهد شد.