دانلود مقاله اوکم

Word 55 KB 34893 39
مشخص نشده مشخص نشده کامپیوتر - IT
قیمت قدیم:۲۴,۰۰۰ تومان
قیمت: ۱۹,۸۰۰ تومان
دانلود فایل
  • بخشی از محتوا
  • وضعیت فهرست و منابع
  • مقدمه اوکم (1) زبان برنامه نویسی پارالل انگلستان پیدایش و تکامل یافته است .این بخش زبان و شرایط پیرامونی پیدایش آن و رابطه آن با ترانسپیوتر اینموس (2)را تشریح می کند .

    اوکلم زبانی است مناسب برای بررسی نظرات وایده ها پیرامون ویژگیهای انتقال پیام در برنامه نویسی پارلل .

    مزیت بسیار مهم این برنامه آن است که با سرمایه گذاری اندک می توان برنامه هایی قابل اجرا روی مجموعه ای از ابر رایانه ها نوشت .

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

    مترجم 1.

    1تکوین اوکم .

    اوکم زبان برنامه نویسی پارللی است که توسط دیوید می (3) ] 1983 می [در اینموس لیمتد (4) بریستول (5) ،انگلستان بوجود آمد این زبان یکی از معدود زبانهای برنامه نویسی است براساس CSP"( فرایند ترتیبی اطلاعات (6) ) تونی هور (7) بنیاد نهاده شده است .(هور 78) توضیح وتشریح بیشتر ودقیق تر CSP در کتاب CSP هور موجود است (هور 85) با استفاده از CSP نمونه اوکم ، آنها زبان برنامه نویسی اوکم را ایجاد کرده وتکامل دادند .

    نام برنامه نیز از اسم ویلیام اوکم (8) فیلسوف قرن سیزدهم برداشته شده است .

    ویزور اوکم یا اصل فلسفی باستانی « همه چیز را آسان نگه دار» منسوب به ویلیام است .یک هدف بنیادین زبان اوکم آسان نگه داشتن این زبان است لذا این برنامه چنین نام گذاری شده است .

    اوکم و ترانسپیوتر (ابر رایانه ) علامت های تجاری ثبت شده Inmos limited می باشد .

    1)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 در مقیاس بزرگ است که ترانسپیوتر خوانده می شود .( واکر(1) 85 ، ویتنی استریونس 85 (2) ).

    ترانسپیوتر (قطعه شماره T800 اینموس ) یک میکرو پرو سسور 32 بیت ( 20 MHZ CIOCK ) است که MIDS 10 (یک میلیون فرمان در هر ثانیه ) و2.0 MFLOPS (یک میلیون عملیلت نقطه شناور در هرثانیه ) را به وسیله قدرتی معادل 4K بایت RAM ( 3) ایستا را پردازش می کند .تمام این ظرفیتهای ارتباطی همزمان و فقط روی یک تراشه انجام می گیرد .

    با وجود آنکه اوکم زبانی است درجه بالا می توان به آن بعنوان یک زبان اسمبلی برای ترانسپیوتر نگریست .برخلاف بسیاری از میکرو پورسسورها ( ریز پردازشگرها ) مانند M68000 عملیات ترانسپیوتر به وسیله اوکم تعریف می شود ونه بوسیله زبان ماشین .

    زیرا این ابر رایانه برای اجرای اوکم تعریف شده است و کامپایلر قابلیت ایجاد کدهای پیچیده و دقیق ماشین را داراست .یعلاوه ازآنجایی که این میکرو پورسسورها دارای قابلیت های اجرایی بالاست (نصف سرعت یک VAX8600 ) ترانسپیوتر دارای 4سریال لینک (پیوند ) دوطرفه ( هرکدام 20مگابیت ذر ثانیه ) برای برقراری انتقال پیام میان ترانسپیوترهای دیگر است .

    «« کانال ها »» در زبان اوکم روی این لینک های سخت افزاری برنامه ریزی شده اند که بوسیله جفت سیمهای مارپیچ به ابر رایانه های دیگر مرتبط می شوند.

    1)Walker 2) Whit ney - Steevens 3) Ranclom Access Mwmory سخت افزار ترانسپیوتر بصورت همزمان بوسیله برنامه ریزی (قسمت بندی زمان ) به سبک Round .robin تعدادی اختیاری از پردازش های همزمان اوکم پشتیبانی می کند .

    زبان وسخت افزار بصورتی طراحی شده اند که ممکن است یک برنامه اوکم متشکل از مجموعه ای از پردازش های همزمان روی یک ترانسپیوتر (بوسیله قسمت بندی زمان میان پردازش های همزمان متفاوت ) اجرا شود و یا روی ترانسپیوترهای متعدد بدون هیچ گونه تغییری در کد اوکم توزیع شده و اجرا گردد.

    ترانسپیوتر اصلی (T414 ) بدون داشتن قسمت نقطه شناور و فقط با 2 کیلو بیت RAM در سال 1985 ایجاد شد .

    دوسال بعد ترانسپیوتر T800معرفی شد و در سطح وسیعی در محصولات فروش عرضه شد .پس از آن اینموس شروع به تکمیل وتوسعه یک نسخه سریعتر از ترانسپیوتر کرد که T9000 نامیده می شود اینموس طوری برنامه ریزی کرد که این نسخه در اواسط سال 1992 در دسترس همگان قرار گیرد .T9000یک میکروپرسسور 150MIPS با یک قسمت نقطه شناور 20MFLOPS بود 4لینک در T800بوسیله لینک های بیشتر مجازی جایگزین شد .سرعت هر لینک 100مگابیت در ثانیه برآورد شد.

    حافظه روی تراشه از 4کیلو بایت به 16 کیلو بایت ارتقاء داده شد وشامل برنامه ریزی حافظه و حفاظت حافظه نیز می باشد .

    بصورت دایره ای چنانکه تقدم بر تآخر معلوم نباشد .1)Round- rcloin 103 نسخه های اوکم اولین نسخه اوکم برای تحقیق وبررسی به آزمایشگاهها ودانشگاهها درسال 1983 ( می 83) توسط اینموس توزیع شد .این نسخه اوکم بعنوان اوکم 1= معروف شد و به شکلهای گوناگونی عرضه شد .یکی از آنها پور تاکیت (1) یک برنامه فرترن سورس بود وبا وجود اینکه در ماشینهای بسیاری استفاده می شد ،برنامه ای بسیار کند وشامل نقایصی نیز در مدل اوکم بود .

    نسخه معمول دیگر اوکم 1= نسخه VAX NMS بوذ که اینموس آن را به قیمت ارزان 100دلار در دانشگاهها توزیع کرد در این نسخه بسیاری از نقایص پور تاکیت اصلاح شد ه بود .

    با تجربه ای که در طی سه سال بدست آمد (1986-1983) دیوید می و گروهش در اینموس نسخه ای ارتقاء یافته از اوکم را که اوکم 2=خوانده شد ،عرضه کردند .در اوکم 2= پیکر بندی همزمانی اوکم تغییری دیده نمی شد .

    با ابن وجود اینموس خصوصیات بسیاری را که از یک برنامه نویسی مدرن درجه بالا انتظار داریم اضافه کرده بود .بطور برجسته می توان به تایپ ها و Type ( Type Chcching) قوی مانند آنچه در پاسکال 2مشاهده می شود ) اشاره کرد .خصوصیات مهم وجدیدی که برای برنامه نویسی عددی اضافه شده بود عبارتند بودند از نقطه شناور وحساب و qrray ها ی جند بعدی .

    در 1988 دیوید می پروتکلهایی را روی کانالهای اوکم اضافه کرد .ازجمله خصوصیات دیگری که دیوید می به اوکم 2= اضافه کرد می توان به عملکردهای تعریف شده توسط کاربر و فایلهای uincluden اشاره کرد ( Inmos .88 ) دیوید می پس ازآن شروع بکار روی اوکم 3=کرد .

    1) Dortakit 2) Dascal 3) array توضیح مترجم : دو یا چند ماده مربوط به هم که تحت نام واحدی در حافظه قرار می گیرد .

    اینموس هم اکنون اوکم را از سکوهای مختلفی چون VAX AMS سازگارهای IBMPCوایستگاههای کاری SUNپشتیبانی می کند .

    تماک این ها نیازمند بردی است (شامل یک یا چند ترانسپیوتر ) که روی یک اسلات (1) در پلات فرم (سکر ) نصب شود .

    دو سیستم پیشرفت فراهم است .نوع قدیمی تر TDS(2) خوانده می شود که شامل ویرایشگر تا شونده خود ، کامپایلر ولینکر (پیوند دهنده ) دریک مجaموعه می شود .سیستم جدید تر که اینموس تول ست یا مجموعه ابزار اینموس خوانده می شود ، سری ابزارهای جدا از هم است که به کاربران اجازه می دهد تا ابزارها را در محیط پیشرفت و توسعه آشنای خود بکار برند مانند makeدر یونیکس (3).

    دو سیستم پیشرفت فراهم است .نوع قدیمی تر TDS(2) خوانده می شود که شامل ویرایشگر تا شونده خود ، کامپایلر ولینکر (پیوند دهنده ) دریک مجموعه می شود .سیستم جدید تر که اینموس تول ست یا مجموعه ابزار اینموس خوانده می شود ، سری ابزارهای جدا از هم است که به کاربران اجازه می دهد تا ابزارها را در محیط پیشرفت و توسعه آشنای خود بکار برند مانند makeدر یونیکس (3).

    2.

    پیکر بندی همزمان اوکم .

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

    پیکر بندی براساس روندهای همزمان صورت گرفته است .برای یک معرفی ایده آل درمورد برنامه نویسی همزمان ( Concurrent Programming ) به کتاب بن اری (4) با نام اصول همزمانی و گسترده برنامه نویسی (5) مراجعه کنید .( بن اری 1995) در اوکم ارتباط میان پردازشگرهای همزمان بوسیله انتقال پیام از یک نقطه به نقطه دیگر کانالها صورت می گیرد .

    منظور از اصطلاح نقطه به نقطه این است که مبدا ء و مقصد کانال باید در یک نقطه یا مستقر در یک پردازش همزمان باشد .

    1)Slot 2) Transputer Develapment System 3)unix 4) Ben Aei 5) Deineiphes of Concueent and Disteibuted Programming در زیر پردازش P1 می تواند پیامی را توسط کانال Cبرای پردازش P2بفرستد .

    P2 ـــــــــCـــــــP1 شکل 1 پردازش پی 1 پیامی را درامتدا کانال سی برای پردازش پی 2می فرستد .

    برای کاستن از بسیاری از مشکلاتی که توسط مداخلاتی که بهنگام تقسیم متغیر ها بین پردازش های همزمان در اوکم باید بوسیله کانالها انجام گیرد .در نتیجه در اوکم متغیرهای اشتراکی وجود ندارد .( درواقع دو پردازش همزمان هردو می توانند یک متغییر بخوانند اماوقتی یکی در حال نوشتن روی یک متغییر است دیگری نمی تواند آن را بخواند) بنابراین ، وظیفه اوکم انعکاس پیکر بندی انتقال پیام در محاسبه موازی است که توسط سخت افزار ترانسپیوتر با حافظه محلی آن انجام می گیرد .بعبارت دیگر هیچ حافظه جامع و لینک های ارتباطی.

    ارتباط روی یک کانال اوکم هماهنگ است .وقتی که یکی از فرستنده یا گیرنده به یک مکان مناسب در کد می رسند هرکدام که زودتز می رسند برای دیگری صبر می کنند .

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

    1)Buffering 3.

    زبان اوکم این بخش مروری است بر زبان اوکم 2= .برای بیانی کاملترزبان به راهنمای مرجع اوکم 2= مراجعه شود (اینموس 88).

    1-3 تمامی کلمات ذخیره شده باید به حروف بزرگ باشد فاصله ها حکم حائل را دارند هر ساختار باید با دو فاصله از ابتدای صفحه برای نشان دادن ساختمان آن ایجاد شود .

    این ایجاد فاصله ممکن است باعث ناراحتی برنامه نویسان شود اما هر مشکلی از این دست توسط ویرایش گر تا شونده خوب اینموس حل می شود .

    اوکم سازگار خطی است .بدین معنی که هر گزاره در یک خط جدید شروع می شود و احتمالآ با فاصله سطری .

    ادامه به خط بعد بوسیله شکستن یک عبارت در یک عملگر ، سمی کلن، یا کاما امکان پذیر است .

    توضیحات نیز بوسیله ( -- ) درآ خر خط مشخص می شود .

    2-3 ساختار برنامه ساختار یک برنامه پردازشی است با بیانهای معرفی کننده آن .

    Semicolon = (;) Comma (,) بعنوان مثال : INT g : SEQ J : = 1 J : = j + 1 پردازش اوکم Process اوکم یا پردازش اوکم را می توان همانند عمومیت دهنده به statement در زبانهای دیگر انگاشت .

    بعنوان مثال پاسکال .

    با این وجود ، process اوکم ممکن است با درک شهودی شما از process مغایر باشد مثلا ، یک process اوکم با process ی که در بسیاری از متون سیستمهای عامل دیگر استفاده می شود فرق دارد .

    بعنوان مثال ، در process 1 پردازش حتما نیاز نیست (( پردازش همزمان )) باشند .

    اگر نظر یه پردازش اوکم در ابتدا شما را گیج می کند به پردازش یا process بعنوان (( عمل )) بنگرید بعبارت دیگر چیزی که انجام شده است .

    4-3 اعمال اولیه در اوکم، 5 عمل اولیه وجود دارد ( پس از csp هر پردازشهای اولیه خوانده شدند .

    ) جایگزینی assignment دریافت Reecive فرستادن Send جهش Skip توقف Stop PRIMITIVE SYNTAX EXAMPLE Assignment (variable) := (expression) x:= Y+1 Receive ( channel) ?

    (variable) ch?X Send ( channel) !

    (expression ) ch !

    Y+ 1 SKIP SKIP SKIP STOP STOP STOP جایگزینی متغیر هم ارزش یک عبارت را جایگزین میکند .

    در یافت ارزش را از یک کانال دریافت می کنند .

    از ( ؟) بمعنای جستجو یا پرسش استفاده می کند .

    فرستادن ارزش یک عبارت را روی یک کانال می فرستد .

    از ( !) بمعنای تعجب استفاده می کند جهش هیچ کاری انجام نمی دهد و پردازش را پایان می دهد بعبارت دیگر عملی انجام نداده .

    توقف هیچ کار ی انجام نمی دهد و هیچ وقت به پردازش پایان نمی دهد بعبارت دیگر هیچ وقت روند بعدی را دریافت نکن .

    ممکن است تعجب کنید چرا (!

    ) (؟) بجای SEND.RESEIVE .

    نشانه گذاری ها مستقیماًًً از CSP هر گرفته شده است .

    در اصطلاحات اوکم هیچ اولویت عملکرد وجود ندارد بنابراین باید برای تعیین ترتیب عمل از پرانتز استفاده شود .بعنوان مثال : X:=2* y+1 قابل قبول نیست باید از پرانتز بصورت زیر استفاده کنید .

    X:= (2* Y)+1 در فرستادن و دریافت ممکن است از (: )برای جدا سازی عبارات و متغییر ها مانند زیر استفاده شود : Ch !

    X: Y : X+Y 3.5 ساختارهای داده ها اوکم دقیقاً مانند پاسکال نوشته وباید هر متغیر را اعلام کنید .

    اعلامها بصورت : (TYPE) ( یک یا چند شناسه که توسط کاما (ویرگول ) جدا شده اند ) : تایپ های موجود شامل INTبرای عدد صحیح ،BOOL برای بولی ، BY TE برای کاراکتر ، REAL32 برای حقیقی های 32بیت ،REAL64 برای حقیقی های 64 بیت و SHANبرای کانال .

    بعنوان مثال برای بیان متغیر های (X) و(Y) برای تایپ عدد صحیح و( q) یک کانال با پروتکل پیام یک عدد صحیح تنها مانند زیر عمل می کنیم : INT X, Y: CHAN OF INT q: تنها ساختار داده های موجود ردیف ها یا Array ها هستند .

    این نقص اوکم در اوکم 3 کاهش داده شده است .

    محدوده یک ردیف همیشه در زبان c در صفر شروع می شود .ردیفهای Array ها چند بعدی مانند زیر ند : VAL n IS 100 INT I , ,j (n) (n) REAL32 a : ( n+1 ) CHAN OF ANY LAINKS SEQ SEQ I = O FOR n SEQ J = O FOR n A (i)(J) : = O.O ( REAL 32) OTHER CODE - در بخش کد بالا ، ثابت n را 100تعریف کردیم و 100را بوسیله 100ماتریس a بیان کردیم ویک بردار که links خوانده می شود شاما 101کانال است و اجازه می دهد تاارزش تایپ ANYمیان آنها بگذرد .

    سه خط آخر مقدار اولیه تمام ردیف a را بوسیله تکرار تودر توی SEQ ها صفر می دهد .

    ( به بخش 3.14 در مورد تکرارکننده مراجعه شود .) همچنین ، از آنجایی که زبان دارای انواع مختلف اعداد حقیقی است می بایست بطور صریح بیان می کردیم که 0.0 یک REAL32 است .

    می توان بیان شناسه هارا هر جای کد انجام داد به بیانی دیگر لازم نیست همه آنها ، مانند آنچه در پاسکال می بینیم در اول پردازه باشند .

    حوزه یک شناسه از جائی است که تعریف شده و شامل متن پردازش از جائیکه تعریف شده تا جائیکه مجدداً در داخل تعریف شود ، می باشد .

    در بالا ، حوزه nشامل تعریف ها به بعد ومتن SEQ بیرونی می شود .

    از آنجاییکه هدف عمده طراحی اوکم حفظ کردن برنامه های همزمان است ، نشانگر ها (1) تعریف نشده اند .

    3.6 سازنده ها (Con structors ) گروه سازنده ها دریک Pracess پردازش می شوند بعبارت دیگر آنها یک سلسه مراتب پردازش تو درتو را مانند عبارات تو درتو BEGIN – END در پاسکال ، مجاز می کنند .

    تمام سازنده ها ممکن است در پردازشها N دسته بندی شوند ( به استثنای WHILE) تسلسل ( SEQ) در صورت لزوم به اجرای پردازش های متعدد بصورت ترتیبی ، از ساختار SEQ استفاده می شود .بعنوان مثال : SEQ : A: = 3 B: = a+5 C: = a-5 1) Dainter سه پردازش اولیه را بصورت ترتیبی اجرا می کند .

    برای نشان دادن ساختمان ساختار أ کد با دو بافاصله قرار می گیرد .

    SEQ : -- Processes P1 and P2 are don sequentially P1 P2 دو خط تیره با هم نشانگر شروع یک توزیع در آخر خط است .

    DAR در صورتیکه اجرای چند پردازش بصورت همزمان ( موازی سازی واقعی یا توازی شبیه سازی شده توسط قسمت بندی زمانی ) مطلوب باشد ، از ساختار DAR استفاده می شود .

    در زیر دو پردازش موازی نشان داده شده است .

    PAR INT X : Ch1 ?

    X -- receive from chnnel ch 1 INT Y : Ch 2 ?

    y -- receive from chnnel ch 2 بطور کلی ، هر تعدا پردازش ( اولیه یا ساختاری ) را می توان بصورت مواز اجرا کرد.

    کل ساختار واقعی وقتی متوقف می شود که تمامی اجزای PAR متوقف شود .

    PAR -- P1,P2 and p3 are conceptually performed in parallei.

    P1 -- The whole construct terminates when all P2 --- three p1,p2 and p 3, terminates P3 شکل زیر مثالی است از بکارگیری یک سازنده موازی و ارتباط کانالی .

    دوزنجیره WHILE بصورت موازی اجرا می شوند .وپردازش بالا با پردازش پایین از طریق کانال Comms ارتیاط برقرار می کند .

    buffer.in --------P1---------Comms-------P2------buffer .OUT شکل 2 دو پردازش بافر : CHAN OF BYTE COMM , buffer .in buffe.out PAR WHILE TRUE BYTE X : SEQ Buffer .in ?

    x Comms!

    X WHILE TRUE , BYTE y: SEQ Comms ?

    y Buffer .out !

    y برای انتخاب یک پردازش وابسته به یک عبارت بولی (منطقه ای ) ، اوکم یک سازنده IF دارد .

    در حالیکه پاسکال یک گزینه بایزی (دو گانه شامل 0و1 ) دارد ، IF در اوکم یک گزینش گر چند طرفه است .

    IF --- standard IF with N way choice .

    The pi is selscted (BOOLean exp1) --- for the first BooLean expression true p1 (BOOLean exp2 ) p2 (BOOLean exp3) p3 پردازشی انتخاب می شود که اولین عبارت بولی آن( true ) ارزیابی شده باشد .اگر هیچ عبارت بولی true نباشد ، آنگاه ساختار IF مانند STOP عمل می کند .

    (یک توقف ) IF a>b c: =3 b c: =4 true skip در اینجا عبارت بولی trueحالتی را در بر می گیرد که a برابر b است ومانند Otherwise یا else در زبانهای دیگر عمل می کند برنامه نویسان همیشه با یک true رابرای آخرین وضعیت اعلام کنند .

    WHILE برای تکرار یک روند : اوکم از ساختار WHILE استفاده می کند .

    WHILE-- standard WHILELOOP.

    مانند : WHILEi I:=1 ALT اکثر اوقات نیاز داریم پردازشی را بر اساس شرطی بیش از یک عبارت بولی ( مانند یک IF ) انتخاب کنیم ( یک ALTernative) .

    این شرایط را گارد یا محافظ می نامنند .

    ( برگرفته از گاردهای جیکسترا 1 ) محافظها در اوکم می توانند وابسطه به آماده شدن کانالهای دریافت ، تایمرها و یا ترکیبی از دو عبارت بولی باشد .

    از بالاترین محافظ شروع میکند و همه محافظها را ارزیابی می کند ، altفقط در فقط در یک پردازش را انتخاب می کند بسته به آن که محافظ اول فعال شود اگر هیچ گاردی فعال نشود آنگاه ALT منتظر می ماند تا شرط یک محافظ فعال شود .

    ALT CH1 ?

    X A(1) : =X CH2 ?

    X A(2) : =X Time ?

    AFTER begin.

    Time + (10* sec) Skip در ALT فوق اگر ارسال برای Ch1 (کانال 1) یا ch2 آماده نباشد محافظ دریافت اجرا می شود و پس از آن عبارات .اگر هیچ ارسالی آماده نباشد پس از ده ثانیه محافظ تایمر فعال می شود : ALT Flag1 & ch1 ?

    X A : =3 Flag 2OR Flag 3) & c h2 ?

    y A := 4 SKIP A : = -1 در این مثال ALT ، پرچمهای بولی برای کنترل دریافتها استفاده می شود اگر دو محافظ اولی فعال نشوند ، فوراً محافظ SKIP فعال شده و a ، 1- تعیین می شود.

    1) Digkstras guards بطور کلی ، دقیقاً یک Pi انگلیسی ، بسته به محافظ ها ، برای اجرا انتخاب می شوند .

    )اگر بیش از یک محافظ true باشد ، طبق آنچه در راهنمای اوکم آمده ، فقط یک انتخاب می شود .

    ALT --- Exactly one pi is selected for the satisfied (guard1) --- guard .If more then one grand I s satisfied p1 then one is selected arbit/rarily.

    IFno (guard2) guard I s satisfied than ALT waits until a p2 -- grand I s satisfied (guard3) /p3 (guardn) /قالب محافظ ها بصورت زیر است : (receive) ( BOOLean exp ) & receive SKIP ( BOOLean exp ) & SKIP که ممکن است receive یک تایمر باشد .

    نوع دیگر از ALT ، PRIALT که اولویت را به محافظ اول می دهد .که درتمامی نسخه های اوکم تفاوتی بین ALT ، PRIALT وجود ندارد : این بدان معناست که با alternative ها به درستی برخورد نشده است و محافظ های بالا اغلب اول چک می شوند .

    این مسئله می تواند به کمبود در محافظ های پایین در صورت زیاد ، خورده بودن محافظ های بالا منجر شود .

    در این صورت اغلب محافظ های بالا فعال می شوند.

    برنامه ساده اوکم در اینجا یک برنامه ساده برای محاسبه جذر اعداد (1تا 10نشان داده شده است )( توجه کنید که داندانه گذاری ساختار را نشان می دهد و تمامی کلمات کلیدی باید با حروف بزرگ باشد ) همچنین توجه داشته باشید که روتین های کتابخانه ( که با SO شروع می شوند ) از پروتکل SP بر روی کانال های Keqboard و Screen استفاده می کنند .

    #INCLUDE hostio .inc -- contains sp protocol PROC Sqrt program (CHAN OF SP keyboard , screen) --- Occam 2 program to compute sq uare roots of nambers 1thru 10 # USE (( HOSTIO .LIB )) -- I/O library - always include BYTE Key ,result : REAL32 A: SEQ SO .Write.

    string .ni (keyboard , screen value square ROOt ) SEQ I = 1FOR 10 SEQ SO .Write.

    string ( keyboard , screen I = SO .Write.

    string .ni (keyboard , screen i2) A : REAL32 round I --- type conversion from ----- integer to raal SO .Writeraal3 2 (keyboard , screen SQRT (A) ,4 ,6 ) SO .Write.

    string .ni (keyboard , screen /) S/O .

    exit (keyboard , screen.

    Sps .

    success/)/ .PROS 1.3 / PROS ها یک پردازش را نامگذاری می کند و به پارامترها اجازه می دهد تا برحسب ارزش یا برحسب مرجع عبور کنند و مثابه SUBROUTINE در فورترن است .

    با بیانی دیگر فقط تخصیص حافظ ایستا متغیر ها مجاز است و هیچ نوع فعالیت برگشتی مجاز نیست .

    با استفاده از PROC ها ، مثال با فر بخش 3.8را دوباره انجام می دهیم .به عبور کانالها بدین مثال توجه کنید .

    --- other parts to program PROC buff (CHAN OF BYTE in ,out ) WHILE TRUE BYTE X ; SEQ In ?

    X Out !

    X -- end of BYTE comms buffer .in buffer .out PAR Buff ( buffer .hn , comms ) Buff ( comms buffer .out) یک پارامتر برحسب ارزش از کلمه کلیدی VAL در تیتر PROC استفاده می کنند .

    3.14 تکرار کننده ها ( R eplicators ) تمامی سازنده ها بجز WHILLE می توانند ساختار را برای ترکیب سازنده های تقریباً مشابه ، تکرار کنند .

    متغییر تکرار کننده : (در مثال پایین I ) ممکن است در پردازش جایگزین شود .

    بعنوان مثال ، n پردازش مواز ی یک بردار از n کانال را برای ارسال عناصر بردار A بصورت مفهومی موازی استفاده می کند .

    در اینجا n ثابت است .

    VAL n IS 10 :--- NUMBER OF PROCESSES (N) chan of real 32 Ch PAR I = FOR n Ch (i) !

    A ( I ) در زیر مثالی با IF تکرار شده آمده است .

    در اینجا ، b روش input- an - integer خودمان را به جای استفاده از روش کتابخانه So.read .

    echo .int استفاده کردیم .

    PROC Input .integer ( INT Out ) VAL Cr IS * C VAL ( 10) BYTE Digits IS ( 0, 1,2,3,4,5,6,7,8,9,): INT Sum ,Sign: BYTE Ch : BYTE result : SEQ Sum : =0 Sign : = 1 SO .Write .char (key board ,screen , ?

    ) --- print a prompt So geukey (key board ,screen ch .result ) SO .Write .char (key board ,screen ,ch ) --- echo character IF Ch SEQ Sign : = -1 So .getkey (key board ,screen ch .result ) --- echo character TRUE SKIP WHIE Ch<> Cr --- read digits until carriage return SEQ IF IF I = 0FOR 10 --- replicated IF :acts like 10 IF statements Ch = Digits (i) --- compare to each digit Sum : = (10 * sum) + I TRUE --- must be an error So .write .string (key board ,screen ,Bad integer ) So geukey (key board ,screen ch .result) SO .Write .char (key board ,screen ,ch ) --- echo character Out : sign * snm : ---end of input .integer 3.15 زمان TIME یک برنامه نویس می تواند متغیر های TIMER را برای ایجاد یک ساعت واقعی استفاده کند .

    این متغیر مخصوص توسط گاردهای ALT بصورت ذیل استفاده می شود .

    VAL ONE .SEC IS 15625 : -- number of ticks hn second on T rans puter Aint BEGIN ,TIME: TIMER time : SEQ --- Some code tim e ?

    BEGIN ,TIME PAR ALT -- wait for a second for send on channel ch then go on Ch ?

    y P1 ---som process Time ?

    AFTER BEGIN ,TIM + ONE .sec SKIP 4.روش شناسایی ایجاد برنامه های اوکم در اینجا معمول ترین را ه آشنایی با ایجاد برنامه های اوکم آمده است که از سه قدم بصورت ذیل تشکیل شده است .

    قدم 1: جعبه های پردازش ها ی همزمان را بکشید و همچنین خطوطی برای کانالهای ارتباطی اختصاص دهید .شیوه طراحی کلی را طراحی کنید .

    قدم 2: یک PROC برای هر جعبه بنویسید.

    جعبه هایی طراحی کنید که تکرار خواهند شد ومکان مستقل در نمودار داشته باشند .

    قدم 3: وسایل PAR ها ، PAR تکرار شوند ه وبردار کانالها برای توازی سازی و خطوط ارتباطی بسازید .

    5.

    مثال گسترده برای نشان دادن شیوه برنامه ریزی برای نشان دادن شیوه ، مثال 4مرحله ای خطوط ارتباطی برای یافتن جذرها با استفاده از تخمین نیوتن ، رافسون (1) را بررسی می کنیم برای جذر x از عبارت ذیل استفاده می کنیم .

    x Estimate I+1 = Estimate 1+ Estimate 2 هدف کلی انتقال X وتخمین اولیه X/2 به جعبه تکرار است که X وتخمین 1آن را به جعبه تکرار دیگری ، بصورتی که در زیر نشان داده شده ، انتقال می دهد .

    X,rootـــــNR N-1 ـــــ Xestـــ NR N-1 ـــــ X.est ــــ NR N-1 ITERATATION ITERATATION ITERATATION شکل 3.

    کانال ارتباطی برای تخمین جذر نیون رافسون .

    پس ازN انتقال جواب ریشه را دریافت می کنیم .

    حال با استفاده از سه قدم مذکور برنامه اوکم را می نویسیم .

    قدم 1: جعبه های پردازش را بکشید و همچنین خطوطی برای خطوط ارتباطی اختصاص دهید شیوه طراحی کل را طراحی کنید .

    برای هر جعبه تکرار یک پردازش همزمان اوکم در نظر می گیریم .در آخر هر خط ارتباط به یک پردازش همزمان نیاز خواهیم داشت .یکی برای خواند صفحه کلید ( Key board ) خوانده می شود کانالهای ارتباطی را به هم متصل می کند .

    برای مثال ، N ، تعداد تکرار ها ، 4 یا 4 مرحله در خطوط ارتباطی در نظر گرفته شد .

    1) estimate key board feed .X _----------Links (0) NR 0 ____Links (1) NR1 __- LINKS (2) NR2 __Links 3___links 4 ____ print .Root screen شکل 4.

    نمودار پردازش بر ای برنامه کانالها ی ارتباطی قدم 2: یک PROC برا ی هرجعبه بنویسید .

    جعبه هایی طراحی کنید که تکرارخواهند شد و مکان مستقل در نمودار داشته باشند .

    در این مرحله نیاز به نوشتن PROC داریم برای هر شکل جعبه یکی .

    --inport of pipeline REAL32 X : BOOL error : WHILE TRUE SEQ So .

    write.

    String.

    Nl (Kyboard,screen,type in a valuefor y.

    ) SO read.

    Echo.

    Rea132(Kyboard,screen,X,error ) So .

    write..nl(Kyboard,screen) Out !

    X / 2.0 (REAL32 ) end if feed .

    x proc feed .

    x ( CHAN OF ANY OUT ) -- read in real numbears and feed x and x/2 to procprint .

    root ( CHAN OF ANY IN ) -- receive x and root and print them REAL 32 X, ROOT : WHILE TRUE SEQ IN ?

    X IN ?

    ROOT SO .

    Write .

    string ( kyboard , screen , square root of ) SO .

    real32( kyboard , screen,x, 4 ,6 ) SO .

    string ( kyboard , screen , is ) SO .

    real32( kyboard , screen ROOT , 4 , 6 , ) SO .

    NL( kyboard , screen) end of print .

    root proc NR (AN OF ANY IN .

    OUT ) read in x and crrent E stimste , compute next iteration and ship out REAL32 X , E stimste: WHILE TRUE SEQ In ?

    x In ?

    estimate Out !

    estimate + ( x / (2.0 .( REAL 32 ) * estimate ) ) قدم 3: وسایل PAR ها PAR تکرار شونده ها بر بردار کانالها برای توازی سازی و خطوط ارتباطی بسازید .

    در زیر می توانید برنامه کامل اوکم 2 را مشاهده کنید .

    هر Fold شامل که اوکم برای همان proc است .

    وسایل زیر شامل سه پردازش در یک par است .

    جاییکه یکی از آنها PAR مکرر است .

    PROC NR ، N بار بوسیله ضرایب بردار کانالها تکرار شده است .

    # INCLUDE houst.

    Inc – contains sp protocol PROC Nnewt2 (CHAN OF SP keyboard screen ) pipeline example based on occam programming manual , I NMOS -- PRENTICE Hall , 1984 , section 2.

    8 .

    --computes square root of number oy pipeline --of Newton raphson iteratons -- programmed by dan hyde , bucknell university , gune , 1987 --updated gan 5 , 1991 #USE HOSTIO .

    LIB insert code for PROCfeedprint .x insert code for PROCfeedprint .

    root insert code for PROCfeedprint NR VAL N IS 4 : ( N+ 1 ) CHAN OF ANY links : PAR -- Harness Feed .

    x ( links ( o ) ) PAR I = o for N NR ( Links ( I ) , links ( I + 1 ) ) Print .

    root ( links ( n ) ) -- end of main با آنکه برنامه بالا بی نقص بنظر می رسد ولی اجرا نمی شود .چرا؟

    دو پردازش همزمان F eed.x.

    Print.Root قوانین استفاده از کانال را نقض می کنند .هر دو سعی بر خروج به صفحه ( Screen ) دارند ( هم مانند ورود در صفحه کلید ) بنابراین کانال ( Screen ) نقطه به نقطه نیست .( به بخش دو توجه کنید ) وقتی سعی می کنیم این را کمپایل کنیم ، کمپایلر مشکل را شناسایی کرده و پیغام خطای Usage error ,P arall el in puts - on Key board را می نویسد .برای تصحیح این مشکل دو پردازش Feed.x, Print.ROOt در یک پردازش به نام C on troller بصورتی که در زیر نشان داده شده ادغام میشوند .

  • فهرست:

    ندارد.
     

    منبع:

    ندارد.

