زبان برنامه نویسی اوکم

مقدمه

اوكم (۱) زبان برنامه نويسي پارالل انگلستان پيدايش و تكامل يافته است .اين بخش زبان و شرايط پيراموني پيدايش آن و رابطه آن با ترانسپيوتر اينموس (۲)را تشريح مي كند .
اوكلم زباني است مناسب براي بررسي نظرات وايده ها پيرامون ويژگيهاي انتقال پيام در برنامه نويسي پارلل .
مزيت بسيار مهم اين برنامه آن است كه با سرمايه گذاري اندك مي توان برنامه هايي قابل اجرا روي مجموعه اي از ابر رايانه ها نوشت .
توضيح :

برنامه اوكم و سخت افزار ترانسپوتر (Transputer ) كه در اينجا بعنوان ابر رايانه ياد شده است محصولات به ثبت رسيده و علائم تجاري شركت Inmos Limited مي باشد.

مترجم ۱٫ ۱تكوين اوكم .
اوكم زبان برنامه نويسي پارللي است كه توسط ديويد مي (۳) ] ۱۹۸۳ مي [در اينموس ليمتد (۴) بريستول (۵) ،انگلستان بوجود آمد اين زبان يكي از معدود زبانهاي برنامه نويسي است براساس CSP”( فرايند ترتيبي اطلاعات (۶) ) توني هور (۷) بنياد نهاده شده است .(هور ۷۸)
توضيح وتشريح بيشتر ودقيق تر CSP در كتاب CSP هور موجود است (هور ۸۵) با استفاده از CSP نمونه اوكم ، آنها زبان برنامه نويسي اوكم را ايجاد كرده وتكامل دادند .
نام برنامه نيز از اسم ويليام اوكم (۸) فيلسوف قرن سيزدهم برداشته شده است .
ويزور اوكم يا اصل فلسفي باستاني « همه چيز را آسان نگه دار» منسوب به ويليام است .يك هدف بنيادين زبان اوكم آسان نگه داشتن اين زبان است لذا اين برنامه چنين نام گذاري شده است .
اوكم و ترانسپيوتر (ابر رايانه ) علامت هاي تجاري ثبت شده Inmos limited مي باشد .

۱)Occam
2)Inmos
3)David May
4) Inmos Limited
5)Bristol
6) CSP (Communicating Sequential Peoeesses)
7) Tony Hoare
8) Wcuiam of Occam
9)The Occam Cncurrencq Modl
102 اوكم وابر رايانه

از نمونه اوكم ، اينموس تراشه سخت افزاري را براي پشتيباني نمونه همزماني اوكم ايجاد كرده است .اين سخت افزاري به صورت يك تراشه اصلي يكپارچه سازي شده IC در مقياس بزرگ است كه ترانسپيوتر خوانده مي شود .( واكر(۱) ۸۵ ، ويتني استريونس ۸۵ (۲) ).
ترانسپيوتر (قطعه شماره T800 اينموس ) يك ميكرو پرو سسور ۳۲ بيت ( ۲۰ MHZ CIOCK ) است كه MIDS 10 (يك ميليون فرمان در هر ثانيه ) و۲٫۰ MFLOPS (يك ميليون عمليلت نقطه شناور در هرثانيه ) را به وسيله قدرتي معادل ۴K بايت RAM ( 3) ايستا را پردازش مي كند .تمام اين ظرفيتهاي ارتباطي همزمان و فقط روي يك تراشه انجام مي گيرد .

با وجود آنكه اوكم زباني است درجه بالا مي توان به آن بعنوان يك زبان اسمبلي براي ترانسپيوتر نگريست .برخلاف بسياري از ميكرو پورسسورها ( ريز پردازشگرها ) مانند M68000 عمليات ترانسپيوتر به وسيله اوكم تعريف مي شود ونه بوسيله زبان ماشين .
زيرا اين ابر رايانه براي اجراي اوكم تعريف شده است و كامپايلر قابليت ايجاد كدهاي پيچيده و دقيق ماشين را داراست .يعلاوه ازآنجايي كه اين ميكرو پورسسورها داراي قابليت هاي اجرايي بالاست (نصف سرعت يك VAX8600 ) ترانسپيوتر داراي ۴سريال لينك (پيوند ) دوطرفه ( هركدام ۲۰مگابيت ذر ثانيه ) براي برقراري انتقال پيام ميان ترانسپيوترهاي ديگر است .

«« كانال ها »»

در زبان اوكم روي اين لينك هاي سخت افزاري برنامه ريزي شده اند كه بوسيله جفت سيمهاي مارپيچ به ابر رايانه هاي ديگر مرتبط مي شوند.
۱)Walker
2) Whit ney – Steevens
3) Ranclom Access Mwmory

سخت افزار ترانسپيوتر بصورت همزمان بوسيله برنامه ريزي (قسمت بندي زمان ) به سبك Round .robin تعدادي اختياري از پردازش هاي همزمان اوكم پشتيباني مي كند .

