مقدمه اي به سيستم هاي عامل
در پروژه بعدي شما پشتيباني مناسب براي چند برنامه نويسي را طراحي و اجرا خواهيد كرد. شما فرمان هاي سيستم را طوري توسعه خواهيد داد كه اصول ارتباط درون فرايندي و مديريت فرايند را انجام دهد. شما اين را به پروژه اول داراي كد مي افزاييد. اطمينان حاصل كه قبل از شروع پروژه دوم تمام نواقص در پروژه اول را اصلاح كرده ايد. اين راه حل براي پروژه يك به عنوان بخشي از جلسه هفته بعد مورد بررسي قرار خواهد گرفت.
ناكوس در حال حاضر يك محيط تك برنامه نويسي است. ما مجبوريم ناكوس را تغيير دهيم به طوري كه هر فرايند در مسير سيستم خود حفظ شوند. ما بايد تخصيص حافظه و واپس گيري آن توجه داشته باشيم. هم چنين تمام داده ها و وابستگي هاي همزمان سازي بين رشته ها را مد نظر قرار مي دهيم. شما ابتدا قبل از كد گذاري راه حل را طراحي ميكنيد جزئيات در زير آورد است:
1- استثنائات كلي (استثنائات تماس غير سيستمي) براي به اتمام رساندن رشته به جاي متوقف كردن سيستم را تغيير دهيد. اين كار مهم خواهد بود زيرا يك استثناي زمان اجرا نبايد باعث شود كه سيستم عامل خاموش شود. قبل از تكميل پروژه احتمالاًمجبور خواهيد بود كه چندين بار به اين كد سر بزنيد. چند موضوع مربوط به همزمان سازي وجود دارد كه بايد در طي خروج از رشته به آن ها بپردازيد.
2- چند برنامه نويسي را اجرا كنيد. كدي كه به شما داده ايم محدود به اجراي يك برنامه كاربرد در هر بار مي باشد. براي تغيير سيستم از تك برنامه نويسي به چند برنامه نويسي بايد چند تغيير در addrspace.h و addrspace.cc انجام دهيد. بايد كارهاي زير را انجام دهيد: الف) به شيوه اي براي تخصيص فريم هاي حافظه فيزيكي برسيد به طوري كه چندين برنامه را بتوان به يكباره در حافظه بارگذاري كرد.
ب) شيوه اي براي كپي كردن داده ها به هسته يا از هسته و از فضاي آدرس مجازي كاربر يا به آن فراهم كنيد.
ج) وقتي يك برنامه كاربر پايان مييابد به طور مناسبآزادسازي فضاي آدرس انجام شود.
د) تغيير الگوريتم بارگذار برنامه كاربر به طوري كه فريم هاي اطلاعاتي را جابجا كند بسيار مهم است. در حال حاضر تخصيص فضاي حافظه با اين فرض است كه يك فرايند در يك بخش مجاور حافظه بارگذاري شده است. وقتي چند برنامه نويسي فعال شد، حافظه ديگر ماهيتاً مجاور محسوب نمي شود اگر برنامه را اصلاح نكنيد احتمال دارد كه بارگذاري ديگر برنامه كاربر سيستم عامل را خراب كند.
3- فرمان سيستم space id exec (char*name) را اجرا كنيد. Exec يك برنامه كاربر جديد مشخص شده در نام پارامتر، اجرا شده در درون يك رشته سيستم جديد را شروع مي كند. شما بايد كاركرد start process در progtest.cc را بررسي كنيد تا دريابيد كه چگونه فضاي كاربر در درون يك رشته سيستم را ايجاد كنيد. Exec بايد در هنگام خطا 1- را برگرداند در غير اين صورت بايد “process space id” برنامه سطح كاربري كه ايجاد كرده است را برگرداند (نكته: space id ها مي تواند به شيوه اي مشابه با open file id هاي پروژه 1 شما پيگيري شود با اين استثنا كه ممكن است بخواهيد در خارج از رشته ان ها را دنبال كنيد).
4- فرمان هاي سيستم int join (space ID id) و void exit (int exit code) را اجرا كنيد. Join آن طور كه در پارامتر آن ذكر شده است منتظر مانده و يك process space id را مسدود مي كند. exit يك خروج را بر هر كسي كه كار اتصال انجام مي دهد بر مي گرداند اگر يك برنامه به طور موفقيت آميزي تكميل شود كد خروج صفر است و اگر خطا وجود داشته باشد مقدار ديگري مي شود. پارامتر كد خروج از طريق پارامتر exit code تعيين مي شود. اگر اتصال با خطا مواجه شود join كد خروج براي فرايندي كه مسدود مي كند را 1- تعيين مي كند. يك برنامه كاربر فقط مي تواند به فرايندهايي بپيوندند كه به طور مستقيم به وسيله فرمان سيستم exec ايجاد شده باشد. مي توانيد به فرايندهاي ديگر يا به خودتان متصل شويد. شما مجبور خواهيد بود تا از راهنماهاي درون فرمان هاي سيستم خود براي هماهنگ كردن فرايندهاي كاربر joining و exiting استفاده كنيد. مشاهده خواهيد كرد كه اين را مي توان به عنوان ويرايشگر ساكنipc (ارتباط درون فرايندي) الگوسازي كرد.
5- فرمان سيستم int creates semaphore (char*name, int semval) را اجرا كنيد. از فرمان سيستم حذف كه در پروژه اجرا كرده ايد درخواهيد يافت كه ما مجبور خواهيم بود تا start.c و syscall.h را روزامد كنيم تا امضاهاي فرمان سيستم جديد بيفزاييم. شما يك ظرف در سطح سيستم ايجاد خواهيد كرد كه مي تواند تا 10 راهنماي نام گذاري شده را در خود جاي بدهد. در هنگام موفقيت سيستم create semaphore عدد صفر و در هنگام خطا عدد 1- را بر مي گرداند. اگر نقاط آزاد كافي در ظرف وجود نداشته باشد فرمان سيستم create semaphore خطا خواهد شد، نام تهي بوده و يا مقدار اوليه راهنما كمتر از صفر مي باشد.
6- فرمان هاي سيستم int wait (char *name) و int signal (char *name) را اجرا كنيد. پارامتر اسم نام راهنما مي باشد. هردو فرمان سيستم در هنگام موفقيت صفر و در هنگام خطا 1- را بر مي گرداند. اگر كاربر يك نام راهنما غير قانوني (نامي كه ايجاد نشده است) را بدهد خطا مي تواند اتفاق بيفتد.
7- يك برنامه واسطه ساده براي امتحان فرمان هاي سيستم جديد اجرا شده به صورت بالا را اجرا كنيد. برنامه واسطه بايد در هر بار يك دستور بگيرد و برنامه كاربرمناسب را اجرا كند. برنامه واسطه بايد در هر برنامه “exec”ed را متصل كند و منتظر خروج برنامه بماند. در هنگام برگشت از join ، كد خروج را در صورتيكه غير صفر باشد (اجراي طبيعي) چاپ كنيد. هم چنين برنامه واسطه را طوري طراحي كنيد كه بتواند در پس زمينه برنامه اجرا كند. هر دستور شروع شده با كاراكتر (&) بايد در پس زمينه اجرا شود.
8- يك راه حل سطح كاربر براي مشكل توليد كننده / مصرف كننده ايجاد كنيد. راه حل بايد از سه برنامه تشكيل شده باشد: يك برنامه شروع سطح اصلي، توليد كنندگان و مصرف كنندگان. برنامه شروع سطح اصلي بايد به صورت حداقل كاربر براي تعداد توليد كنندگان براي “exec” و تعداد مصرفكنندگان “exec” و همچنين يك شمارش تكرار براي توليد كنندگان و مصرف كنندگان و اندازه بافر محدود را ترغيب كند. برنامه شروع اصلي سپس توليد كنندگان ومصف كنندگان را exec مي كند و منتظر مي ماند تا زماني كه تمام فرايندها تكميل شود. هر توليد كننده بايد يك بار مفيد كاراكتر منحصر به فرد ايجاد كند (مثال: توليد كننده يك a را توليد ميكند و توليد كننده دو b را توليد مي كند). توليد كنندگان و مصرف كنندگان بايد تكرارها را در يك فرمت خلاصه وشفاف چاپ كنند. توجه داشته باشيد كه exec اجازه مباحث خط فرمان را نمي دهد. شما مي توانيد از فايل از پروژه يك به عنوان بافر مشترك براي توجه به اين مشكل استفاده كنيد.
9- دو برنامه كاربر به جز اقلام هفت و هشت طراحي كنيد كه بالاتر ازآن بتواند در داخل برنامه واسطه اجرا شود تا قوي بودن راه حل كلي پروژه شما را نشان دهد.
10- مستندسازي (10 درصد) شامل مستند سازي داخلي و مستند سازي خارجي طبق آن چه كه در پروژه يك توصيف شده است مي باشد. يك فايل reade ايجاد كنيد و آن را در دايركتوري كد قرار دهيد. كد خود را tar كنيدو آن را به عنوان يك فايل ارايه كنيد. راهنمايي هاي ارايه شده در پروژه يك را دنبال كنيد. ما در نظر داريم نرم افزار آشكار ساز سرقت اتوماتيك را براي اشكار كردن هر گونه پروژه كپي شده اجرا كنيم. پيامدها معمولا براي كساني كه در صداقت اكادميك ندارند نامطلوب مي باشد بنابراين به تنهايي كار كنيد و نه به صورت گروه. اين پروژه گروهي نيست پروژه هاي ديرتر از موعد پذيرفته نمي شود. مستند سازي خارجي حاوي طرح نشان داده شده به وسيله يك نمودار كلاسي آنلاين را در تاريخ مقرر ارايه كنيد وقتي نمونه نمايشي خود را انجام داديد يك كپي سخت به همراه خود به TA بياوريد.
چند وظيفه اي
توانايي اجراي بيش از يك وظيفه به صورت همزمان را گويند كه اين وظيفه يك برنامه است. عبارت هاي چند وظيفه اي و چند پردازي اغلب به جاي هم استفاده مي وشند اگر چه چند پردازي حاكي از ان است كه بيش از يك سي پي يو نقش دارد. در چند وظيفه اي، تنها يك سي پي يو نقش دارد اما با چنان سرعتي از يك برنامه به برنامه ديگر تغيير مي كند كه اين گونه به نظر مي رسد كه تمام برنامه ها به طور همزمان اجرا مي شوند.
دو نوع اصلي چندوظيفهاي وجود دارد: انحصاري و مشاركتي. در چند وظيفهاي انحصاري، سيستم عامل برش هاي زماني سي پي يو را به هر برنامه را به صورت بسته اي ارسال مي كند. در چند وظيفه اي مشاركتي هر برنامه مي تواند سي پي يو را تا زماني كه نياز دارد كنترل كند. با اين حال اگر يك برنامه از سي پي يو استفاده نمي كند مي تواند به برنامه ديگري اجازه دهد به طورموقت ازآن استفاده كند. OS/2 ، ويندوز 95 ، ويندوز NT و سيستم عامل اميگا و يونيكس از چند وظيفه اي انحصاري استفاده مي كنند در حالي كه ميكروسافت ويندوز و مولتي فايندر (براي كامپيوترهايمكين تاش) از چندوظيفهاي مشاركتي استفاده مي كنند.
سيستم هاي عامل چند برنامه اي / چند وظيفه اي
در ابتدا كاربران از اين تسهيلات برنامه واحد راضي بودند اما با ايجاد سي پي يوها قوي تر، حافظه بيشتر و ديسك درايورها بزرگ و ارزان سيستم هاي عاملي ايجاد شده اند كه اجازه مي دهند كه بيشتر از يك برنامه يا وظيفه به طور همزمان اجرا شود. اين را چند وظيفه اي يا چند برنامه اي گويند. يك پردازشگر واحد نمي تواند بيش از يك وظيفه را به طور همزمان پردازش كند. فقط ظاهراَ اين گونه است. گاهي اوقات اين را پردازش همزمان يا متقارن گويند. سيستم عامل ويندوز اين كار را با دادن بخش انحصاري حافظه به هر برنامه و حافظه مشترك براي كات كردن و پيست كردن بين برنامه هاي كاربردي انجام مي دهد. به هر وظيفه مي شود بخش خاصي از زمان سي پي يو را اختصاص داد (كه به آن تقسيم زمان گفته مي شود) و معمولا هر وظيفه به عنوان يك وظيفه با گردش نوبت اجرا خواهد شد كه در آن هر وظيفه به نوبت خدمات رساني مي شود. در اين جا يك مقايسه با معلمي وجود دارد كه تلاش مي كند به چندين سوال دانش اموزان با دادن يك برش زماني به هر سوال و سپس رفتن به سوال بعد پاسخ دهد. اگر تعدادي از سوالات در مقدار زمان موجود پاسخ نداده شود به صورت تعليق درآمده و سپس وقتي كه مجددا نوبت به دانش آموز رسيد به آن ها پاسخ داده مي شود. در موقعيت كامپيوتر هر وظيفه به نوبت انجام مي شود تا زماني كه وظيفه آخر پردازش شده و سپس كل فرايند شروع شود.
در مثال بالا يك وظيفه در صف پردازشگر وارد مي شود و اگر قابل اجرا باشد در زماني كه برش زماني آن ظاهر مي شود به پردازشگر داده مي شود. در اين مرحله سه پيامد ممكن وجود دارد:مي تواند پايان يابد
زمان پردازشگر به پايان مي رسد و به صف بر مي گردد تا منتظر نوبت خود شود.
به زبان I/O نياز دارد وقتي اين اتفاق مي افتد به صف I/O كه در ان منتظر ابزار مي ماند تا آزاد شود.
مشكلات عمده مربوط به سيستم هاي چند وظيفه اي به شرح زير مي باشد:
اگر يك وظيفه قرار باشد كه هر بار به آن نياز باشد مجددا بارگذاري شود احتمالا برش زماني آن به پايان مي رسد. با قرار دادن هسته برنامه در حافظه مقداري پردازش مي توان اتفاق بيفتد. كارامدترين سيستم هاي چند وظيفه اي نياز به حافظه زيادي براي كار موثر دارند. اگر وظايف زيادي شروع شود سيستم تا حد يك سرعت قابل قبول كند مي شود.
در ساده ترين شكل به دو وظيفه پنجاه درصد زمان سي پي يو داده مي شود. متاسفانه سيستم عامل نيز به مقدار زمان سي پي يو نياز دارد و با افزايش ليست وظيفه اين زمان افزايش مي يابد. به تدريج سيستم به حالت توقف مي رسد.
برنامه هاي بزرگ بايد مقداري اطلاعات ذخيره شده در ديسك داشته باشند و بازيابي زمان بر است.
تكنيك معمول براي پرداختن به اين مشكل تجزيه برنامه ها به صفحات داده است. مكررترين صفحه استفاده شده در حافظه به جا مي ماند و فقط وقتي برنامه تلاش مي كند تا به صفحه اي دست پيدا كند كه در حافظه وجود ندارد، سيستم عامل صفحه مناسب را خواهد آورد. در برنامه هاي بزرگ يا نامناسب هنوز مي تواند زمان افزايش پيدا كند و منجر به شكل گيري ايده اي به نام فعاليت هاي زيادي ديسك مي شود كه در آن صفحات از حافظه به ديسك و از ديسك به حافظه آورده مي شوند پردازش بسيار كمي اتفاق مي افتد اگر سيستم به خوبي كار كند ما يك سيستم حافظه مجازي خواهيم داد. موقعيت زير را تصور كنيد:
يك كامپيوتر داراي 10 مگابيت حافظه مي باشد كه به صفحات 10 * 1 مگابيت صفحه بندي شده است هر صفحه داراي يك ادرس فيزيكي (واقعي) و صفحه آدرس مي باشد. يك برنامه 20 مگابيت فضا مي گيرد و مجددا صفحه بندي مي شود. وقتي برنامه شروع مي شود 10 مگابيت اول در برنامه بارگذاري مي شود. پردازش شروع شده و تا زماني كه به يك آدرس در خارج از ده مگابيت نياز است ادامه پيدا مي كند. در اين نقطه سيستم عامل يك اختلال ايجاد مي كند كه پردازش شده و به آن پاسخ داده مي شود در اين حالت سيستم يك صفحه حافظه را با يك صفحه ذخيره شده در ديسك جايگزين مي كند. در اصل حافظه براي كاربر اين گونه به نظر مي رسد كه حافظه واقعي (RAM) به اضافه ظرفيت درايو هارد مي باشد.
تكنيك هاي پيچيده مديريت حافظه بايد براي متوقف كردن يك برنامه از همپوشاني حوزه حافظه ديگري مورد استفاده قرار گيرند.
به هر برنامه بايد حوزه حافظه مخصوص به خود داده شود و تحت شرايط طبيعي هيچ برنامه ديگري به ان دسترسي نخواهد داشت. درموقعيتي كه در آن دو برنامه حافظه را به طور همزمان اشغال مي كند اگر برنامه A داده ها در حوزه برنامه B را تغييردهد آن گاه برنامه B احتمالاً متوقف خواهد شد. در نسخه هاي اوليه ويندوز اين كار سيستم عامل را نيز متوقف مي كرد. شرايطي وجود دارد كه در ان اين قانون شكسته شده است. در برنامه هاي ويندوز اين امكان وجود دارد كه تا از يك برنامه به برنامه ديگر كات و پيست كرد. داده ها در يك حوزه همپوشاني كات شده و سپس از اين حوزه پيست مي شود.
يك رابط گرافيكي به مسائل برنامه نويسي چند وظيفه اي
مقدمه
مبناي اين پروژه بر اساس محيط چندوظيفهاي در سطح سيستم عامل است. يك موضوع مهم مد نظر توانايي براي اجراي برنامه هاي مستقل از سكو با استفاده از يك رابط كاربر گرافيكي مشترك است. برنامه كاربردي با استفاده از بيسيك ويژوال ميكروسافت ايجاد شده است. اين برنامه بر مبناي مفهوم برنامه نويسي خطي در يك محيط چند توسعه اي مي باشد. در حال حاضر اين برنامه محيط برنامه نويسي ويژوال بيسيك و ويژوال C++ را با ارايه قابليت هاي ويرايش، گرداوري و اجرا تلفيق مي كند. RUNAPP داراي قابليت جستجوي منابع اينترنتي است كه به ايجاد كنندگان كمك مي كند تا اطلاعاتي در مورد محيط هاي متفاوت از طريق اينترنت پيدا كند. اين ابزار هم چنين به ايجاد كنندگان در دانلود و آپ ديت جديدترين كنترل ها، الگوها و DLL ها به طورمستقيم در محيط مربوط به همچون ويژوال بيسيك يا ويژوال C++ كمك مي كند. اين برنامه كاربردي تمام ويژگي هاي ويرايشي هر پردازشگر ورد پايه را فراهم مي كند. RUN APP شخصيت يك محيط توسعه، ابزار اشكال زدايي، دسترسي به اطلاعات و الگوي اجراي كاربرد را دارا مي باشند. اين يك مستقل است كه محيط هاي برنامه نويسي متعدد را دريك واحد داراي قابليت چند وظيفه اي همراه مي كند.
كلمات كليدي: چند وظيفه اي، حافظه مشترك، آشكار سازي خطا، تولرانس عيب، كتابخانه لينك پويا.
1- مقدمه
ميكروكامپيوترهاي ظرف يك دوره زماني كوتاه به طور قابل ملاحظه اي سريع تر شده اند و شبكه هاي بزرگ ميكروكامپيوترها از كامپيوترهاي مين فريم ارزان ترند. سيستم هاي كامپيوتري امروز زماني كه تمام جزئيات آن ها بررسي مي شود بسيار پيچيده هستند. افزايش در تعداد كامپيوترها به همراه افزايش در تعداد كاربران منجر به نياز به داشتن رابط هاي كاربر ساده و استاندارد شده است. نمايش گرافيكي و بصري يك محيط بازدهي را افزايش مي دهد و زمان توسعه را سرعت مي بخشد. به علاوه بسياري از وظايف اجرايي با استفاده از گرافيك به جاي متن ساده براي نشان دادن اطلاعات ساده تر شده اند. يك محيط احساس واقعي (منابع موجود، مقادير متغير حافظه، مقادير داده ها و غيره) موقعيتي است كه يك فرايند خاص در هر نقطه زماني معين را توصيف مي كند. يك محيط ابزارها، پايگاه داده ها يا فايل ها، افراد، سخت افزار، يك شبكه، سيستم هاي عامل، استانداردها و بسياري از مولفه هاي ديگر را شامل مي شود. همزماني، اجراي هماهنگ چند فرايند در درون يك سيستم است. در يك سيستم متمركز شاخه شاخه ساختن اجراي هر فرايند شبيه همزماني است. ساختار حافظه مشترك يك ابزار بسيار كارآمد براي فرايندها براي مبادله داده ها فراهم ميكند.
بسياري از رابط هاي كاربر فيزيكي به سيستم هاي الكترونيك براي بزرگترين مخرج مشترك تجربه انساني طراحي شده اند به جاي ان كه با تكثر تجربه انساني ارتباط داشته باشند. از طرف ديگر تعدادي از رابط ها به صورت پويا بر اساس نيازهاي فردي تغيير يافته اند. بخش اعظم محيط هاي توسعه معمول در يك حالت تك وظيفه اي محدود كننده كاربران به يك زبان برنامه نويسي كار مي كنند.
رابط هاي كاربر گرافيكي هوشمند مي توانند بسياري از فرايندهاي پيچيده را ساده كرده و اقداماتي فرد براي اجراي وظايف خسته كننده نياز به انجام دارد را كاهش مي دهند. هدف اين پروژه ايجاد يك رابط كاربر گرافيكي (JUI) مي باشد كه به مسائل چند وظيفه اي بپردازد. دربسياري از موارد غلبه بر موانع مستلزم تعيين فرايندهاي متعارض بين رويدادها در سيستم مي باشد. از آن جا كه اجرا و عامليت كامل غير ممكن است، چند گزينه اشكال زدايي بايد گنجانده شود.
روش
با اجراي يك سيستم توسعه دهنده برنامه كاربرد چالش هاي زياي است كه بايد رفع شود. اولين چالش انتخاب يك سيستم عامل است كه به كاربر اجازه مي دهد تا به منابع متعدد موجود توجه نداشته باشد. برنامه كاربردي كه به آن RUNAPP گويند بايد قادر به انجام مديريت منبع هوشمند و چندوظيفهاي باشد كه بوسيله سيستمهاي عامل ميكروسافت ويندوز پشتيباني مي شود. برخي ديگر از موانع شامل اجراي موارد زير مي باشند:
- آشكار سازي و رفع خطا.
- تخصيص منابع مناسب
- حصول اطيمنان از همخواني داده ها
- ارايه يك سيستم تحمل كننده عيب.
يكي از ويژگي ها و چالش هاي كليدي در طراحي اين سيستم، سيستم عامل چند وظيفه اي است. سيستم RUNAPP لايه نرم افزاري در سيستم عامل است كه وظيفه برنامه نويسي را ساده مي كند. اين سيستم به عنوان يك برنامه كاربردي استاندارد ظاهر مي شود اما در سطح هسته پشتيبان محيط هاي متعدد اجرا مي شود.
دو نگراني عمده ديگر در طراحي سيستم جاري آشكارسازي خطا و رفعخطا مي باشد. در سيستم چند محيطي وقتي يك يا چندمولفه (همانند حافظه، مراجعه كننده، فرايندها، هسته و غيره) با نقص مواجه شوند اين خطا حياتي است. معمولا اين خطا فورا شناسايي شده و مي تواند به طور مناسب رفع شود. در سيستم تك محيطي همانند سيستم جاري آشكارسازي خطا و رفع آن بسيار پيچيده تر است.
صفحه نمايش ابتدايي كه در شكل 1 نمايش داده شده است اولين صفحه اي است كه برنامه را معرفي كرده و اطلاعات نسخه را ارايه مي كند. اين صفحه تا زماني كه كل برنامه در پس زمينه بارگذاري مي شود باقي مي ماند. وقتي RUNAPP درحافظه بارگذاري شد، صفحه نمايش ابتدايي از صفحه ناپديد ميشود و از حافظه خارج مي شود. صفحه بعدي كه بارگذاري مي شود منوي كاربر در واحد برنامه كاربردي مي باشد. همان طور كه در شكل 2 مي توان ديد اين چيزي بيشتر از يك صفحه شروع است كه كاربر را قادر مي سازد تا وظيفه يا گزينه اي كه مي خواهد اجرا كند را انتخاب كند. يك مزيت RUNAPP اين است كه وقتي كاربر يك وظيفه را انتخاب مي كند به طور مستقيم آن وظيفه را بدون اين كه مجبور باشد در تمام منوها و گزينه هاي ديگر جستجو كند، انجام مي دهد. دكمه EXIT در اين صفحه فقط منو را خارج مي كند و نه برنامه كاربردي را . اگر كاربر خارج شود طبق آنچه كه در شكل 3 نشان داده شده است به صفحه اصلي آورده مي شود. اگر كاربر آن گزينه را بخواهد و برنامه متناظر قبلا در كامپيوتر بارگذاري شده باشد اين كار ويژوال بيسيك يا ويژوال C++ را به طور مستقيم بارگذاري مي كند. گزينه “RUN A PROGRAM” به كاربر اجازه مي دهد تا به طور مستقيم يك فايل قابل اجراي قبلا كامپاي شده را كه به وسيله خود او ايجاد شده است اجرا كند. گزينه فايل “NEW” يك فايل منبع جديد را باز مي كند كه در آن كاربر مي تواند براي C ، C++ يا ويژال بيسيك كد بنويسيد.
كل محيط / برنامه كاربردي RUNAPP در يك فرايند واحد گنجانده شده است. يك فرايند ، يك برنامه اي در حال اجرا است. تمام فرايند در محيط توسعه تعلق به فرايند اصلي دارند كه RUNAPP است. هر فرايند فرعي (رشته) به عنوان يك وظيفه استاندارد در محيط ويندوز (تحت مدير وظيفه ويندوز) نشان داده مي شود و به وسيله سيستم عامل يك وظيفه منحصر به آن داده مي شود زيرا يك فرايند اصلي شروع به وسيله RUNAPP است. يك فرايند وضعيت جاري فعاليت تحت عنوان حالت فرايند را در بر مي گيرد. فرايندهاي متعدد RUNAPP را مي توان در سطح سيستم عامل شروع كرد (زيرا ويندوز 95 چند وظيفه اي را پشتيباني مي كند) و هر فرايند محيط مخصوص به خود، حافظه تخصيص يافته را خواهد داشت و مستقل از هر وظيفه ديگري كامل مي شود. اين كار به وسيله شيوه توسعه RUNAPP تحت يك محيط رابط سند واحد (SDI) انجام شده است.
صفحه اصلي داراي نوار منو، نوار ابزار و نوار وضعيت است كه تمام قوانين و جنبه هاي برنامه ويندوز استاندارد را رعايت مي كند. تمام ويژگي هاي ويرايش متن غني طراحي شده در اين برنامه كاربردي در نوار ابزار به همراه ديگر كاركردهاي فايل و پرينت گنجانده شده اند. تمام اسناد باز شده براي ويرايش در درون اين پنجره اصلي نمايش داده مي شوند. گزينه ديدن و ويرايش آن ها در فرمت متن غني، به عهده كاربر گذاشته شده است اما فايل هاي منبع در فرمت متن ذخيره مي شوند. هر برنامه يا محيط توسعه جديد به عنوان يك وظيفه / فرايند جديد در سطح سيستم عامل تكثير مي شوند و در صورت مي تواند ادامه پيدا كند تا مستقل از RUNAPP اجرا شود.
RUNAPP به كاربر اجازه مي دهد تا هر فايل منبع را از يك درايور محلي يا شبكه باز كرده و آن را در يك محيط ويرايش متن غني بارگذاري كند. اين كارها را مي توان از داخل RUNAPP انجام داد. فايل هاي متعددي را مي توان به طور همزمان ويرايش و گردآوري كرد. نسخه هاي فايل فعلي پشتيباني شده عبارتند از: فايل هاي منبع C ، C++ ، واحدهاي ويژوال بيسيك، پروژه هاي ويژوال بيسيك و فايل هاي ويژوال C++ . با استفاده از يك اشاره گر فايل كه به يك ساختار كه حاوي اطلاعات در مورد آن فايل مي باشد اشاره مي باشد، به فايل هاي C دسترسي پيدا مي شود. روش مشابهي براي دسترسي به انواع فايل هاي ديگر در پيش گرفته مي شود. ديگر فرمت هاي فايل را مي توان به صورت پويا يا با افزودن فيلتر به كد ويژوال بيسيك اين واحد به اين بنرامه كاربردي افزود. هم چنين مي توان متن و داده ها را از يك فايل به فايل ديگر به شيوه مشابه انجام شده در هر پردازشگر ورد ديگر كات و پيست كرد. براي ذخيره اطلاعات، تنظيم فونت، ديدن موضوعات كمكي و هم چنين چاپ كد منبع يا خروجي برنامه كاربردهاي مشابهي ايجاد شده است. تمام واحدها با استفاده از رابط برنامه نويس برنامه كاربردي ميكروسافت ويندوز (ويندوز API) ايجاد شده اند و با افزودن و تغيير ويژگي هاي آن براي همخواني با فرمت هاي فايل براي RUNAPP طوري تغيير يافته اند كه با اين برنامه كاربردي تناسب داشته باشند.
منوي EDIT عامليت كپي، كات و پيست متن بين فايل هاي منبع يا تخت رسم ويندوز را فراهم مي كند. كاربران هم چنين مي توانند متن را بين محيط هاي همچون ويژال بيسيك و ويژوال C++ كات و پيست كنند. اين منو هم چنين داراي گزينه فونت مي باشد كه قبلا توصيف شده است. تمام كاركردهاي گنجانده شده در اين منو با كاركردهاي موجود در هر برنامه كاربردي ويندوز ديگر يكسان مي باشند. از اين رو با اجتناب از پيچيدگي رابط را مي توان براي كاربر ساده نگه داشت. محيط هاي موجود در منوي تولز نشان داده شده اند (در حال حاضر ويژوال بيسيك و ويژوال C++).منو وقتي فعال شود محيط توسعه مناسب را اگر و تنها اگر قبلاً در ماشين استفاده شده بارگذاري شده باشد، بارگذاري مي كند. محيط هاي توسعه نصب شده (يعني ويژال بيسيك و يا ويژال C++) را مي توان براي گردآوري و ايجاد فايل هاي قابل اجراي هر كد منبع نوشته شده از طريق RUNAPP مورد استفاده قرار داد. تمام كار مديريت حافظه، تغيير زمينه و متغيرهاي محيطي در پس زمينه بارگذاري شده اند. گزينه بارگذاري مستقيم فايل منبع در محيط انتخاب شده در انتخاب كاربر قرار خواهد گرفت. فايل قابل اجرا را مي توان با انتخاب منوي ” RUNPROGRAM” اجرا كرد. اين منو هم چنين حاوي كليدهاي ميانبر استفاده شده براي شروع مستقيم محيط ها بدون جستجو مي باشد. منو ليستي از تمام برنامه هاي كه موجود و قابل اجرا هستند در اختيار كاربر قرار مي دهد. فايل قابل اجراي ايجاده شده به وسيله كاربر بايد داراي يك پسوند نشان دهنده اجراي يك فايل قابل اجرا از طريق RUNAPP باشد. تقسيم زمان استفاده شده در يك سيستم چند كاربري چند وظيفه اي ناميده مي شود كه اين در اشاره به تصور اجراي همزمان چند وظيفه مي باشد. اين هر برنامه را در يك محيط چند وظيفه اي مستقل اجرا خواهد كرد و برنامه هاي متعددي را به طور همزمان اجرا كرد. هر برنامه داراي مثال هاي خود خواهد بود و بنابراين كپي هاي متعددي از برنامه مشابهي را مي توان همزمان اجرا كرد و براي خروجي ها مقايسه كرد. مي توان با برگشتن به محيط مناسب فايل هاي منبع را اشكال زدايي و مجددا گردآوري كرد. بعدا در اين فصل مثالي براي اجراي همزمان ويژوال بيسيك و ويژوال C++ توصيف شده است.
وقتي انتخاب متناظر از منوي TOOLS انجام شود RUNAPP محيط ويژوال بيسيك يا ويژوال C++ را فعال مي كند. ويژوال بيسيك كاربر را قادر مي سازد تا هر نوع جديد از پروژه برنامه كاربردي را طبق تمايل خود راه اندازي كند. اگر كاربر محيط VB را بدون ارايه يك فايل منبع موجود، فرم VB يا واحد شروع كند اين گزينه ارايه خواهد شد. اگر محيط ويژوال C++ فعال شود فرايند نوع مشابهي دنبال مي شود. شكل 5-1 مثالي را نشان مي دهد كه در آن RUNAPP يك اجراي ميان محيطي را پشتيباني مي كند. در اين جا رابط نشان مي دهد كه چگونه كاربر مي تواند دو فايل منبع را به طور همزمان در محيط هاي متفاوت ايجاد و اجرا كند. اين برنامه كاربردي به كاربر اجازه مي دهد تا بدون اين كه مجبور باشد وارد ويژوال بيسيك يا ويژوال C++ شود فايل هاي برنامه را ويرايش كند. ويرايشگر سمت راست داراي بخشي از يك كد منبع برنامه C++ بارگذاري در آن مي باشد در حالي كه ويرايشگر سمت چپ داراي يك برنامه ويژوال بيسيك است.
RUNAPP هم چنين مي تواند براي فعال كردن جستجوگر وب داخلي از منوي VIEW مورد استفاده قرار گيرد. از جستجوگر مي توان براي اشاره به اطلاعات در اينترنت يا استفاده از ويژگي هاي كمك به شبكه آنلاين استفاده كرد. مجبور نيست كه يك جستجوگر وب را روي كامپيوتر نصب كند زيرا كنترل جستجوگر اينترنت اكسپلور در خود برنامه گنجانده شده است. برنامه نصب RUNAPP تمام كتابخانه هاي پوياي مورد نياز و فايل هاي ارجاع را نصب مي كند. جستجوگر فقط ويژگي هاي پايه براي جستجو را دارا مي باشد. بخش كمك را مي توان از نوار منوي Help از صفحه اصلي فعال كرداين كار فايل Help را در بخش help ويندوز استاندارد با استفاده از فرمان هاي كاركرد رابط برنامه نويس برنامه كاربردي ويندوز (API) به سيستم عامل بارگذاري مي كند. در اين جا كاربر مي تواند از گزينه هاي INDEX ، SEARCH و FIND براي پيدا كردن موضوع كمكي كه مي خواهد استفاده كند. هم چنين گزينهاي وجود دارد كه فايل HELP را به طورمستقيم در حالت FIND بارگذاري مي كند. فرايند كمك مستقل از برنامه كاربردي به عنوان يك فرايند مجزا اجرا مي شود. اين برنامه بايد به طور روشن خاتمه يابد.
اطلاعات سيستم ميكروسافت با فرمان دادن به يك كاركرد API فعال مي شود. اين ابزار اطلاعات را از هسته، مخزن سيستم و ريجستري ويندوز مي خواند. اين يك ابزار اطلاعاتي است كه اطلاعات در منابع سيستم، وظايف، رشته ها، DLL ها، موقعيت هاي رجيستري، حالت هاي فعال، موقعيت هاي INI و غيره را در اختيار كاربر مي گذارد. اين اطلاعات مي تواند براي برنامه نويس براي نظارت بر كاربرد حافظه وتوزيع فرايند / وظيفه مفيد باشد. اين ابزارا به عنوان يك فرايند مستقل اجرا مي شود بنابراين با محيط برنامه كاربردي RUNAPP تعارض ندارد. به اين شيوه مي تواند اطلاعات در مورد RUNAPP را نيز نمايش دهد. اطلاعات سيستم بخشي از سيستم عامل ويندوز است. RUNAPP فقط به اين ابزار متصل مي شود و به نمايش اطلاعات كمك مي كند.
به همراه اين پروژه براي نصبت به كارگيري برناه كاربردي بر روي كامپيوتر ايجاد شده است. اين برنامه نصب با استفاده از كيت كاربرد ويژال بيسيك ايجاد شده است و DLL ها، فايل ها و برنامه هاي و داده هاي مورد نياز براي اجراي RUNAPP را نصب خواهد كرد. اين وضعيت هم چنين داراي يك برنامه حذف مي باشد كه مي تواند كل برنامه را از كامپوتر پاك كند. تمام فايل هاي نصب شده به وسيله برنامه نصب متصل شده اند و با ارجاع به اين فايل اتصال حذف مي شوند. برنامه نصب گزينه محل نصب فايل ها و آيكون ها را در اختيار كاربر قرار مي دهد.
3- نتيجه گيري. اين برنامه با استفاده از كاركردهاي ويندوز API و كنترل هاي ويندزو و اشياء پوياي و پيچيده وييژوال بيسيك طراحي و ايجاد شده است. ويژگي هاي اصلي اين سيستم شفافيتي است كه در مورد وجود پردازشگرها و محيط هاي متعدد در اختيار كاربر مي گذارد. اين برنامه را مي توان با استفاده از يك برنامه نصب ايجاد و ارايه شده به همراه پروژه توزيع كرد. اين برنامه نصب تمام مولفه هاي ضروري مورد نياز براي اجراي RUNAPP همچون فايل هاي پشتيباني، فايل كمك و كتابخانه هاي لينك پويا را نصب خواهد كرد و برنامه در يك دايركتوري مورد نظر كاربر در هر كامپيوتر شخصي سازمان با IBM قابل اجرا است. به علاوه متغيرهاي رجستيري ويندوز، آيكون هاي گروه برنامه و فايل هاي شروع سيستم نيز در كامپيوتر اضافه و تغيير مي يابند. برنامه كاربردي به عنوان يك 32 بيت قابل اجرا گردآوري شده است و براي اجرا نياز به ويندوهاي 95 /98 / Nt يا سيستم هاي عامل جديدتر دارد. يك برنامه حذف به همراه برنامه وجود دارد كه تمام مولفه ها نصب شده، فايل ها، موقعيت هاي رجستري و غيره را حذف مي كند. برنامه حذف برنامه هاي قابل اجراي جمع آوري شده يا فايل منبع برنامه كه به وسيله كاربر ايجاد شده اند را حذف نمي كند .اين اطلاعات دست نخورده باقي مانده و حفظ مي شوند. مزيت هاي زير بعد از ايجاد برنامه كاربردي RUNAPP شناسايي شده اند.
1- RUNAPP يك تحمل عيب ايجاد مي كند و محيط توسعه برنامه كاربردي را محافظت مي كند.
2- RUNAPP منعطف است و مي تواند براي نيازهاي خاص كاربر تغيير يابد.
3- از اين برنامه كاربردي مي توان به عنوان يك ابزار پيچيده توسعه استفاده كرد.
4- سيستم همزماني بالا در اختيار كاربر قرار مي دهد.
اين پروژه داراي ميزان حيطه و فرصت قابل ملاحظه اي براي توسعه و ارتقا آتي مي باشد. ارتقا اصلي كه مي توان در اين سيتسم انجام داد گنجاندن محيط هاي برنامه نويسي بيشتر همچون پاور بيلدر، دلفي، فاكس پرو و غيره مي باشد. به علاوه زبان هاي نسل چهارم همچون sql ، proc و غيره را مي توان در آن گنجاند. رابط كاربر گرافيكي را مي توان ارتقا داد تا پردازش فايل و ويرايش هوشمند را پشتيباني كند. سيستم كمك آنلاين خلاصه و مشروح و مستند سازي ميتواند به RUNAPP اضافه شود. گزنيه هاي پيشرفته اي همچون موقعيت كاربر تخصصي، ورود به سيستم و گزينه هاي حسابرسي و كنترل نسخه را مي توان اضافه كرد تا اين برنامه كاربردي مطمئن شود. اين برنامه كاربردي را مي توان با افزودن روش هاي توضيح و همزماني براي ارتقا سرعت و تقسيم منابع به شبكه وصل كرد.