رفتن به مطلب
مرجع رسمی سی‌پلاس‌پلاس ایران

پرچمداران

  1. بهنام صباغی

    بهنام صباغی

    کاربـــر رسمی


    • امتیاز

      2

    • تعداد ارسال ها

      84


  2. سید عمید قائم مقامی

    سید عمید قائم مقامی

    کاربـــر عـــــادی


    • امتیاز

      1

    • تعداد ارسال ها

      10



مطالب محبوب

در حال نمایش مطالب دارای بیشترین امتیاز در چهارشنبه, 13 تیر 1397 در پست ها

  1. 2 امتیاز
    خب پاسخ این این سوال خیلی راحت نیست یعنی توضیحات زیادی رو باید بدم و باید موارد زیادی رو در نظر بگیری . اول این رو بگم که این توی حوزه مهندسی نرم افزار هست و اگر دنبال جواب هستی سعی کن جزوه طراحی تحلیل سیستم ها و همینطور مهندسی نرم افزار رو گیر بیاری بخونی البته منم دوتا جزوه خوب دارم از این دوتا که سعی میکنم توی چندین پست مطالبشون رو یکم دسته بندی کنم و بذارم ولی بذار برای جواب بهت از سوالات ساده ترت شروع کنم . بله قطعا همینطور هست یعنی اگر شما پیاده سازی درست یا حتی طراحی درستی از سیستم نداشته باشید قطعا توی توسعش به مشکل میخورید و ممکنه باعث شکست پروژه بشه به احتمال زیاد . خب باید بگم این قطعی نیست و کاملا بستگی به نوع پروژه داره مثلا اگر پروژه یک برنامه ساده دسکتاپ باشه بعد از توسعش و رفع باگ اگر نخواید قابلیت جدید اضافه کنید نیازی نیست خیلی نگران هزینه نگه داری باشید . از طرفی اگر مثلا یک برنامه علمی سنگین رو دارید برای یه حوزه علمی توسعه میدید که خود اون حوزه داره پیشرفت میکنه قطعا هزینه نگهداری سنگین خواهد بود برای مثال فرض کنید شما دارید یک برنامه بر پایه هوش مصنوعی برای پوشش تصویری یک منطقه با توجه به پستی و باندی و نقاط کور برای یک ارگان نظامی توسعه میدید قطعا هزینه نگهداری این برنامه بسیار بالا خواهد بود چون هم حساسیت بالایی داره هم نیاز هست مدام ارتقاع داده بشه . این طبق همون اصول مهندسی نرم افزار هست توی طراحی توی کد زنی فقط یک سری موارد اضافه میشه که میشه از اونها به موارد زیر اشاره کرد داکیومنت کردن درست پروژه نام گذاری درست استفاده از کتابخانه‌های معتبر و فعال در کد به حد اقل رساندن چسبندگی در کد استفاده از روش‌های بهینه و قابل اثبات از نظر ریاضی برای حل مسائل (البته بجر مواردی که با هوش مصنوعی حل می‌شوند مانند مواردی که از الگوریتم ژنتیک استفاده شده و ...) توجه به الگو‌های طراحی در کد ... این مورد رو دقیقا متوجه نمیشم منظورتون چی هست اگر توی بحث الگوریتم منظورتون هست که هرکجا روش خودش رو می‌طلبه این سوال هم خیلی کلی هست نمیشه جواب درستی بهش داد ولی اون دوتا جزوه ای که گفتم رو بگرد پیدا کن هست توی نت قطعا به جواب‌هایی که می‌خوای می‌رسی من هم سعی میکنم توی وقت آزادم موارد این چنینی رو پوشش بدم به عنوان مقاله توی سایت .
  2. 1 امتیاز
    در این قسمت قصد داریم تا کمی با مفهوم Process و Thread آشنا شویم . Process : در آغاز برنامه ها بصورت فایلهایی بر روی هارد درایو قرار دارند . برای اجرا شدن آنها ، این فایلها از هارد به حافظه اصلی (یعنی رم) منتقل میشوند و کتابخانه های مورد نیاز درون آن لود میشوند و ..... سپس برنامه اجرا میگردد . در یک تعریف کلی از Process میتوان گفت یک برنامه اجرا شده در سیستم عامل میباشد که خود از واحدی کوچکتر به نام Thread (در ادامه توضیح داده میشود) تشکیل شده که کوچکترین واحد پردازشی در ویندوز میباشد که برای محاسبه به داخل CPU فرستاده میشود . در شکل زیر میتوانید حالت کلی یک Process را مشاهده کنید . از ویژگی یک Process میتوان به دارا بودن آدرس مجازی منحصر به فرد خود اشاره کرد و همچنین وجود PID منحصر به فرد که با فعال شدن هر Process این مقدار عددی به آن نسبت داده میشود تا برای رجوع کردن به Process از این عدد منحصر به فرد بجای نام آن استفاده شود. نکته دیگر در مورد این است که اگر یک Process در درون خود Process دیگری را بسازد ، در آنها رابطه پدر و فرزندی بوجود می آید و در نتیجه آن به وجود آمدن دو Thread و در نتیجه امکان استفاده از حالت پردازش همزمانی میشود . که البته API های ویندوز این امکان را به ما میدهند که حالت انتظار والد را هم انتخاب کنیم تا حالت پردازش همزمانی بوجود نیاید . دستورات کاربردی : (CMD) 1- مشاهده پروسس های در حال اجرا با دستور زیر tasklist 2-بستن یک Process taskkill به عنوان مثال : taskkill /f /pid 9876 Thread : همانطور که در بالا تشریح کردیم هر Process از حداقل یک Thread تشکیل شده تا از آن به عنوان واحد اجرایی برای خود استفاده کند . در واقع Process بدون Thread از دید سیستم عامل دلیلی برای ادامه کار ندارد و پروسس را از بین میبرد . یکی از کاربرد های Thread ایجاد پردازش همزمان در Process ها هست ، هر چند میتوان با ایجاد چند Process نیز به پردازش همزمان رسید اما برای ارتباط و گرفتن خروجی از هر Thread و استفاده در Thread دیگر به مشکل خورده (هرچند با روش هایی میتوان میان آنها حافظه به اشتراک گذاشت) . از Thread میتوان برای بهینه تر کردن برنامه استفاده کرد ، Thread در ویندوز کوچک ترین واحد پردازش میباشد که توسط برنامه نویس درون یک برنامه تعریف شده و سپس با فراخوانی API مناسب Thread ساخته و در صف Thread ها برای ورود به پردازنده قرار میگیرند . هر Thread شامل یک stack و یک TLS(Thread Local Storage) میباشد.(در شکل قسمت Process قابل مشاهده میباشد) . هر Thread که برای اجرا وارد پردازنده میگردد Task نامیده میشود . ویندوز ، سیستم عاملی چند برنامه ای (Multiprogramming) و چند وظیفه ای (Multitasking) را پشتیبانی میکند . در ویندوز برای پیاده سازی چند وظیفه ای از مدل (Multithreading) استفاده میشود . شکل زیر نشان دهنده Thread و رابطه آن را با CPU در حالت کلی نمایش میدهد.
این صفحه از پرچمداران بر اساس منطقه زمانی تهران/GMT+03:30 می باشد
×
×
  • جدید...