cloudavid
cloudavid
خواندن ۲ دقیقه·۳ سال پیش

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

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

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

پراسس

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

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

ترد

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

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

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

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

فرآیند Context Switch چیست؟

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

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


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