پادشاه و کنیزک-دفتر اول مثنوی-مولوی

بشنوید ای دوستان این داستان                                                            خود حقیقت نقد حال ماست آن

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

اتفاقا شاه روزی شد سوار                                                                               با خواص خویش از بهر شکار

یک کنیزک دید شه بر شاهراه                                                                     شد غلام آن کنیزک پادشاه

مرغ جانش در قفس چون میطپید                                                   داد مال و آن کنیزک را خرید

چون خرید او را و برخوردار شد                                                                آن کنیزک از قضا بیمار شد

آن یکی خر داشت و پالانش نبود                                                       یافت پالان گرگ خر را در ربود

کوزه بودش آب مینامد بدست                                                      آب را چون یافت خود کوزه شکست

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

جان من سهلست جان جانم اوست                             دردمند و خستهام درمانم اوست

هر که درمان کرد مر جان مرا                                                                            برد گنج و در و مرجان مرا

جمله گفتندش که جانبازی کنیم                                                                 فهم گرد آریم و انبازی کنیم

هر یکی از ما مسیح عالمیست                                                                              هر الم را در کف ما مرهمیست

گر خدا خواهد نگفتند از بطر                                                                                  پس خدا بنمودشان عجز بشر

ترک استثنا مرادم قسوتیست                                                                           نه همین گفتن که عارض حالتیست

ای بسا ناورده استثنا بگفت                                                                         جان او با جان استثناست جفت

هرچه کردند از علاج و از دوا                                                                       گشت رنج افزون و حاجت ناروا

آن کنیزک از مرض چون موی شد                                               چشم شه از اشک خون چون جوی شد

از قضا سرکنگبین صفرا فزود                                                                          روغن بادام خشکی مینمود

از هلیله قبض شد اطلاق رفت                                                         آب آتش را مدد شد همچو نفت

شه چو عجز آن حکیمان را بدید                                                                                                پا برهنه جانب مسجد دوید

رفت در مسجد سوی محراب شد                                                            سجدهگاه از اشک شه پر آب شد

چون به خویش آمد ز غرقاب فنا                                                            خوش زبان بگشاد در مدح و دعا

کای کمینه بخششت ملک جهان                                                          من چه گویم چون تو میدانی نهان

ای همیشه حاجت ما را پناه                                                                            بار دیگر ما غلط کردیم راه

لیک گفتی گرچه میدانم سرت                                                 زود هم پیدا کنش بر ظاهرت

چون برآورد از میان جان خروش                                            اندر آمد بحر بخشایش به جوش

درمیان گریه خوابش در ربود                                                                           دید در خواب او که پیری رو نمود

گفت ای شه مژده حاجاتت رواست                            گر غریبی آیدت فردا ز ماست

چونک آید او حکیمی حاذقست                                                          صادقش دان کو امین و صادقست

در علاجش سحر مطلق را ببین                                                                  در مزاجش قدرت حق را ببین

چون رسید آن وعدهگاه و روز شد                                                        آفتاب از شرق اخترسوز شد

بود اندر منظره شه منتظر                                                                                            تا ببیند آنچ بنمودند سر

دید شخصی فاضلی پر مایهای                                                                            آفتابی درمیان سایهای

میرسید از دور مانند هلال                                                                             نیست بود و هست بر شکل خیال

نیستوش باشد خیال اندر روان                                                  تو جهانی بر خیالی بین روان

بر خیالی صلحشان و جنگشان                                                                           وز خیالی فخرشان و ننگشان

آن خیالاتی که دام اولیاست                                                                عکس مهرویان بستان خداست

آن خیالی که شه اندر خواب دید                                                           در رخ مهمان همی آمد پدید

شه به جای حاجبان فا پیش رفت                                                 پیش آن مهمان غیب خویش رفت

هر دو بحری آشنا آموخته                                                                                   هر دو جان بی دوختن بر دوخته

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

ای مرا تو مصطفی من چو عمر                                                                        از برای خدمتت بندم کمر

   

پاسخ تمرینات سری دوم امنیت شبکه-دانشگاه شهید بهشتی-نیمسال دوم ۹۵-۹۶

به نام خدا

تمرینات Buffer Overflow

