فرآیند در مقابل موضوع
برای اینکه به رایانه ها اجازه دهید بیش از یک فعالیت را در یک زمان انجام دهند، هم پردازش و هم رشته خدمات عالی ارائه می دهند، اما در نحوه عملکردشان تفاوت هایی بین آنها وجود دارد. همه برنامه هایی که روی کامپیوتر اجرا می شوند حداقل از یک فرآیند یا رشته استفاده می کنند. Process و Thread به پردازنده این امکان را می دهد که همزمان با اشتراک منابع رایانه، بین چندین کار به راحتی جابجا شود. بنابراین وظیفه یک برنامه نویس این است که از رشته ها و فرآیندها به روشی کارآمد برای ساخت یک پردازنده با کارایی بالا استفاده کند. اجرای رشته ها و فرآیندها بر اساس سیستم عامل موجود متفاوت است.
فرآیند چیست؟
فرآیند، به طور کلی، مجموعه ای مداوم از اقدامات برای دستیابی به یک نتیجه خاص است. اما، در دنیای کامپیوترها، یک فرآیند نمونه ای از یک برنامه کامپیوتری در حال اجرا است. به عبارت دیگر، این یک ایده از یک اتفاق واحد از یک برنامه کامپیوتری در حال اجرا است. فرآیندها به سادگی در حال اجرای باینری هستند که حاوی یک یا چند رشته هستند.
با توجه به تعداد رشته های درگیر در یک فرآیند، دو نوع فرآیند وجود دارد. آنها فرآیندهای تک رشته ای و فرآیندهای چند رشته ای هستند. همانطور که از نام آن پیداست، فرآیند تک رشته ای فرآیندی است که فقط یک رشته دارد. بنابراین، این موضوع یک فرآیند است و تنها یک فعالیت در حال وقوع است. در یک فرآیند چند رشته ای، بیش از یک رشته وجود دارد و بیش از یک فعالیت در حال انجام است.
دو یا چند فرآیند می توانند با استفاده از ارتباطات بین فرآیندی با یکدیگر ارتباط برقرار کنند. اما بسیار دشوار است و به منابع بیشتری نیاز دارد. هنگام ساخت یک فرآیند جدید، یک برنامه نویس باید دو کار را انجام دهد.آنها تکرار فرآیند والد و تخصیص حافظه و منابع برای فرآیند جدید هستند. بنابراین این واقعا گران است.
موضوع چیست؟
در دنیای فناوری اطلاعات، یک نخ کوچکترین اجرای دستورات یک برنامه کامپیوتری است که می توان آن را به طور مستقل طبق یک برنامه مدیریت کرد. thread یک مسیر ساده برای اجرا در یک فرآیند است. یک thread به اندازه یک فرآیند قدرتمند است زیرا یک thread می تواند هر کاری را انجام دهد که یک فرآیند می تواند انجام دهد. نخ یک فرآیند سبک وزن است و فقط به منابع کمتری نیاز دارد. موضوعات می توانند از همان متغیرها و متغیرهای ساختار داده بخوانند و بنویسند. موضوع می تواند به راحتی بین رشته ها ارتباط برقرار کند.
امروزه چند رشته ای به یک رویکرد طبیعی برای بسیاری از مشکلات تبدیل شده است. یک کار بزرگ به قسمت هایی تقسیم می شود و هر یک از آنها به واحدی از اجرا به نام نخ اختصاص داده می شود. این به سادگی چند رشته ای است. این نیاز به برنامهنویسی دقیق دارد زیرا رشتهها ساختارهای دادهای را به اشتراک میگذارند که در یک زمان توسط رشتهای دیگر اصلاح میشوند و همچنین به این دلیل که رشتهها فضای آدرس یکسانی را به اشتراک میگذارند.یکی دیگر از مزیت های نخ ها این است که رزوه ها راهی کارآمد و موثر برای دستیابی به موازی سازی هستند. توان عملیاتی یک سیستم را می توان با اجازه دادن به چندین رشته در چندین پردازنده افزایش داد زیرا thread یک موجودیت مستقل قابل زمانبندی است.
Mutli-threading
تفاوت بین Process و Thread چیست؟
• ایجاد فرآیندها دشوار است زیرا نیاز به تکرار فرآیند والد و تخصیص حافظه دارد، در حالی که رشته ها به راحتی ایجاد می شوند زیرا به فضای آدرس جداگانه نیاز ندارند.
• رشته ها برای کارهای ساده استفاده می شوند در حالی که فرآیندها برای کارهای سنگین مانند اجرای یک برنامه کاربردی استفاده می شوند.
• فرآیندها فضای آدرس یکسانی ندارند، اما رشتههای درون یک فرآیند فضای آدرس یکسانی را به اشتراک میگذارند.
• فرآیندها مستقل از یکدیگر هستند، اما رشته ها به دلیل اینکه فضای آدرس یکسانی دارند به یکدیگر وابسته هستند.
• یک فرآیند می تواند از چندین رشته تشکیل شده باشد.
• از آنجایی که رشته ها فضای آدرس یکسانی دارند، حافظه مجازی شده فقط با فرآیندها مرتبط است اما نه با رشته ها. اما یک پردازنده مجازی مجزا با هر رشته مرتبط است.
• هر فرآیند دارای کد و داده های خاص خود است در حالی که رشته های فرآیندها کد و داده های مشابهی دارند.
• هر فرآیند با یک رشته اصلی شروع می شود، اما در صورت نیاز می تواند رشته های اضافی ایجاد کند.
• جابجایی زمینه بین فرآیندها بسیار کندتر از جابجایی زمینه بین رشته های یک فرآیند است.
• رشتهها میتوانند به بخشهای داده آن دسترسی مستقیم داشته باشند، اما فرآیندها کپی مخصوص به خود از بخشهای داده دارند.
• فرآیندها دارای سربار هستند اما رشته ای ندارند.
خلاصه:
فرآیند در مقابل موضوع
Process و Thread دو تکنیکی هستند که توسط برنامه نویسان به منظور کنترل پردازنده و اجرای دستورالعمل ها بر روی رایانه به شیوه ای کارآمد و مؤثر مورد استفاده قرار می گیرند. یک فرآیند می تواند شامل چندین رشته باشد. Thread ها روشی کارآمد برای به اشتراک گذاشتن حافظه ارائه می دهند، اگرچه چندین اجرا را نسبت به فرآیندها انجام می دهند. بنابراین، نخ ها جایگزینی برای چندین فرآیند هستند. با روند رو به رشد به سمت پردازنده های چند هسته ای، نخ ها به مهم ترین ابزار در دنیای برنامه نویسان تبدیل خواهند شد.