(تغيير مسير از زبان برنامه‌نويسي C) پرش به: ناوبري, جستجو زبان برنامه‌نويسي C، زباني همه منظوره، ساخت يافته و روندگرا مي باشد که در سال ???? توسط دنيس ريچي در آزمايشگاه بل ساخته شد.[?] تاريخچه براي بررسي تاريخچه زبان C بايد به سال ???? بازگرديم که م

امروزه استاندارد هاي خاص بيت المللي مثل IEC 1131 براي برنامه نويسي و کار با PLC ها وجود دارد که اغلب شرکت هاي سازنده و طراح PLC که معمولا نرم افزارهاي مخصوص PLC هاي خودشان را توليد مي کنند. از اين روشهاي استاندارد شده پيروي مي کنند و فقط تفاوتهاي

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

تاريخچه ويژوال بيسيک .NET ويژوال بيسيک .NET توسعه يافته BASIC مي باشد. BASIC توسط پروفسور John Kemeny و Thomas Kurtz از کالج Dartmouth براي نوشتن برنامه هاي ساده ايجاد شد و اين طراحي از اواسط دهه 1960 آغاز گرديد. هدف از BASIC اوليه, آموزش برنامه

مقدمه طبق آمار سایت Global Videogame Market سهم 7 میلیون دلاری بازی های همراه از بازار 28 میلیارد دلاری بازی های رایانه در سال 2001 ( که تقریباً معادل 025/0درصد است) به سهم 6/3میلیارد دلاری از بازار 30 میلیارد دلاری بازی های رایانه ای در سال 2006 افزایش یافته است. یعنی تنها در عرض 6 سال این بازار رشدی 500 درصدی داشته است. ارقام وقتی حیرت آورتر می شود که پیش بینی کاربران بازی های ...