استاد: دکتر مقصود عباسپور

کمک تدریس: جواد زندی

 

لطفا در ارسال تمرینات خود به نکات‌ مهم زیر توجه داشته باشید:

1-     مهلت این سری تمرینات تا ۴اردیبهشت می‌باشد.

2-     برای دانلود نسخه الکترونیکی PDF از لینک استفاده نمایید.

3-     نحوه تحویل تمرینات شما به دو صورت می‌تواند باشد:

الف) تمریناتی که به صورت سوالات تحلیلی و تعریفی و مسله‌ای است به صورت خوانا دستی روی کاغذ بنویسید و برگه خود را تحویل استاد درس دهید. در صورتی که مایل بودید می‌توانید تصویر مناسب از برگه تهیه کرده و در درس‌افزار بارگذاری نمایید.

ب) سوالاتی از تمرین که شامل برنامه‌نویسی است: در این مورد باید متن برنامه ‌(source code) که حتما باید قابل اجرا باشد به همراه متعلقات لازم در درس‌افزار با درنظرگرفتن عنوان مناسب با فرمول [SecNet95B][hw2][student#][full name] ارسال کنید. همچنین به خاطر داشته باشید که درصورتی که قصد دارید چندین فایل برای حل تمرین بفرستید، ابتدا باید آنها را zip کنید و نام فایل زیپ شده را به فرمول فوق درآورید.

4-     از آنجایی که پاسخ‌های شما بادقت صحیح‌می‌شود، ایده‌های‌خلاقانه و پاسخ‌های هوشمندانه در حل‌سوالات طبیعتا نمره‌ای فراتر از تمرین دارد.

برای مشاهده سوالات به ادامه مطلب بروید.

تمرین سری سوم امنیت شبکه – دانشگاه شهید بهشتی – نمیسال دوم ۹۵-۹۶

به نام خدا

تمرینات ‌سری سوم

استاد: دکتر مقصود عباسپور

کمک تدریس: جواد زندی

 

لطفا در ارسال تمرینات خود به نکات‌ مهم زیر توجه داشته باشید:

1-     مهلت این سری تمرینات ۷خرداد می‌باشد.

2-     برای دریافت این تمرین به صورت فایل pdf روی لینک کلیک کنید.

3-     نحوه تحویل تمرینات شما به دو صورت می‌تواند باشد:

الف) تمریناتی که به صورت سوالات تحلیلی و تعریفی و مسله‌ای است به صورت خوانا دستی روی کاغذ بنویسید و برگه خود را تحویل استاد درس دهید. در صورتی که مایل بودید می‌توانید تصویر مناسب از برگه تهیه کرده و در درس‌افزار بارگذاری نمایید.

ب) سوالاتی از تمرین که شامل برنامه‌نویسی است: در این مورد باید متن برنامه ‌(source code) که حتما باید قابل اجرا باشد به همراه متعلقات لازم در درس‌افزار با درنظرگرفتن عنوان مناسب با فرمول [SecNet95B][hw3][student#][full name] ارسال کنید. همچنین به خاطر داشته باشید که درصورتی که قصد دارید چندین فایل برای حل تمرین بفرستید، ابتدا باید آنها را zip کنید و نام فایل زیپ شده را به فرمول فوق درآورید.

4-     از آنجایی که پاسخ‌های شما بادقت صحیح‌می‌شود، ایده‌های‌خلاقانه و پاسخ‌های هوشمندانه در حل‌سوالات طبیعتا نمره‌ای فراتر از تمرین دارد.

5-     در مورد تمرینات این سری تحویل‌ها با کمی جزیات همراه می‌باشد. لطفا در ارایه تمرینات خود به آنها توجه نمایید. این جزیات در خود سوال حتما قید خواهد شد.

برای مشاهده سوالات به ادامه مطلب بروید.

پروژه نهایی سیستم عامل – نیمسال اول ۹۳-۹۴

 

به نام خدا

پروژه پاياني درس سیستم عامل

استاد: دکتر محسن ابراهیمی مقدم

کمک تدریس: جواد زندی  – زهرا خوبی

 

لطفا در ارسال پروژه خود به نکات‌ مهم زیر توجه داشته باشید:

1-     برای دریافت نسخهPDF تعریف پروژه از لینک استفاده نمایید.

2-     برای دریافت فایل‌های هسته اولیه برنامه نویسی پروژه و سایر فایل های مورد نیازتان، روی لینک کلیک کنید.

3-     پروژه اين درس در گروه‌‌های دونفره خواهد بود.

4-     براي تحويل پروژه بايد دو قدم زير را طي کنيد.

الف) ابتدا کد متن پروژه تان را به همراه راهنماي کامل که به صورت يک فايل pdf است در يک فايل zip‌ شده به بنده در فرمت زير ايميل خواهيد کرد. توجه داشته باشيد که عنوان ايميل و فايل ضميمه شده بايد از فرمول زير تبعيت کند. حتما به خاطر داشته باشید که در صورت ارسال با فرمت صحیح حتما یک ایمیل تاییدیه صورت خودکار توسط سیستم برای شما ارسال خواهد شد. در غیر این صورت پروژه شما به دست من نرسیده است.

