لطفا وارد شوید یا ثبت‌نام کنید تا به انجمن‌ها دسترسی کامل داشته باشید.



 
امتياز موضوع :
  • 0 رأي - معدل امتيازات : 0
  • 1
  • 2
  • 3
  • 4
  • 5
multitreaded applications
2006-07-09, 01:31 AM,
ارسال : #1
multitreaded applications
سلام اساتید
من در برنامه نویسی لینوکس خیلی مبتدی ام . باید یه برنامه multitreaded برای پروژه پایان ترم بنویسم . اگر ممکن است بنده را راهنمایی کنید تا بی خود هی صفحات وب رو نخونم .
باتشکر پیشاپیش
نقل قول این ارسال در یک پاسخ
2006-07-09, 02:25 AM,
ارسال : #2
 
سلام دوست عزیز
اولا یه نکته اخلاقی بهت بگم . هنگامی که یه سری ادم جمع میشن و اصطلاحا یک community تشکیل میدن مسلما همه به یک سری اصول اعتقاد دارند . مجمعی که در این سایت تشکیل شده در راستای اعتقاد به فرهنگ گنو که همانا برابری و برادری و کمک به دیگران و share کردن هر انچه که داریم با دیگران است البته در محدوده کوچکتری به نام کامپیوتر که به نظر من می توان ان را در تمام زندگی بسط داد چون واقعا زیباتر از این نیست که انسان به همنوعش کمک کنه . مسلما چیزی مثل استاد و شاگرد در این فرهنگ بی معنی است . اینجا همه ما شاگردیم و همه ما استادیم . من چیزی می دونم که شما نمی دونید و متقابلا شما چیزی می دونید که من نمی دونم و اصلا جمع شدیم که مراتب رشد وتعالی همدیگر را فراهم کنیم . بنابراین مورد خطاب دادن افرادی به عنوان استاد در این مجمع به نظر من با فرهنگ گنو در تناقض است .

اما بپردازیم به بحث multithreading
اولا شما باید یه سری مفاهیم اصلی thread ها رو بدونید . باید بدونید thread چیه و با process چه فرقی داره ؟ چندین thread در یک برنامه از لحاظ segment هایی مثل code و data و stack و heap و shared memory و ... چه وضعیتی نسبت به هم دارند ؟ و سوالات دیگه که در اینجا خیلی بازش نمی کنم در کتاب های برنامه سازی لینکس می تونید بخونید . بعد می رسیم به نحوه پیاده سازی thread در سیستم عامل لینکس . به طور کلی ما در لینکس دو سطح پیاده سازی داریم . اولی kernel level thread ها هستند که از لحاظ کرنل به رسمیت شناخته شده و مثل pid_t برایشان threadid_t داریم . این جور thread ها در خود کرنل وجود دارند و البته application ها می توانند با استفاده از system call هایی مثل clone از این گونه thread ها instance بگیرن . و اما دسته دوم user level thread ها هستند که در داخل یک پروسس معنا دارند و کرنل از بیرون پروسس چیزی به نام thread نمی بیند . وظیفه handle کردن این گونه thread ها بر عهده کتابخانه های این کار می باشد . یه نکته هم اینکه kernel level thread ها از همه لحاظ که مهمترینش تخصیص پردازنده است مانند پروسس ها هستند ( البته در اولویت یکسان ) .
چیزی که به نظر میاد شما باید بدونید نحوه کار با کتابخانه های user level threading است البته امیدوارم که به مفاهیمی که در بالا اشاره کردم اشنایی داشته باشید . کتابخانه های زیادی در لینکس برای این کار وجود دارند که مهمترین و پایدار ترین و استاندارد ترین ان posix thread یا pthread می باشد . این کتابخانه به زبان C نوشته شده و امکانات خوبی دارد . توصیه می کنم برای اشنایی با نحوه کار این کتابخانه فصل 4 کتاب Advanced Linux Programming رو بخونید .
نمونه دیگری از این کتابخانه ها zthread می باشد که بنده کمی با ان کار کرده ام و به نظرم واقعا پر قدرت است و کلا به زبان ++C نوشته شده و API ان Object Oriented می باشد . این پروژه رو می تونید از <!-- m --><a class="postlink" href="http://zthread.sf.net">http://zthread.sf.net</a><!-- m --> بگیرید . در تایید عملکرد این کتابخانه می توان گفت که در کتاب ++Thinking in C از اقای eckel که یکی از منابع در تدریس برنامه سازی در دانشگاه های معتبر دنیاست این کتابخانه مورد اموزش قرار گرفته . مثال های این کتابخانه رو می تونید در انتهای کتاب مذکور پیدا کنید . با جستجوی در گوگل کتابخانه های دیگری هم ممکن است بیابید که امکانات بهتری داشته باشند . در مورد جستجو و خوندن صفحات وب این کار که بی فایده نیست . حد اقل فایده ای که می تونه داشته باشه اینه که به شما ایده میده و دید شما رو نسبت به application تون وسیع تر می کنه .
ببخشید طولانی شد . موفق باشید
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2006-07-10, 12:27 AM,
ارسال : #3
 