زبان وسخت افزار بصورتي طراحي شده اند كه ممكن است يك برنامه اوكم متشكل از مجموعه اي از پردازش هاي همزمان روي يك ترانسپيوتر (بوسيله قسمت بندي زمان ميان پردازش هاي همزمان متفاوت ) اجرا شود و يا روي ترانسپيوترهاي متعدد بدون هيچ گونه تغييري در كد اوكم توزيع شده و اجرا گردد.
ترانسپيوتر اصلي (T414 ) بدون داشتن قسمت نقطه شناور و فقط با ۲ كيلو بيت RAM در سال ۱۹۸۵ ايجاد شد .

دوسال بعد ترانسپيوتر T800معرفي شد و در سطح وسيعي در محصولات فروش عرضه شد .پس از آن اينموس شروع به تكميل وتوسعه يك نسخه سريعتر از ترانسپيوتر كرد كه T9000 ناميده مي شود اينموس طوري برنامه ريزي كرد كه اين نسخه در اواسط سال ۱۹۹۲ در دسترس همگان قرار گيرد .T9000يك ميكروپرسسور ۱۵۰MIPS با يك قسمت نقطه شناور ۲۰MFLOPS بود ۴لينك در T800بوسيله لينك هاي بيشتر مجازي جايگزين شد .سرعت هر لينك ۱۰۰مگابيت در ثانيه برآورد شد.
حافظه روي تراشه از ۴كيلو بايت به ۱۶ كيلو بايت ارتقاء داده شد وشامل برنامه ريزي حافظه و حفاظت حافظه نيز مي باشد .
بصورت دايره اي چنانكه تقدم بر تآخر معلوم نباشد .۱)Round- rcloin
103 نسخه هاي اوكم

اولين نسخه اوكم براي تحقيق وبررسي به آزمايشگاهها ودانشگاهها درسال ۱۹۸۳ ( مي ۸۳) توسط اينموس توزيع شد .اين نسخه اوكم بعنوان اوكم ۱= معروف شد و به شكلهاي گوناگوني عرضه شد .يكي از آنها پور تاكيت (۱) يك برنامه فرترن سورس بود وبا وجود اينكه در ماشينهاي بسياري استفاده مي شد ،برنامه اي بسيار كند وشامل نقايصي نيز در مدل اوكم بود .
نسخه معمول ديگر اوكم ۱= نسخه VAX NMS بوذ كه اينموس آن را به قيمت ارزان ۱۰۰دلار در دانشگاهها توزيع كرد در اين نسخه بسياري از نقايص پور تاكيت اصلاح شد ه بود .

با تجربه اي كه در طي سه سال بدست آمد (۱۹۸۶-۱۹۸۳) ديويد مي و گروهش در اينموس نسخه اي ارتقاء يافته از اوكم را كه اوكم ۲=خوانده شد ،عرضه كردند .در اوكم ۲= پيكر بندي همزماني اوكم تغييري ديده نمي شد .
با ابن وجود اينموس خصوصيات بسياري را كه از يك برنامه نويسي مدرن درجه بالا انتظار داريم اضافه كرده بود .بطور برجسته مي توان به تايپ ها و Type ( Type Chcching) قوي مانند آنچه در پاسكال ۲مشاهده مي شود ) اشاره كرد .خصوصيات مهم وجديدي كه براي برنامه نويسي عددي اضافه شده بود عبارتند بودند از نقطه شناور وحساب و qrray ها ي جند بعدي .

در ۱۹۸۸ ديويد مي پروتكلهايي را روي كانالهاي اوكم اضافه كرد .ازجمله خصوصيات ديگري كه ديويد مي به اوكم ۲= اضافه كرد مي توان به عملكردهاي تعريف شده توسط كاربر و فايلهاي uincluden اشاره كرد ( Inmos .88 ) ديويد مي پس ازآن شروع بكار روي اوكم ۳=كرد .

۱) Dortakit
2) Dascal
3) array
توضيح مترجم :
دو يا چند ماده مربوط به هم كه تحت نام واحدي در حافظه قرار مي گيرد .
اينموس هم اكنون اوكم را از سكوهاي مختلفي چون VAX AMS سازگارهاي IBMPCوايستگاههاي كاري SUNپشتيباني مي كند .
تماك اين ها نيازمند بردي است (شامل يك يا چند ترانسپيوتر ) كه روي يك اسلات (۱) در پلات فرم (سكر ) نصب شود .

دو سيستم پيشرفت فراهم است .نوع قديمي تر TDS(2) خوانده مي شود كه شامل ويرايشگر تا شونده خود ، كامپايلر ولينكر (پيوند دهنده ) دريك مجموعه مي شود .سيستم جديد تر كه اينموس تول ست يا مجموعه ابزار اينموس خوانده مي شود ، سري ابزارهاي جدا از هم است كه به كاربران اجازه مي دهد تا ابزارها را در محيط پيشرفت و توسعه آشناي خود بكار برند مانند makeدر يونيكس (۳).
۲٫ پيكر بندي همزمان اوكم .