[sbuos93a][project][studentNumber1][full name1][studentNumber2][full name2]

i.e.: [sbuos93a][project][89213092][Javad Zandi][89213092][Zahra Khobi]

ب) در فرصتي که بعدا اعلام خواهد شد به شما نوبت داده مي‌شود تا حضور پيدا کنيد و کد خودتان را توضيح دهيد. عدم حضور شما در تحويل حضوري به منزله عدم تحويل پروژه خواهد بود. لذا حتما در نوبتي که به شما داده مي‌شود به موقع حضور داشته باشيد.

5-     فراموش نکنيد براي ارزش يابي پروژه بايد يکبار کد شما خوانده شود. پس براي رفع ابهام از کدتان حتما از comment‌ استفاده کنيد.

6-     به خاطر داشته باشید که فايل پروژه خود را باید به ایمیل [email protected] بفرستید. همچنین هرگونه مشکل در روند کلاس و پیشنهادات خود را می‌توانید از این طریق پیگیری نمایید. از ارسال پروژه تان به گروه اجتناب کنید. بهتر است سوالات خود را در گروه مطرح کنید تا دیگر دوستان از مطالب فیض ببرند!

7-     پروژه شما به گونه‌اي طرح شده است که فقط با زبان‌هاي C/C++  قابل پياده‌سازي است. پس زبان مجاز شما فقط C/C++‌  و کتابخانه‌های قید شده مي‌باشد.

مقدمه

در این پروژه با مفاهیم Virtual Memory و Synchronizationآشنایی بیشتری پیدا می‌کنیم. پروژه شامل دو فاز است که باید جداگانه پیاده‌سازی شده و تحویل شوند (می‌توانید پس از تکمیل فاز اول یک کپی از کد خود بگیرید و آنرا در انتها همراه با کد کامل تحویل دهید).

شبیه‌سازی عملکرد Virtual Memory هدف این پروژه است. کلیت شبیه‌سازی در یک زبان برنامه‌سازی انجام می‌شود و زبان برنامه‌سازی مذکور باید امکانات همسان‌سازی (Synchronization) ‌را در اختیار برنامه‌نویس قرار دهد، نه اینکه به صورت خودکار پیاده کند. به عنوان مثال زبان‌های C و ++C ایده‌آل هستند.

 

فاز اول (۵۰ نمره) :

در فاز اول دو برنامه جداگانه باید نوشته شود،‌ یکی مدیر Paging Supervisor که از این پس آنرا Supervisor می‌نامیم، و دیگری مصرف‌کننده (Consumer). برنامه مدیر، باید برنامه مصرف‌کننده را به عنوان فرزند خود اجرا کند. در برنامه مدیر، یک آرایه بزرگ با مقدار قابل تغییر(ثابت در طول اجرای برنامه) برای شبیه‌سازی Page Table در نظر گرفته‌ می‌شود. این آرایه باید در فضای اشتراکی (Shared Memory) تخصیص‌یابد (مثلا با استفاده از دستور shmget در لینوکس). برنامه مصرف‌کننده نیز به این فضای اشتراکی دسترسی‌دارد. فضای دیگری تحت عنوان TLB به صورت اشتراکی در هر دوی این برنامه‌ها تخصیص می‌یابد، که کارکرد Translation Lookaside Buffer را شبیه‌سازی می‌کند.

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

