اصـــول طراحــــی سیـستـم های عـــامل
با سلام خدمت تمامی دوستان عزیز
مطالبی که در این تاپیک با عنوان طراحی سیستم های عامل می گذارم خانم نرگس شکری تهیه و تدوین کرده اند . من این مطالب را برای استفاده دانشجویان به تدریج در سایت خواهم گذاشت .
منبع :
باتشـــکر
موفق باشید .
مديريت حافظه و فضای ذخيره سازی
سيستم عامل در رابطه با مديريت حافظه دو عمليات اساسی را انجام خواهد داد :
1- هر پردازه بمنظور اجراء می بايست دارای حافظه مورد نياز و اختصاصی خود باشد.
2- از انواع متفاوتی حافظه در سيستم استفاده تا هر پردازه قادر به اجراء با بالاترين سطح کارآئی باشد.
سیستم های عامل در ابتدا می بايست محدوده های حافظه مورد نياز هر نوع نرم افزار و برنامه های خاص را فراهم نمايند. مثلاً فرض کنید،سيستمی دارای يک مگابايت حافظه اصلی باشد.
سيستم عامل کامپيوتر فرضی، نيازمند 300 کيلو بايت حافظه است سيستم عامل در بخش انتهائی حافظه مستقر و به همراه خود درايورهای مورد نياز بمنظور کنترل سخت افزار را نيز مستقر خواهد کرد درايورهای مورد نظر به 200 کيلو بايت حافظه نياز خواهند داشت. بنابراين پس از استقرار سيستم عامل بطور کامل در حافظه، 500 کيلو بايت حافظه باقيمانده و از آن برای پردازش برنامه های کاربردی استفاده خواهد شد.
زماني که برنامه های کاربردی در حافظه مستقر می گردند، سازماندهی آنها در حافظه بر اساس بلاک هائی خواهد بود که اندازه آنها توسط سيستم عامل مشخص خواهد شد. در صورتيکه اندازه هر بلاک 2 کيلوبايت باشد، هر يک ازبرنامه های کاربردی که در حافظه مستقر می گردنند، تعداد زيادی از بلاک های فوق را (مضربی از دو خواهد بود)، بخود اختصاص خواهند داد. برنامه ها در بلاک هائی با طول ثابت مستقر می گردند.
هر بلاک دارای محدوده های خاص خود بوده که توسط کلمات چهار و يا هشت بايت ايجاد خواهند شد. بلاک ها ومحدوده های فوق اين اطمينان را بوجود خواهند آورد که برنامه ها در محدوده های متداخل مستقر نخواهند شد.
پس از پر شدن فضای 500 کيلوبايت اختصاصی برای برنامه های کاربردی، وضعيت سيستم به چه صورت تبديل خواهد گردید؟در اغلب کامپيوترها،میتوان ظرفيت حافظه را ارتقاء و افزايش داد.
مثلاً RAM موجود را از يک مگابايت می توان ميزان حافظه به دو مگابايت ارتقاء داد. روش فوق يک راهکار فيزيکی برای افزايش حافظه بوده که در برخی موارد دارای چالش های خاص خود می باشد.
در اين زمينه می بايست راهکارهای ديگر نيز مورد بررسی قرار گيرند. اغلب اطلاعات ذخيره شده توسط برنامه ها در حافظه، در تمام لحظات مورد نياز نخواهد بود. پردازنده در هر لحظه قادر به دستيابی به يک محل خاص از حافظه است. بنابراين اکثر حجم حافظه در اغلب اوقات غير قابل استفاده است.
از طرف ديگر با توجه به اينکه فضای ذخيره سازی حافظه ها ی جانبی نظير ديسک ها بمراتب ارزانتر نسبت به حافظه اصلی است،می توان با استفاده از مکانيزم هائی اطلاعات موجود در حافظه اصلی را خارج و آنها را موقتاً بر روی هارد ديسک ذخيره نمود.
بدين ترتيب فضای حافظه اصلی آزاد و در زماني که به اطلاعات ذخيره شده بر روی هارد ديسک نياز باشد، مجدداً آنها را در حافظه مستقر کرد. روش فوق " مديريت حافظه مجازی " ناميده می شود. حافطه های ذخيره سازی ديسکی، يکی از انواع متفاوت حافظه موجود بوده که می بايست توسط سيستم عامل مديريت گردد.
حافطه های با سرعت بالایCache، حافظه اصلی و حافظه های جانبی نمونه های ديگر ازحافظه بوده که توسط سيستم عامل مديريت می گردند.
ارتباط سيستم با دنيای خارج
اينترفيس برنامه ها
سيستم عامل در رابطه با اجرای برنامه های کامپيوتری خدمات فراوانی را ارائه می نمايد. برنامه نويسان و پياده کنندگان نرم افزار می توانند از امکانات فراهم شده توسط سيستم های عامل استفاده و بدون اينکه نگران و يا درگير جزئيات عمليات در سيستم باشند ، از خدمات مربوطه استفاده نمايند.
برنامه نويسان با استفاده از API ( Application program interface) قادر به استفاده از خدمات ارائه شده توسط ، سيستم های عامل در رابطه با طراحی و پياده سازی نرم افزار می باشند. در ادامه بمنظور بررسی جايگاه API به بررسی مثالی پرداخته خواهد شد که هدف ايجاد يک فايل بر روی هارد ديسک برای ذخيره سازی اطلاعات است .
برنامه نويس ، برنامه ای را نوشته که بکمک آن قادر به ذخيره سازی داده های ارسالی توسط يک دستگاه کنترل علمی است .سيستم عامل يک تابع API با نام MakeFile را بمنظور ايجاد فايل در اختيار برنامه نويس قرار می دهد. برنامه نويس در زمان نوشتن برنامه از دستوری مشابه زير استفاده می نمايد:
دستورالعمل فوق به سيستم عامل خواهد گفت که فايلی را ايجاد کند که شيوه دستيابی به داده های آن بصورت تصادفی دارای نام مشخص شده توسط کاربر و دارای طولی متغير است سيستم عامل دستور فوق را بصورت زير انجام خواهد داد:
- سيستم عامل درخواستی برای هارد ارسال تا اولين مکان آزاد قابل استفاده مشخص گردد.
- با توجه به اطلاعات ارسالی ، سيستم عامل يک - entry ،در سيستم فايل مربوطه ايجاد و ابتدا و انتهای فايل نام فايل ، نوع فايل ، تاريخ و زمان ايجاد فايل و ساير اطلاعات ضروری را ذخيره خواهد کرد.
- سيستم عامل اطلاعاتی را در ابتدای فايل بمنظور مشخص کردن فايل ، تنظيمات مربوط به شيوه دستيابی به فايل و ساير اطلاعات مورد نياز را خواهد نوشت.
در چنين حالتی برنامه نويس از تابع فوق برای ايجاد و ذخيره سازی فايل استفاده نموده و ضرورتی بر نوشتن کدها ، نوع داده ها و کدهای پاسخ برای هر نوع هارد ديسک نخواهد بود. سيستم عامل از امکانات درايورها استفاده و درايورها مسئول برقراری ارتباط با منابع سخت افزاری خواهند بود. در چنين حالتی برنامه نويس بسادگی از تابع مورد نظر استفاده و ادامه عمليات توسط سيستم عامل انجام خواهد شد.
امکانات ارائه شده توسط سيستم های عامل در قالب مجموعه ای از توابع و امکانات API يکی از موارد بسيار مهم استفاده از سيستم عامل از ديدگاه طراحان و پياده کنندگان نرم افزار است .
اينترفيس کاربر
API يک روش يکسان برای برنامه های کامپيوتری بمنظور استفاده از منابع موجود در يک سيستم کامپيوتری را فراهم می نمايد. بخش رابط کاربر (UI ) يک ساختار مناسب ارتباطی بين کاربر و کامپيوتر را فراهم ،می آورد. اکثر سيستم های عامل از رابط های گرافيکی در اين زمينه استفاده می نمايند.
بخش رابط کاربر هر سيستم عامل شامل يک و يا مجموعه ای از برنامه های کامپيوتری است که بصورت يک لايه در بالاترين سطح يک سيستم عامل و در ارتباط با کاربر مستقر می گردند.
برخی از سيستم های عامل از رابط های گرافيکی ( نظير ويندوز ) و برخی ديگر از رابط های مبتنی بر متن نظير سيستم عامل DOS استفاده می نمایند.
تطابق تکنیکهای سیستم عامل با نسل های کامپیوتر
در نسل اول کامپیوترها (55-1945) که از لامپ خلا برای ساخت آنها استفاده میشد,زبانهای برنامه نویسی حتی اسمبلی ابداع نشده بودند و سیستم عامل نیز اصلاً وجود نداشت . روند کار به این صورت بود که برنامه نویسان تنها در یک فاصله زمانی مشخص حق استفاده از کامپیوتر بزرگ و گران قیمت را داشتند.
آنها برنامههای خود را توسط تخته مدار سوراخدار (و بعدها توسط کارتهای پانچ ) و به زبان ماشین به کامپیوتر میدادند. اکثر برنامه ها محاسبات عددی معمولی مانند جداول سینوس و کسینوس بود.
- Batch system سیستم های دسته ای
Multi programming- سیستم های چند برنامه ای
Spooling- سیستم
Time sharing- سیستم اشتراک زمانی
-سیستم عاملهای کامپیوترهای شخصی و شبکه
Distributed system- سیستم های توزیع شده
Multi tasking- سیستم های چند وظیفه ای
Multi processing- سیستم های چند پردازنده ای
Real Time- سیستم های بلادرنگ
سیستم های دسته ای
در نسل دوم , کامپیوترها (65-1955) از ترانزیستور ساخته شدند. طریقه کار با این کامپیوترهای نسل دوم از طریق یک کنسول (Console) بود که تنها اپراتور مخصوص کامپیوتر با آن کار میکرد و کاربران به طور مستقیم با این کامپیوترها محاوره (interaction) نداشتند.
کاربر ابتدا برنامه خود را به زبان فرترن یا اسمبلی بر روی کاغذ مینوشت سپس توسط دستگاه card punch برنامه را ,روی کارت های سوراخدار منتقل ساخت.
بعد این دسته کارت تهیه شده که شامل برنامه, دادهها و کارتهای کنترل بود به صورت کار (Job) تحویل اپراتور داده می شد . اپراتور بعد از اتمام کار قبلی , دسته کارت جدید را به کامپیوتر میداد تا برنامه را اجراء کند در انتها خروجی برنامه (که غالباً چاپی بود) را به کاربر تحویل میداد سیستم عامل در این کامپیوترهای اولیه ساده بود و وظیفه اصلی آن انتقال کنترل اتوماتیک از یک کار به کار دیگری بود . سیستم عامل همواره مقیم در حافظه بود و در هر لحظه فقط یک برنامه اجراء میشد.
هنگامی که اپراتور مشغول گذاشتن نوارها یا برداشتن کاغذهای چاپ شده بود وقت زیادی از این کامپیوترهای گران قیمت به هدر میرفت . برای رفع مشکل فوق سیستمهای دستهای ابداع شد . یعنی ابتدا یک سبد پر از دسته کارتها در اتاق ورودی جمع آوری میشد , سپس کلیه آنها به وسیله دستگاه کارتخوان یک کامپیوتر کوچک و نسبتاً ارزان مثل IBM 1401 خوانده شده و بر روی یک نوار ذخیره میگردید. سپس اپراتور نوار را برداشته بر روی کامپیوتر اصلی و گران قیمت که محاسبات را انجام میداد مثل IBM7094 نصب میکرد . بعد از آن برنامهای را اجراء میکرد (یعنی سیستم عامل) .
تا اولین کار را از روی نوار برداشته و اجراء کند, خروجی بر روی نوار دیگری نوشته می شد. پس از اتمام هر کار سیستم عامل به صورت خودکار کار بعدی را از نوار میخواند. پس از اجراء همه برنامهها ,اپراتور نوار خروجی را برداشته و دوباره روی کامپیوتر IBM 1401 منتقل میساخت تا عملیات چاپ خروجی ها به صورت off line انجام شود.
به این روش کار offline spooling نیز گفته میشود. بیشتر برنامههای نسل دوم به زبان فرترن و اسمبلی برای محاسبات مهندسی و علمی مثل مشتقات جزئی به کار میرفت.
یکی از معایب روش offline- spooling زیاد بودن زمان برگشت( گردش ) ,(turnaround time)است یعنی تأخیر زمانی مابین تحویل کار و تکمیل کار. همچنین در این سیستم اولویت بندی به معنای واقعی وجود ندارد.
تنها روش بدست آوردن اولویت این بود که نوار کارهای مهم را ابتدا در ماشین اصلی قرار دهند. حتی در اینصورت هم باید چندین ساعت صبر میکردند تا خروجی ها ظاهر شوند. همچنین نیاز به سخت افزار اضافی (مثل کامپیوترهای1401) از دیگر معایب این روش بود.
سیستم عاملهای کامپیوترهای شخصی و شبکه
سیستم عاملهای کامپیوترهای شخصی و شبکه
ابداع (Large Scale Integrated Circuit) از سال 1980 تا کنون که مدارات مجتمع با مقیاس بزرگ شدند، به عنوان نسل چهارم کامپیوترها شناخته میشود. در این سالها کامپیوترهای شخصی با قیمتی ارزان و کارآیی بالا و محیط گرافیکی و محاورهای بسیار خوب به سرعت گسترش یافتند. سیستم عاملهای اولیه بر روی PCها مانند DOS فقط تک کاره و تک برنامهای بودند.
ولی سیستم عاملهای امروزی آن مانند windows NT خاصیتهای چند برنامگی، چند کاربره (multiuser) و شبکه ای را دارا هستند. با توجه به هزینه اندک سخت افزار اهداف سیستم عامل در طول زمان تغییر کرده و برای PCها به جای ماکزیمم کردن درصد استفاده CPU و وسایل جانبی ، سیستم به سمت راحتی کاربر پیش میرود.
به تدریج ویژگیهای مهم سیستم عاملهای قدیمی در کامپیوترهای بزرگ (مانند حفاظت حافظه ، حافظه مجازی, محافظت فایلها ، همزمانی پردازشها و...) بر روی سیستم های PC نیز پیاده سازی شده است .
هنگامی که کامپیوترها از طریق شبکه به هم وصل شوند. به آنها ایستگاههای کاری (Work stations) میگویند . در یک سیستم عامل شبکه , کاربران از وجود ماشین های مختلف در شبکه با خبرند. آنها میتوانند از دور وارد یک ماشین شوند و همچنین فایلهای یک ماشین را روی ماشین دیگر کپی کنند .
هر کامپیوتر سیستم عامل محلی خودش را اجراء میکند و کاربر یا کاربران محلی مخصوص به خود را دارد.
سیستم های توزیع شده
سیستم عامل توزیع شده در یک محیط شبکه ای اجراء میشود. در این سیستم قسمتهای مختلف برنامه کاربر بدون آنکه خود او متوجه شود میتوانند همزمان در چند کامپیوتر مجزا اجراء شده و سپس نتایج نهایی به کامپیوتر اصلی کاربر بر گردند.
کاربران نباید از این موضوع باخبر شوند که برنامه آنها در کجا به اجراء در میآید و یا فایلهای آنها در کجای شبکه قرار دارد و همه این کارها باید توسط سیستم عامل به صورت خودکار انجام گیرد . به عبارت دیگر سیستم باید از دید کاربر شفاف باشد و هرچیز را با نام آن فراخوانی کند و کاری به آدرس آن نداشته باشد
یکی از مزایای مهم سیستمهای توزیع شده سرعت بالای اجرای برنامههاست چرا که یک برنامه همزمان میتواند از چندین کامپیوتر برای اجراء شدنش استفاده کند .
همچنین به علت توزیع شدن اطلاعات, بانکهای اطلاعاتی حجیم میتوانند روی یکسری کامپیوترهای شبکه شده قرار بگیرند و لازم نیست که همه اطلاعات به یک کامپیوتر مرکزی فرستاده شود (که در نتیجه این نقل و انتقالات حجیم زمان زیادی به هدر میرود).
به علت تأخیرهای انتقال در شبکه و نویزهای احتمالی در خطوط انتقالی قابلیت اعتماد اجرای یک برنامه دریک سیستم تنها ، بیشتر از قابلیت اجرای آن دریک سیستم توزیع شده است .
همچنین درسیستم توزیع شده اگر یکی از کامپیوترهایی که وظیفه اصلی برنامه جاری را برعهده دارد خراب شود کل عمل سیستم مختل خواهد شد . از طرف دیگر اگر اطلاعاتی همزمان در چند کامپیوتر به صورت یکسان ذخیره گردد و یکی از کامپیوترها خراب شود، داده ها را میتوان از کامپیوترهای دیگر بازیابی کرد، از این نظر امنیت افزایش مییابد.
به سیستم های توزیع شده گاهی اوقات سیستمهای Loosely Coupled یا ارتباط ضعیف نیز میگویند,چرا که هر پردازنده کلاک و حافظه مستقلی دارد .
پردازندهها از طریق خطوط مخابراتی مختلفی مثل گذرگاههای سریع یا خطوط تلفن ارتباط دارند.
سیستم های چند پردازنده ای
کامپیوترها میتوانند به جای یک CPU چندین CPU داشته باشند که در اینصورت به آنها سیستم Multiprocessing میگویند.جهت استفاده از این سیستمها نیاز به یک سیستم عامل خاص میباشد که بتواند چندین برنامه (یانخهای یک فرایند ) را به صورت موازی واقعی روی آنها اجراء کند.
سیستم عامل multitasking برای اجراء چند نخ بر روی یک CPU و سیستم عامل multiprocessing برای اجرای چند نخ بر روی چند CPU به کار میروند. در سیستم چند پردازندهای CPU ها باید بتوانند از حافظه , امکانات ورودی و خروجی و گذرگاه Bus سیستم به صورت اشتراکی استفاده کنند .مزایای این سیتمها عبارتند از:
- زیاد شدن توان عملیاتی (throughput) :
منظور ازthroughput تعداد کارهایی است که در یک واحد زمانی تمام میشوند. بدیهی است هر چقدر تعداد پردازندهها بیشتر باشد تعداد کارهای تمام شده در یک پریود زمانی نیز بیشتر خواهد بود. البته این نسبت خطی نیست , مثلا اگر تعداد پردازنده ها nباشد سرعت اجراء برنامهها n برابر نمیشود چرا که بخشی از وقت پردازندهها جهت مسائل کنترلی و امنیتی وسوئیچ کردنها به هدر میرود.
- صرفه جویی در هزینهها :
از آنجا که پردازندهها منابع تغذیه , دیسکها ، حافظهها و ادوات جانبی را به صورت مشترک استفاده میکنند در هزینههای سخت افزاری صرفهجویی میشود.
- تحمل پذیری در برابر خطا(fault-tolerant):
سیستم های مالتی پروسسور قابلیت اعتماد را افزایش میدهند چرا که خرابی یک CPU سبب توقف سیستم نمیشود بلکه تنها سبب کند شدن آن خواهد شد.
(در مورد تحمل پذیری خطا مقاله دیگری نیز در سایت میکرورایانه موجود است آن را مطالعه کنید) استمرار عمل با وجود خرابی نیازمند مکانیزمی است که اجازه دهد خرابی جستجو شده , تشخیص داده شده و در صورت امکان اصلاح نیز بشود (یا کنار گذاشته شود).
این توانایی به ادامه سرویس , متناسب با سطح بقای سخت افزار ,تنزل مطبوع یا graceful degradation نامیده می شود.
سیستم های چند پردازنده ای
تقسیم بندی سیستم عاملهای چند پردازندهای
سیستم عاملهای چند پردازندهای به دو دسته کلی متقارن و نامتقارن تقسیم میشوند:
سیستم عامل سیستم چند پردازندهای نامتقارن
- در سیستم چند پردازندهای نامتقارن ( (Asymmetric Multi Processing = ASMP یک پردازنده جهت اجراء سیستم عامل و پردازندههای دیگر جهت اجرای برنامههای کاربران استفاده میشود. از آنجا که کد سیستم عامل تنها روی یک پروسسور اجراء میشود, ساخت این نوع سیستم عامل نسبتا ساده است و از تعمیم سیستم عامل تک پردازندهای به دست میآید.
این نوع سیستم عاملها برای اجراء روی سخت افزارهای نامتقارن مناسب هستند, مانند کمک پردازنده و پردازندهای که به هم متصل هستند یا دو پردازندهای که از تمام حافظهموجود مشترکا" استفاده نمیکنند.
یکی از معایب سیستم عامل نامتقارن غیر قابل حمل بودن (non-portable) آن است . یعنی برای سخت افزارهای مختلف باید سیستم عاملهای مختلفی نوشته شود چرا که نامتقارنی میتواند حالات مختلف داشته باشد.
سیستم های چند پردازنده ای
ویژگی ها و تفاوتها
سیستم عامل سیستم چند پردازندهای متقارن
- در سیستم چند پردازندهای متقارن (symmetric Multi Processing = ASMP) سیستم عامل میتواند روی هر یک از پروسسورهای آزاد یا روی تمام پردازندهها همزمان اجراء شود. در این حالت حافظه بین تمام آنها مشترک میباشد. تمام پردازندهها اعمال یکسانی را میتوانند انجام دهند.
سیستم متقارن از چند جنبه نسبت به نوع نامتقارن برتری دارد:
* از آنجا که سیستم عامل خود یک پردازش سنگین است اگر فقط روی یکCPUاجراء شود باعث میگردد که آن پردازنده همواره بار سنگینی داشته باشد, در حالیکه احتمالاً پردازندههای دیگر بی کار هستند لذا اجراء سیستم عامل روی چند پردازنده باعث متعادل شدن (balancing) بار سیستم میشود.
*در سیستم نامتقارن اگر پردازنده اجراء کننده سیستم عامل خراب شود کل سیستم خراب میشود ولی در سیستم متقارن از این نظر امینت بیشتر است چرا که اگر یک پردازنده از کار بیفتد سیستم عامل میتواند روی پردازندههای دیگر اجراء شود.
*بر عکس سیستم عامل نامتقارن , سیستم عامل قابل حمل ( portable) بر روی سیستم های سخت افزاری مختلف است.
سیستم عامل SUNOS ورژن 4 از نوع نامتقارن و سیستم عامل Solaris2 و همچنین windows NT از نوع متقارن میباشند.
وجود پردازندههای متعدد از دید کاربر مخفی است و زمانبندی نخها (Thread) یا فرآیندها (process) رویهر یک از پردازندهها به عهده سیستم عامل است . گرچه multithreading و multiprocessing امکانات مستقلی هستند ولی معمولاً با هم پیاده سازی میشوند. حتی در یک ماشین تک پردازندهای , چند نخی کارایی را افزایش میدهد. همچنین ماشین چند پردازندهای حتی برای فرآیندهای غیر نخی هم کارآمد است.
گاهی اوقات به سیستمهای چند پردازندهای ,سیستمهای Tightly Coupled یا ارتباط محکم نیز گفته میشود چرا که پردازندهها کلاک (Clock) ، گذرگاه و همچنین حافظه مشترکی دارند.
انواع سیستم عامل از نظر ساختار
دسترسی به سخت افزار ممکن نیست مگر از طریق سیستم عامل
انواع سیستم عامل از لحاظ ساختار عبارتند از :
- تکنیک سیستم یکپارچه
- تکنیک سیستم لایه ای
- سیستم مجازی در سیستم عامل (ماشین مجازی)
سیستم مشتری – خدمتگزار (client / server )
تکنیک سیستم یکپارچه
سیستمهای تجاری زیادی وجود دارند که ساختار خوش تعریفی ندارند. اغلب این سیستم عاملهابه عنوان سیستم های کوچک و محدودی شروع شدهاند و سپس به تدریج ورای دید اولیه طراحان گسترش یافتهاند
سیستم عامل DOS از این دسته می باشد.
سیستم عامل به صورت یک مجموعه از رویهها نوشته شده است که هر یک از آنها میتوانند دیگری را به هنگام نیاز فراخوانی کنند . برای مخفی کردن اطلاعات امکاناتی وجود ندارد و هر رویه برای دیگر رویهها قابل مشاهده است
مثلاً در MS-DOS واسطهها و سطوح عملیاتی به خوبی مجزا نشدهاند و برنامههای کاربردی میتوانند مستقیماً به توابع ROM BIOS و یا حتی پورت دستگاههای مختلف (مثل هارد دیسک ) دسترسی پیدا کنند لذا به راحتی میتوان برنامههای مخرب زیادی تحت DOS پدید آورد.
کثر CPU ها دارای دو مد کاری هستند مد هسته که مخصوص سیستم عامل است و در آن تمامی دستورالعملها مجاز میباشد و دیگری مد کاربر است که مخصوص برنامههای کاربران بوده ودر آن دستورات I/Oو دستورالعملهای معین دیگری مجاز نمیباشند .
سیستم عامل DOS توسط سخت افزار زمان خود ( پردازنده 8088) محدود بوده است چرا که این پردازنده فقط در یک مد کار میکند و تمام دستورات در آن مجاز میباشد ولی پردازنده386 دارای مدهای مختلفی است که سیستم عامل ویندوز از آن به خوبی استفاده میکند .
برنامه ی کاربردی یکی از فراخوانهای سیستمی (توابع سیستم عامل) را صدا میزند . در این حال ماشین از مد کاربر (user mode) به مد هسته (kernel mode) تغییر حالت میدهد و کنترل به سیستم عامل سپرده میشود .سیستم عامل با توجه به پارامترهای تابع مذکور تعیین میکند کدام فراخوان سیستمی باید اجراء شود سپس سیستم عامل به جدولی رجوع میکند که در ردیف k ام آن جدول یک اشارهگر به رویه اجراء کننده فراخوان سیستمی وجود دارد..سپس آن روتین اجراء شده و در انتها کنترل به برنامه کاربر بر می گردد