پيكر بندي اوكم همزماني را پشتيباني مي كند بعبارت ديگر موازي سازي واقعي روي پردازشگرهاي متعدد ، يا موازي سازي شبيه سازي شده روي يك پردازشگر بوسيله قشمت بندي زمان .

پيكر بندي براساس روندهاي همزمان صورت گرفته است .براي يك معرفي ايده آل درمورد برنامه نويسي همزمان ( Concurrent Programming ) به كتاب بن اري (۴) با نام اصول همزماني و گسترده برنامه نويسي (۵) مراجعه كنيد .( بن اري ۱۹۹۵)
در اوكم ارتباط ميان پردازشگرهاي همزمان بوسيله انتقال پيام از يك نقطه به نقطه ديگر كانالها صورت مي گيرد .
منظور از اصطلاح نقطه به نقطه اين است كه مبدا ء و مقصد كانال بايد در يك نقطه يا مستقر در يك پردازش همزمان باشد .
۱)Slot
2) Transputer Develapment System
3)unix
4) Ben Aei
5) Deineiphes of Concueent and Disteibuted Programming
در زير پردازش P1 مي تواند پيامي را توسط كانال Cبراي پردازش P2بفرستد .
P2 ـــــــــCـــــــP1

شكل ۱ پردازش پي ۱ پيامي را درامتدا كانال سي براي پردازش پي ۲مي فرستد .
براي كاستن از بسياري از مشكلاتي كه توسط مداخلاتي كه بهنگام تقسيم متغير ها بين پردازش هاي همزمان در اوكم بايد بوسيله كانالها انجام گيرد .در نتيجه در اوكم متغيرهاي اشتراكي وجود ندارد .( درواقع دو پردازش همزمان هردو مي توانند يك متغيير بخوانند اماوقتي يكي در حال نوشتن روي يك متغيير است ديگري نمي تواند آن را بخواند)

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

وقتي هماهنگي انجام گرفت ، پيام ميان اين دو انتقال يافته و سپس به اجرا ادامه مي دهند اين عمل شبيه به يك وعده گاه Ada است .پيامد اين سبك ارتباط جلوگيري از با فرنينگ خودكار است (۱) اگر بافرينگ مطلوب باشد ، يك پردازشگر ميانجي ممكن است ميان دو پردازش قرارگيرد .يك امتياز اين طرح آن است كه يك مشخصه زبان هم ،هماهنگي وهم انتقال پيام را اجرا مي كند .

۱)Buffering
3. زبان اوكم
اين بخش مروري است بر زبان اوكم ۲= .براي بياني كاملترزبان به راهنماي مرجع اوكم ۲= مراجعه شود (اينموس ۸۸).
۱-۳ تمامي كلمات ذخيره شده بايد به حروف بزرگ باشد فاصله ها حكم حائل را دارند هر ساختار بايد با دو فاصله از ابتداي صفحه براي نشان دادن ساختمان آن ايجاد شود .

اين ايجاد فاصله ممكن است باعث ناراحتي برنامه نويسان شود اما هر مشكلي از اين دست توسط ويرايش گر تا شونده خوب اينموس حل مي شود .
اوكم سازگار خطي است .بدين معني كه هر گزاره در يك خط جديد شروع مي شود و احتمالآ با فاصله سطري .
ادامه به خط بعد بوسيله شكستن يك عبارت در يك عملگر ، سمي كلن، يا كاما امكان پذير است .
توضيحات نيز بوسيله ( — ) درآ خر خط مشخص مي شود .

۲-۳ ساختار برنامه
ساختار يك برنامه پردازشي است با بيانهاي معرفي كننده آن .
<declaces>
<precess>
1) Semicolon = (;)
2) Comma (,)

بعنوان مثال :
INT g :
SEQ
J : = 1
J : = j + 1
3-3 پردازش اوكم

Process اوكم يا پردازش اوكم را مي توان همانند عموميت دهنده به statement در زبانهاي ديگر انگاشت . بعنوان مثال پاسكال . با اين وجود ، process اوكم ممكن است با درك شهودي شما از process مغاير باشد مثلا ، يك process اوكم با process ي كه در بسياري از متون سيستمهاي عامل ديگر استفاده مي شود فرق دارد .
بعنوان مثال ، در process 1 پردازش حتما نياز نيست (( پردازش همزمان )) باشند . اگر نظر يه پردازش اوكم در ابتدا شما را گيج مي كند به پردازش يا process بعنوان (( عمل )) بنگريد بعبارت ديگر چيزي كه انجام شده است .
۴-۳ اعمال اوليه