در ابتدای فایل ورودی‌(که مصرف‌کننده آن را می‌خواند)، اندازه کلی حافظه و همچنین اندازه هر صفحه حافظه در دو خط مجزا به بایت مشخص شده‌اند. هنگامی که برنامه مصرف‌کننده به آدرسی مجازی می‌رسد که در جدول صفحات موجود نیست، یک Page Fault رخ می‌دهد. شبیه‌سازی این عمل را با ایجاد یک سیگنال دلخواه در برنامه مصرف‌کننده انجام می‌دهیم(تابع raise در لینوکس). برنامه مدیر، قبل از اجرای برنامه مصرف کننده تنظیم می‌کند که سیگنال مربوطه در برنامه مدیر پردازش شود، لذا وقتی برنامه مصرف‌کننده سیگنالی را raise کرد، کنترل به برنامه مدیر منتقل‌می‌شود و مدیر وظیفه دارد تا این حافظه را از دیسک به جدول صفحات منتقل کند(البته مفاهیم دیسک و حافظه مجازی هستند و کاری به دیسک و حافظه‌اصلی واقعی سیستم شما ندارند). برای سادگی کار، به انتقال داده از/به دیسک نیازی نیست، و فقط کافیست برنامه‌مدیر ردیف مربوطه از جدول صفحات(با درنظر گرفتن الگوریتم‌های جایگزینی صفحات) بروزرسانی کند.

تمام فرآیندهای مربوط به TLB نیز باید در این حین انجام شوند. توابعی برای دسترسی به Page Table و TLB برای شما به صورت پیش‌فرض ایجاد شده‌اند، در تابع دسترسی به Page Table تاخیری معادل چندین برابر دسترسی به TLB گنجانده شده است، لذا برنامه شما باید به صورت صحیح از این منابع استفاده کند تا سرعت بالاتر رود.

 

 

فاز دوم(۵۰ نمره):

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

                برنامه مدیر باید به‌ترتیب نام این فایلها را از ورودی خود بخواند و به مصرف‌کننده‌ها برای پردازش ارسال کند. توجه داشته‌باشید که تعداد مصرف‌کننده‌ها ثابت است، و همگی آنها باید در ابتدای اجرای مدیر اجرا شوند، نه پس از شروع فرآیند مدیر (يعني همگي از يک pool باشند و نه اينکه در طول اجراي برنامه spawn شود). هنگامی که تمام مصرف‌کننده‌ها مشغول هستند، برنامه مدیر صبر می‌کند تا یکی از آنها خالی شوند و سپس فایل بعدی را به او برای پردازش ارسال می‌کند.

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

در فاز دوم، باید دقت داشته باشید که تغییرات در TLB و Page Table باید به صورت همسان(synchronized) شده باشد، زیرا چندین برنامه در حال کار کردن با آن به صورت همزمان هستند. در غیر اینصورت عملیات دچار خطا خواهد شد.

 

توجه ۱: براي سادگي کار شما دوستان بنده يک template‌ را براي شما مهيا کرده‌ام که براي شما بهتراست در آن ساختار کد خود را بنويسيد. وجود اين template به شما کمک مي‌کند تا در پياده‌سازي دچار سردرگمي نشويد. البته استفاده از آن به اختيار شما مي‌باشد. در صورتی که مایل نیستید می‌توانید از آن استفاده نکنید.

 

نکات مورد نياز در تحويل پروژه:

1- برنامه شما حداقل بايد يک نوع واسط باشد چه CLI‌ و چه GUI.

2- عدم رخداد خطاي زمان اجرا و کار کردن با فايل به عنوان وردی مصرف‌کننده و مدیر الزامي است.

3- برنامه شما بايد تماما deadlock free و without starvation و Mutal Exclusion باشد.

4- براي ايجاد همروندي فقط بايد از multi processing استفاده کنيد. يعني برنامه مدير و مصرف‌کننده‌ها هريک بايد يک فرايند مستقل باشند.

