مقایسه پراسس و ترد (Process vs. Thread)

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

 

Process

پراسس یک نمونه اجرایی از یک برنامه است. بلوک کنترل پراسس (PCB) که شامل اطلاعات مربوط به پراسس است، عملکرد هر پراسس را کنترل می‌کند. این اطلاعات شامل اولویت پراسس، شناسه پراسس، وضعیت پراسس و… می‌باشد.

یک پراسس می‌تواند پراسس‌های دیگری را ایجاد کند که به عنوان پراسس‌های فرزند شناخته می‌شوند. زمان خاتمه پراسس نسبت به ترد بیشتر است. همچنین پراسس ایزوله نیز هست، به این معنی که حافظه خود را با هیچ پراسسی به اشتراک نمی‌گذارد.

 

Thread

ترد یک واحد اجرایی است که بخشی از یک پراسس است. یک پراسس می‌تواند چندین ترد داشته باشد که همه به صورت همزمان اجرا می‌شوند.

ترد سبک است و می‌تواند توسط زمان‌بند (Scheduler) به طور مستقل مدیریت شود. همچنین کمک می‌کند تا بتوان با استفاده از موازی‌سازی، عملکرد برنامه را بهبود داد. یک ترد دارای 3 حالت running ، ready, block است. تردها بر خلاف پراسس ایزوله نیستند، به این معنی که تردهای یک پراسس حافظه اشتراکی دارند.

تفاوت‌های کلیدی پراسس و ترد چیست؟

  • پراسس به معنای اجرای یک برنامه است. در حالی که ترد بخشی از یک پراسس است.
  • پراسس سبک نیست. در حالی که تردها بسیار سبک هستند.
  • زمان خاتمه پراسس نسبت به تردها بیشتر است.
  • پراسس برای ایجاد شدن نسبت به ترد به زمان بیشتری نیاز دارد.
  • پراسس زمان بیشتری را برای (Context Switch) می‌طلبد. در حالی که تردها زمان کمتری می‌گیرند.
  • پراسس‌ها ایزوله هستند. در حالی که تردهای یک پراسس حافظه اشتراکی دارند.
  • پراسس‌ها داده‌ای به اشتراک نمی‌گذارند. درحالی که تردها اشتراک داده نیز دارند.
  • پراسس منابع بیشتری از سیستم می‌گیرد. درحالی که تردها منابع را کمتر استفاده می‌کنند.

 

Context Switch چیست؟

Context Switch فرآیند ذخیره وضعیت یک پراسس یا ترد است. به گونه‌ای که می‌توان آن را بازیابی و مجدداً در مرحله بعد اجرا کرد.

Context Switch اجازه می‌دهد تا چندین پراسس به صورت اشتراکی از یک CPU در بازه‌های کوتاه مدت استفاده کنند که این امکان، یکی از ویژگی‌های اساسی یک سیستم‌عامل Multi Tasking می‌باشد.

مطالب مرتبط

پراسس‌ها در لینوکس / بخش اول
دستورات لینوکس که مدیران فناوری باید بدانند