مقدمـه
سامانةعامل(سيستمعامل) ويرتوسو سامانةعاملي چندوظيفه[iv] و بلادرنگ[v] است، که قادر به اجراي نرمافزارهاي كاربردي در پردازندههاي مختلف است. اين سامانةعامل با وجود قابليتها و سرويسهاي مناسب، داراي امكانات اشكال زدايي[vi] محدود است؛ وجود محيط اشكال زدايي مناسب باعث افزايش سرعت و كيفيت توسعة نرمافزار ميشود. استفاده از محيطهاي شبيه سازي شده، باعث حذف وابستگي به سختافزار خاص در زمان توسعه نرمافزار ميشود كه قابليت بسيار مهمي است.
به اين دلايل، ايدة ساخت سامانةعامل ويرسيم شكل گرفت. بر اين اساس سامانةعاملي در محيط ويندوز طراحي و پياده سازي شد كه دقيقاً همان سرويسهاي ويرتوسو را دارد. نرمافزارهاي كاربردي كه بر روي سامانةعامل ويرتوسو اجرا ميشوند، بر روي ويرسيم و PC نيز به اجرا در ميآيند. امكان اشكالزدايي نيز هم در سطح كد (مثل نقطة شکست[vii])، و هم در سطح عملياتي (مانند نمايش اطلاعات كرنل نرمافزار) وجود دارد. كاربر ميتواند با اضافه كردن كدهايي به نرمافزار، عملكرد نرمافزار را با شبيه سازي بخشهايي از آن ببيند، يا وروديهايي را از طريق واسط كاربري به نرمافزار اعمال كند.
پس از ساخت ويرسيم، نرمافزار ماهواره با كمترين تغييرات در كد به آن منتقل شد. سپس كدهايي به آن اضافه شد تا ضمن شبيه سازي بخشهاي سختافزاري، عملكرد نرمافزار را نيز به طور ديداري نشان دهد. پس از رسيدن به اين نقطه، تحليل و توسعه نرمافزار شروع شد.
از مهمترين دستاوردهاي شبيه سازي نرمافزار ماهواره با ويرسيم، كاهش زمان و هزينه براي آزمايش، تحليل، طراحي و توسعه نرمافزار با آن است. علاوه بر اين، اضافه شدن امكانات ديداري[viii] از عملكرد و اجراي نرمافزار، پسخورد بسيار خوبي براي توسعه دهنده فراهم ميكند تا با اطمينان و سرعت عمل بالايي به طراحي و توسعة آن بپردازد.
فعاليتهاي مربوط به اين زمينه
[ix]TEV [1,2،3] محيطي است كه براي تسهيلِ آموزشِ طراحي و توسعه نرمافزارهاي چندوظيفه و بلادرنگ ساخته شده است. ايدة اصلي ساخت اين ابزار، آشنايي سريعتر و صحيحتر کاربر با عناصر سامانةعامل بلادرنگ و چندوظيفه ويرتوسو و فراگيري روش طراحي و برنامه نويسي اين گونه سامانهها بوده است. محيط گرافيکي اين ابزار امکان طراحي بدون کدنويسي را به کاربر ميدهد. سپس خود ابزار كد سورس[x] لازم را ايجاد كرده و كاربر مي تواند آن را توسعه داده و اشكالزدايي كند. ويژگي مهم اين ابزار آن است كه بر مبناي سامانةعامل ويرتوسو طراحي شده كه سامانةعاملي قوي براي كاربردهاي بلادرنگ و چندوظيفه در چهارچوبهاي[xi] مختلف است. بنابراين نرمافزار توليد شده در TEV مي تواند به چهارچوبهاي واقعي با سامانةعامل ويرتوسو منتقل شود. در اين ابزار بيشترين تأكيد و تمركز بر طراحي، پياده سازي و آزمايش سادة نرمافزار در محيطي ديداري و با استفاده از ابزارهاي اين محيط است؛ بنابراين براي اهداف آموزشي ايده آل به نظر مي رسد.
در مرجع[4] محيطي معرفي شده كه در آن نرمافزار چندوظيفه با استفاده از نمودارهاي نقشه همزمان[xii] مدل ميشود. در اين ابزار امكاني قرار داده شده كه نرمافزار به صورت سلسله مراتبي و در چهار سطح تحليل و طراحي شود. با وجود اين، نمودار نقشه همزمان نميتواند ساختارهاي داده نرمافزار (مانند سمافورها[xiii] ، صفها و غيره) را به خوبي در سطح بالا نشان دهد.
شبيه سازي ويرتوسو در محيط جاوا[xiv] [9]، همانند محيط ويرسيم، امكان توسعه نرمافزار بلادرنگ را براي کاربر فراهم ميکند، اما به زبان جاوا. تفاوت آن با ويرسيم در هدف آن است، و سعي مي کند تا سامانةعامل ديگري بر اساس ويرتوسو طراحي کند.
در ويرسيم سعي شده تا محيط توسعه، امكانات مناسب را براي پايش منابع نرمافزاري فراهم کند. اين محيط به توسعه دهنده امكان ميدهد تا هر گونه نمايش گرافيكي از عملكرد و اجراي نرمافزار مورد توسعه را بر مبناي زبان برنامه نويسي C++ Builder [7] ايجاد كند. از آنجا كه ويرسيم بر روي كامپيوتر شخصي و در سامانةعامل ويندوز اجرا مي شود، محيط ايده آلي براي شبيه سازي نرمافزار است. ضمن آنكه پس از تكميل مدل شبيه سازي نرمافزار مي توان آن را با اندك تغييراتي به محيط واقعي (شامل سختافزار و سامانةعامل اصلي) منتقل نمود.
سامانةعامل ويرتوسو
تكنولوژي پردازندهها به سرعت در حال تغيير است. پردازندهها سريعتر ميشوند و ميكروكنترلرها دائماً پيچيدهتر و مجهز به امكانات بيشتر؛ از طرفي توسعه دهندگان نرمافزار نيز بايد انتظارات بزرگتري را برآورده سازند. به علاوه محدوديت پهناي باند ورودي/خروجيها (I/O) طراحان را وادار ميسازد تا براي رسيدن به عملكرد مطلوب به سمت پردازش موازي بروند. بهترين راه حل براي كوتاه كردن سيكل توسعة نرمافزار، استفاده از ابزارهايي است كه توسعه دهنده را از تعقيب تغييرات تكنولوژي بينياز سازد.
سامانةعامل ابزاري است كه سرويسهايي را در اختيار توسعه دهندة نرمافزار قرار مي دهد تا او بتواند فارغ از نوع پردازنده به طراحي و پيادهسازي نرمافزار بپردازد. زمانيكه پردازنده تغيير ميكند، فقط كافياست سامانةعامل مناسب آن پردازنده به كار رود. در اين حالت نرمافزار كاربردي بجز در حالت هاي خاص و در بخش كوچكي از آن تغيير نميكند [5].
سامانةعامل ويرتوسو سامانةعاملي است كه براي پردازنده هاي مختلفي از جمله سري ترانسپيوتر ساخته شده است و به توسعه دهندة نرمافزار امكان ميدهد تا نرمافزار كاربردي را به صورت چندوظيفه طراحي و پيادهسازي كند. در ادامه اين فصل سامانةعامل ويرتوسو از چند جهت بررسي ميشود.
چندوظيفگي[xv]
در بسياري از كاربردها، دادة خام حسگرها[xvi]، با استفاده از الگوريتم هاي پردازشي پيش پردازش و فيلتر ميشوند. سپس الگوريتم هاي كنترلي، دادة بدست آمده از مرحلة قبل را پردازش كرده و فرامين كنترلي را استخراج ميكنند. در موارد بسياري، سامانه تحت تاثير رخدادهاي[xvii] پيشبيني نشده قرار ميگيرد. بنابراين سامانه بايد بدون توجه به برنامة در حال اجرا، عكس العمل به موقعي به اتفاقات نشان دهد؛ در اين گونه موارد سامانه بلادرنگ مطرح مي شود.
راه حلي پذيرفته شده، اجراي عمليات مورد نياز به صورت وظايف(تسک) مجزا با اختصاص اولويتهاي مناسب، ارتباط مشخص و استاندارد است. سامانةعامل ويرتوسو براي تحقق اين ايده ، هستة بلادرنگي دارد كه اجراي به موقع وظايف را بر اساس اولويت آنها مديريت كرده و ارتباط بين آنها را براي برنامهنويس تسهيل ميكند.
سرويسهاي ريزهسته
مدل برنامه نويسي ويرتوسو بر اساس اشياء ميكروكرنل است. اين اشياء به صورت دستهبندي شدهاند و در هر دسته سرويسهاي آن دسته عمليات خاصي را اجرا ميکنند. سرويسهاي ميكروكرنل از تعداد و نوع پردازندههاي مورد استفاده مستقلاند. در ادامه، هركدام از اين دستهسرويسهاي ميكروكرنل توضيح داده ميشود.
دستة وظيفه
هر وظيفه(تسک) واحدي[xviii] نرمافزاري است كه يك يا چند عمل مشخص را بر عهده دارد. هر وظيفه مستقل از ساير وظايف است، ولي ممکن است با آنها رابطه داشته باشد. اين رابطه ميتواند به شكل ساختارهاي داده، ورودي/خروجي يا ساير ساختارها باشد. ويرتوسو از مفهوم چندوظيفگي بهره ميبرد كه به پردازنده قابليت اجراي همزمان چند عمل را فراهم ميکند. پردازندهاي كه مثل يك ماشين ترتيبي كار ميكند، قادر به اجراي همزمان چندين عمل نيست. با وجود اين با بهره گيري از وظايف، كه هر كدام دستهاي از توابع سامانه را در بردارند، امكان اجراي همزمان تحقق مييابد. سرويسهاي دسته وظيفه اعمالي از قبيل كنترل وضعيت و اولويت اجراي وظيفه را بر عهده دارند.
دستة سمافور
سمافورها براي ايجاد همزماني و هماهنگي بين دو وظيفه استفاده ميشوند. اگر وظيفهاي بخواهد منتظر كار وظيفة ديگر باشد، روي سمافور مشخصي اعلام انتظار ميكند. وظيفة دوم پس از انجام كار خود، آن سمافور را سيگنال كرده و به اين ترتيب وظيفه اول از انتظار بيرون ميآيد. هر وظيفهاي ميتواند روي سمافوري با تايماوت[xix] معين منتظر مانده و پس از سپري شدن آن، از انتظار بيرون آيد. اين امكان از انسداد وظيفه جلوگيري مي كند.
دستة پيام
عمليات تبادل پيام بين وظيفة فرستنده و وظيفة گيرنده با بكارگيري صندوقپستي[xx] اتفاق ميافتد. صندوقپستي انتقال دادة همزمان بين دو وظيفه را ممكن ميسازد، يعني دو وظيفه پس از اعلام آمادگي و همزمان شدن شروع به مبادلة داده مي كنند.
دستة صف[xxi]
صفها براي انتقال داده از وظيفهاي به وظيفة ديگر استفاده ميشوند. در واقع داده از وظيفة مبدأ به صف كه مثل نگهدارنده(بافر) عمل ميكند منتقل شده و سپس وظيفه مقصد آن را دريافت ميکند. داده ها به ترتيب زماني وارد صف شده و به همان ترتيب از آن خارج ميشوند. مزيت بكارگيري صف در آن است كه نياز به هماهنگ سازي دو وظيفه براي انتقال داده وجود ندارد. در نتيجه وظيفة مبدأ ميتواند پس از قرار دادن داده در صف به كار خود ادامه دهد.
دستة تايمر
در دسته تايمر سرويسهايي وجود دارد تا وظيفهاي با استفاده از آنها تايمرهايي را در اختيار بگيرد. سپس آن وظيفه با سرويسهاي ديگر ميتواند تايمر مورد نظر را راه اندازي كند. تايمر پس از راه اندازي، رويدادي را به طور دورهاي يا فقط يك بار توليد ميكند كه اين رويداد منجر به سيگنال شدن سمافوري ميشود. تايمرها اساساً براي تنظيم اجراي وظيفهها بر اساس زمان بندي لازم استفاده مي شوند.
دستة حافظه
حافظه يكي از منابعي است كه وظيفههاي هر سامانه از آن استفاده ميکنند. تكنيكهاي مختلفي براي مديريت حافظه به كار برده ميشود تا استفادة بهينهاي از حافظه به عمل آيد. سرويسهاي اين دسته امكان تخصيص و آزادسازي حافظه را براي وظيفه ها فراهم ميكنند.
دستة منابع (Resource)
در نرمافزارهاي چندوظيفه، لازم است از دسترسي همزمان به بعضي منابع جلوگيري شود. در سامانةعامل ويرتوسو اين وظيفه برعهدة سرويسهاي دستة منابع است.
شبيهسازي ويرتوسو روي كامپيوتر
دو هدف اصلي از شبيه سازي ويرتوسو بر روي PC با سامانةعامل ويندوز عبارتند از:
اول فراهم کردن محيط توسعة مناسب يراي شبيهسازي بخشهايي از نرمافزار کاربردي؛ در اينجا نيز زبان هاي برنامه نويسي ديداري تحت ويندوز با ارائه توابع كتابخانهاي [8] براي ارتباط با منابع مختلف و واسط كاربري، در رسيدن به اين هدف كمك مؤثري ميكنند. ضمن آنكه بهكارگيري محيط شبيه سازي، باعث توسعة مستقل نرمافزار از سختافزار ميشود.
دوم امکان استفاده از قابليتهاي اشکال زدايي قويتر؛ اين قابليتها مربوط به زبان هاي برنامهنويسي ديداري تحت ويندوز است، كه در توسعه نرمافزار نقشي بسيار اساسي دارد.
شبيه سازي نرمافزار منافع زيادي را در بر دارد كه در ادامه به آنها اشاره مي شود.
كاهش هزينة آزمايش
فراهم سازي شرايط واقعي آزمايش، هزينه بالايي ميطلبد و معمولاً بخش قابل توجهي از بودجه صرف عمليات آزمايش ميشود. در صورتي كه اگر پروسة شبيه سازي به درستي انجام شده باشد، مي توان بخش اعظم آزمايش سامانة توسعه داده شده را در محيط شبيه سازي شده انجام داد. بنابراين استفاده از شبيه سازي منجر به كاهش قابل توجه هزينه هاي آزمايش مي شود.
كاهش هزينه طراحي و پيادهسازي
كاهش هزينه طراحي و پيادهسازي از چند جنبه قابل بررسي است: اول آنكه با استفاده از امكانات اشكال زدايي، مدت زمان توسعه كمتر ميشود. دوم آنكه بسياري از اشكالات بالقوهاي كه ممكن است در طراحي وجود داشته باشد، خيلي زودتر خود را نشان مي دهند و حتي ممكن است در حالت واقعي يافتن آنها خيلي بيشتر طول بکشد. سوم آنكه در مواردي كه توسعه سختافزار و نرمافزار در كنار هم مطرح باشد، معمولاً ساخت نمونة اول سختافزار زمانبر است. تيم نرمافزاري نيز بدون سختافزار با محدوديتهايي در توسعة نرمافزار مواجه مي شود. از طرفي تيم سختافزاري نيز براي توسعة سختافزار نيازمند پسخوردهايي از نتيجة آزمايش نرمافزار است. به عبارت ديگر هر دو گروه مدت زمان زيادي را منتظر تكميل كار همديگر ميمانند. با شبيه سازي، گروه نرمافزار ميتواند از همان ابتدا توسعة نرمافزار را شروع كند و در حين توسعه پسخوردهاي لازم را به تيم سختافزاري جهت توسعه سختافزار بدهد[6].
بهبود كيفيت
با توجه مطالب گفته شده در قسمت قبلي بديهي است كه با رفع اشكالات بحراني سامانه كه در حالت واقعي در طي آزمايش طولاني مدت آشكار ميشود، كيفيت نرمافزار و در نتيجه كيفيت محصول بهبود مييابد. در محيط شبيهسازي ميتوان با ايجاد بار مصنوعي، سريعتر اشكالات را يافت.
مستقل شدن روند توسعة نرمافزار
محيط ويرسيم اين امكان را به توسعه دهنده ميدهد تا بخشهايي از نرمافزار را كه وابسته به سختافزار خاصي است، شبيهسازي كند. بنابراين توسعه دهنده مي تواند نرمافزار را فارغ از توجه به نوع سختافزار توسعه داده و در نهايت به سختافزار مورد نظر خود منتقل كند.
رفع نيازهاي آموزشي و تحليل نرمافزار
از آنجايي كه محيط ويرسيم از واسطهاي گرافيكي براي نمايش و دريافت اطلاعات مفيد بهره مي گيرد، بنابراين ميتواند ابزاري براي آموزش برنامه نويسي با سامانةعامل ويرتوسو باشد. علاوه بر آن ويرسيم ميتواند به تحليل نرمافزار نيز كمك شاياني كند. تحليل نرمافزاري که تيم ديگري آن را نوشته، معمولاً زمان زيادي طول ميکشد.
نحوة شبيه سازي ويرتوسو
شكل 1 محيط واقعي توسعة نرمافزار بدون شبيهسازي را نشان ميدهد. در پايين ترين لايه، سختافزار شامل پردازنده و سختافزار جانبي قرار دارد. در لايه مياني سامانةعامل ويرتوسو و در لايه بالايي نرمافزار كاربردي قرار دارد.نسخة سامانةعامل ويرتوسو متناسب با پردازنده انتخاب ميشود، اما از ديد نرمافزار كاربردي تفاوتي نميكند كه بر روي چه پردازندهاي اجرا ميشود. نرمافزار كاربردي با سختافزار جانبي نيز از طريق لايه سطح پايين نرمافزار ارتباط برقرار مي كند.
نكتة كليدي در شبيه سازي ويرتوسو، جايگزين شدن سختافزار پردازنده با PC است؛ كه بر روي آن سامانةعامل ويندوز قرار دارد و ويرتوسو با ويرسيم جايگزين ميشود. به طوري كه ويرسيم دقيقاً همان سرويسهايي را براي نرمافزار كاربردي فراهم ميكند كه قبلاً ويرتوسو ارائه ميداد. اين سرويسها داراي همان شكل ورودي و خروجي سرويسهاي ويرتوسواند كه بر روي سامانةعامل ويندوز اجرا مي شوند. اين جايگزيني در شكل 2 نشان داده شده است.
مطابق شكل 2 نرمافزار كاربردي براي سرويسهاي ويرتوسو كه اينك ويرسيم آنها ارائه ميکند، تغييري نميكند. در مورد جايگزيني سختافزار جانبي دو روش ميتواند استفاده شود:
در روش اول سختافزار جانبي بهطور مستقيم يا با واسطي به كامپيوتر متصل مي شود. لازم است توابع سطح پايين نرمافزار كاربردي با كدهاي مناسبي جايگزين شوند تا بتواند با سختافزار جانبي در اين وضعيت ارتباط برقرار كند.
در روش دوم كه در اينجا مورد استفاده واقع شده است، سختافزار جانبي بطور نرمافزاري شبيهسازي ميشود. در اين حالت لازم است محتواي توابع سطح پايين به نحوي تغيير كند كه بتواند عملكردي شبيه به حالت واقعي را براي نرمافزار كاربردي داشته باشد.
واسطهاي كاربري ويرسيم
در شكل 3 فرم اصلي ويرسيم نشان داده شده است. تمام پيامهايي كه به منظور اشكالزدايي در نرمافزار توليد مي شود، در اين فرم به صورت بالا رونده و به ترتيب نشان داده مي شود. همچنين گرفتن كليد از كاربر به منظور انتخاب منو يا وارد كردن اطلاعات مورد نياز نرمافزار در اين فرم اجرا ميشود. در واقع يك كنسول[i] خط فرمان[ii] را در اختيار توسعهدهندة نرمافزار قرار ميدهد تا اطلاعات مورد نياز از نرمافزار را در آن نمايش دهد و ورودي هاي لازم را نيز به آن بدهد. اين نوع واسط كاربري نقش بسيار مهمي در توسعة نرمافزار دارد.
در شكل 4 فرم ديگري از ويرسيم نشان داده شده است كه براي اشكال زدايي نرمافزار استفاده مي شود. در اين واسط كاربري اطلاعات دقيق تري از منابع نرمافزاري مانند وظيفهها، سمافورها، صفها و غيره نشان داده مي شوند. توسعه دهندة نرمافزار ميتواند از اين اطلاعات براي اشكال زدايي نرمافزار در حال توسعه استفاده نمايد.
نتيجه گيري
توسعة نرمافزار در يك سامانةعامل شبيه سازي شده روي كامپيوتر شخصي علاوه بر آنكه هزينه تمام شدة توليد نرمافزار را كاهش ميدهد، باعث بهبود كيفيت نرمافزار و كاهش اشكالات آن و به عبارت ديگر باعث افزايش قابليت اطمينان[i] نيز ميشود. از آنجا كه در كاربردهايي مانند نرمافزار ماهواره، ايجاد شرايط واقعي آزمونهاي عملياتي واقعي هزينهبر، بسيار مشكل و بعضاً نشدني است، استفاده از سامانههاي شبيه ساز براي رسيدن به قابليت اطمينان بالا در نرمافزار بسيار مفيد و كارا است. بعلاوه اين راهكار ميتواند در ساير كاربردهاي بلادرنگ نيز، كه به نرمافزارهايي با كيفيت و قابليت اطمينان بالا نياز باشد، به كار رود.
محيط شبيه ساز ويرسيم، براي منظور فوق توسعه داده شد. براي ساخت اين ابزار از زبان برنامه نويسي C++Builder در محيط ويندوز استفاده شده است. بنابراين امكانات اشكالزدايي اين زبان ديداري در ويرسيم نيز قابل استفاده است. از طرف ديگر تمام سرويسهايي كه سامانةعامل ويرتوسو براي نرمافزار كاربردي فراهم ميكند، در اين ابزار نيز فراهم شده است و مي تواند مورد استفاده قرار گيرد. در نهايت پس از طراحي و پياده سازي ويرسيم ، استفاده از آن باعث شد تا روند تحليل، توسعه و آزمايش نرمافزار ماهواره با كيفيت بالاتر در زمان كمتر و با هزينه پايينتر نسبت به روش هاي سنتي صورت پذيرد.
مراجع
1- E. Moron, R.P. Rebeiro، C.Silva, "A Teaching Environment for the Development of Parallel Real-Time Programs", FIE Conference (IEEE), 1998
2- Jose G. Neves, Lilian N. de Faria, Celio E. Moron, "Integration of Tools for Parallel Real-Time Systems ", IEEE, 1999
3- Jose R. P. Ribeiro, Nilton C. da Silva, Roxana G. Moron, Celio E. Moron, "From Design to Implementation Using the Parallel Program Generator ", IEEE, 1999
4- W. Cai، T.L. Pian, S. J. Turner, "A Framework for Visual Parallel Programming", In Proceeding of Aizu International Symposium on Parallel Algorithms/Architecture Synthesis, IEEE Computer Society Press, Japan, March 1995
5- "ويرتوسو – The Virtual Single Processor Programming System", User Manual, Version 3.11, EONIC Systems
6- Jim Ledin, "Simulation Engineering", CMP Books
7- Herbert Schildt, "Borland C++ Builder: The Complete Reference", McGraw Hil
8- Paul J. Perry, N.C. Shammas, L. Atkinson, M. Atkinson, "Using Borland C++ 4"
9- Rodrigo F. de Mello, Celio E. Moron, "A JAVA Real-Time Kernel", IEEE, 1999