تاريخچه ويژوال بيسيک .NET ويژوال بيسيک .NET توسعه يافته BASIC مي باشد. BASIC توسط پروفسور John Kemeny و Thomas Kurtz از کالج Dartmouth براي نوشتن برنامه هاي ساده ايجاد شد و اين طراحي از اواسط دهه 1960 آغاز گرديد. هدف از BASIC اوليه, آموزش برنامه

++C ++C يک زبان برنامه نويسي همه منظوره و سطح بالا است. ++C يک زبان چندرگه است که از برنامه نويسي رويه‌اي، تجريد داده‌ها و برنامه نويسي شئ گرا پشتيباني مي‌‌کند. ++C به همراه جد خود C از پرطرفدارترين زبانهاي برنامه نويسي تجاري هستند. زبان برنامه‌

تاريخچه اي درباره ويژوال بيسيک ويژوال بيسيک توسعه يافته basic مي باشد.basicتوسط پروفسورjohn kemency وthomas kurts ازکالج dartmouth براي نوشتن برنامه هاي ساده ايجادشد واين طراحي ازاواسط دهه1960 آغازگرديد. هدف از بيسيک اوليه آموزش برنامه نويسي بود

دات‌نت محدود به نوع خاصي از برنامه‌ها نيست، از اين چارچوب مي‌توان براي توليد برنامه‌هاي تحت ويندوز، تحت وب، سرويس‌هاي مبتني بر وب و ... استفاده کرد. دات‌نت محدود به نوع خاصي از برنامه‌ها نيست، از اين چارچوب مي‌توان براي توليد برنامه‌هاي تحت ويندوز،

اينجانب لاله طاهري به شماره دانشجويي 83622242 پروژه کارآموزي خود را در ، شرکت مرواريد سپيد فارس واقع در خيابان زند نبش خيام طبقه فوقاني عکاسي ناز طبقه سوم واحد 1 گذرانده ام . اين پروژه شامل گزارش ها ، و تجربياتي است که در شرکت مرواريد سپيد فارس به م

ثبت سفارش
تعداد
عنوان محصول