سلام اقای سعید
کلمه اساتید رو از روی قصد نگفتم فقط خواستم احترام گذاشته باشم . در هر صورت از تذکر اخلاقی تون ممنونم . واقعا به شما به خاطر این طرز فکر تبریک می گم . داشتم فکر می کردم دنیا چی میشد اگه همه مثل شما و بچه های این سایت فکر می کردند و البته از همه مهمتر عمل می کردند .

تقریبا مفهوم هایی رو که گفتید ای بهمون گفتن . kernel thread و اون یکی رو که اصلا نفهمیدم یعنی چی ؟ یعنی با چیز هایی که بهمون گفتن دچار یه دوگاتگی شدم . البته مهم نیست . فعلا من می خوام این پروژه رو بنویسم بدم بره . میشه مراحل کار با این کتابخانه ها رو توضیح بدین . البته استاد اسمی از pthread نیاورد . این کتاب Adanced linux programing v رو از کجا میشه دانلود کرد ؟ راستی اطلاعات شما خیلی خفنه :o یه ایمل بهتون زدم میشه بهش جواب بدین ؟ مرسی
نقل قول این ارسال در یک پاسخ
2006-07-10, 03:36 AM,
ارسال : #4
 
خواهشا thread ها رو با ‌fork قاطی نکنید.
دوست عزیز اگر می‌خوای شروع کنی manpage خود pthread_create رو بخون.خیلی عالیه.
pthread آخرین و کاملترین پیاده‌سازی thread ها هستش.
کد :
man pthread_create
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2006-07-10, 12:26 PM,
ارسال : #5
 
<!-- m --><a class="postlink" href="http://www.advancedlinuxprogramming.com/">http://www.advancedlinuxprogramming.com/</a><!-- m -->
نقل قول این ارسال در یک پاسخ
2006-07-10, 01:15 PM,
ارسال : #6
 
m_pahlevanzadeh نویسنده :خواهشا thread ها رو با ‌fork قاطی نکنید.

چشم اقای پهلوان زاده . قاطی نمی کنیم . شما خودتو ناراحت نکن

m_pahlevanzadeh نویسنده :pthread آخرین و کاملترین پیاده‌سازی thread ها هستش.

یعنی چی ؟ :roll:
نقل قول این ارسال در یک پاسخ
2006-07-10, 08:34 PM,
ارسال : #7
 
thread فقط یه مفهومه.پس کسی باید این مفهوم رو پیاده‌سازی بکنه یا نه؟
حالا من pthread رو توصیه می‌کنم که یکی از پیاده سازی‌های موجود است و خیلی کامله.
مشاهده تارنمای کاربر جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2006-07-27, 09:09 PM,
ارسال : #8
 
سلام استاد
میخواستم تفاوتهای شبکه LAN را با سیستم TIME SHARING بدانم.
متشکر
نقل قول این ارسال در یک پاسخ
2006-08-02, 02:17 PM,
ارسال : #9
 
اگر بخواهیم بر مبنای تعریف این دو واژه پیش برویم LAN یا Local Area Network یک شبکه ای از رایانه ها می باشد که می توانند در لایه ها و پروتکل های متفاوتی به هم متصل شده باشند که معمولا در لایه ethernet به وسیله سوییچ ها به هم متصل می شوند. نوع های wireless هم داریم . و اما در مورد سیستم های time sharing طبق تعریف به سیستم هایی گفته میشه اگر n کار برای انجام به سیستم وارد شود اجرای تک تک انها در زمان محدود اغاز شود ( بر اساس کتاب Operating Systems Concepts ) این تعریف خیلی شبیه تعریف multitasking هست ولی این دو تعریف کاملا مجزا هستند . خوب بر اساس ظاهر سوال شما این دو مقوله ربط چندانی به هم ندارند مگه اینکه منظورتون رو دقیق تر بگید تا دقیق تر بحث کنیم.
جستجوی تمامی ارسال های کاربر
نقل قول این ارسال در یک پاسخ
2010-03-25, 10:53 AM,
ارسال : #10
 
salam,khobid?bebakhshid chandta proje sari dashtam.mishe komakam konid?
1-yek package userlevel thread peyda konid nasb va ejra namaid
2-rahe hali baraye Blocking system call
3-chegone kovantome yek process ra beyne nakh haye haman farayand taghsim konim?
raje be timer haye narm afzari,dar kojaye system estefade mishe
4-nahveye nakh sazi dar zabani gheyr az c
5-yek barnameye boot besazid
6-system aamele minix che ghete code hai dare?ba mesal
نقل قول این ارسال در یک پاسخ


رفتن به انجمن :


کاربران در حال مشاهده موضوع : 1 مهمان