5- برنامه مدیر باید هرگاه یک TLB miss یا Page fault که رخ داد، یک گزارش کامل شامل آدرس مجازی، شناسه مصرف‌کننده  و نوع خطا(TLB miss or Page fault) در یک خط در فایل خروجی طبق فرمت پیشنهادی بنویسد.

6- خروجی های شما الزاما باید داخل فایل باشد. یعنی برنامه مدیر و مصرف کننده هرنوع نوشته‌ای را باید در فایل بنویسند.

 

مقررات پروژه:

1) پروژه شما در گروه‌های ۲نفره خواهد بود. لذا درخواست گروه تک نفره یا ۳نفره را نفرمایید. کسانی که تک نفره مانده‌اند یک ایمیل به حل تمرین بفرستند تا حل تمرین برای آنان یک هم‌گروهی مناسب پیدا کند.

2) تا پایان ۲۶آذر فرصت دارید اسامی گروه خود را به حل‌تمرین ایمیل کنید.

3) تحویل حضوری شما حداکثر ۲۰ دقیقه مهلت دارد. لذا رایانه خود را به طور کامل آماده نمایید تا فرصت شما ضایع نشود. بهتر است از یک ساعت قبل همه چیز را آماده کنید تا برای شما مشکلی پیش نیاید.

4) به هیچ وجه کد خود را با دیگران به اشتراک نگذارید. در صورت مشاهده کد‌های مشابه، منفی حداکثر نمره پروژه به شما تعلق خواهد گرفت.

5) برای مبارزه با تقلب، در این پروژه علاوه‌بر تشابه کد، تشابه ایده‌های مورد استفاده و عدم تسلط کافی در هنگام تحویل حضوری، می‌تواند موجب دریافت منفی حداکثر نمره پروژه بشود.

6) برنامه‌زمانی برای تحویل پروژه: فاز اول را تا ۱دی تکمیل کنید و حضوری تحویل دهید. فاز دوم را تا ۱۵دی تکمیل کنید و تحویل دهید. این کار ۲دلیل دارد: الف) در صورتی که به اشکال برخورده‌اید می‌توانید در فرصت کافی آن را حل کنید و مشکلات زیاد را به روزهای آخر تحویل کلی پروژه موکول نکنید. ب) ایراد احتمالی در طراحی شما در ابتدا آشکار و رفع نقص خواهد شد.

7) در صورتی که تا ۱دی فاز اول را تحویل ندهید و هردو فاز را ۱۵دی تحویل دهید، ۳۵٪ نمره فاز اول را دریافت نخواهید کرد.

8) هیچ فرضی برای نحوه انجام دادن پروژه ننماید. هرجا در تعریف پروژه مفهوم گنگی وجود داشت بدون از دست رفتن وقت حتما سوال بفرمایید. بنده حتما در اسرع وقت پاسخ‌گوی شما خواهم بود.

9) از ۲۶آذر ساعت ۱ظهر به بعد در سیستم آموزش الکترونیکی وارد حساب کاربری خود بشوید و یک ساعت مناسب برای تحویل پروژه از لیست پیشنهادی انتخاب کنید (اینکار را فقط یک نفر از گروه انجام دهد و نه هر دو نفر).

10) دوستانی که با راه‌اندازی لینوکس آشنایی کافی ندارند به بنده مراجعه نموده و یک لینوکس مناسب برای برنامه‌نویسی دریافت کنند.

11) ایده‌های خلاقانه همیشه بسیار دوست داشتنی هستند. در هسته‌ی اصلی هر پروژه اگر ایده‌ی خلاقانه وجود داشته باشد، نمره‌ای فراتر از حد پروژه خواهد گرفت.

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

13) قبل از تحویل حضوری، حتما کد پروژه خود را به ایمیل حل‌تمرین ایمیل کنید.

14) حتما یک مستند متنی برای کدتان آماده کنید. اینکار به من کمک می‌کند کد شما را بهتر بفهمم و نمره‌ای بیشتر به تلاش شما بدهم.

15) هرگونه سوالی را در ساعت‌های مجاز پرسش و پاسخ بپرسید یا از طریق ایمیل حل تمرین جویا شوید.

موفق باشيد