فهرست عناوین
مقایسه پراسس و ترد (Process vs. Thread)
در بخش اول پراسسها در لینوکس، پراسسها را بررسی کردیم و حالا قصد داریم پراسس را با مفهومی مشابه خودش یعنی ترد مقایسه کرده و تفاوتهایشان را بشناسیم.
Process
پراسس یک نمونه اجرایی از یک برنامه است. بلوک کنترل پراسس (PCB) که شامل اطلاعات مربوط به پراسس است، عملکرد هر پراسس را کنترل میکند. این اطلاعات شامل اولویت پراسس، شناسه پراسس، وضعیت پراسس و… میباشد.
یک پراسس میتواند پراسسهای دیگری را ایجاد کند که به عنوان پراسسهای فرزند شناخته میشوند. زمان خاتمه پراسس نسبت به ترد بیشتر است. همچنین پراسس ایزوله نیز هست، به این معنی که حافظه خود را با هیچ پراسسی به اشتراک نمیگذارد.
Thread
ترد یک واحد اجرایی است که بخشی از یک پراسس است. یک پراسس میتواند چندین ترد داشته باشد که همه بهصورت همزمان اجرا میشوند.
ترد سبک است و میتواند توسط زمانبند (Scheduler) به طور مستقل مدیریت شود. همچنین کمک میکند تا بتوان با استفاده از موازیسازی، عملکرد برنامه را بهبود داد. یک ترد دارای 3 حالت running ، ready, block است. تردها بر خلاف پراسس ایزوله نیستند، به این معنی که تردهای یک پراسس حافظه اشتراکی دارند.
تفاوتهای کلیدی پراسس و ترد چیست؟
- پراسس به معنای اجرای یک برنامه است. درحالیکه ترد بخشی از یک پراسس است.
- پراسس سبک نیست. درحالیکه تردها بسیار سبک هستند.
- پراسسها دادهای به اشتراک نمیگذارند. درحالیکه تردها اشتراک داده نیز دارند.
- پراسس منابع بیشتری از سیستم میگیرد. درحالیکه تردها منابع را کمتر استفاده میکنند.
- پراسس زمان بیشتری را برای (Context Switch) میطلبد. درحالیکه تردها زمان کمتری میگیرند.
- پراسسها ایزوله هستند. درحالیکه تردهای یک پراسس حافظه اشتراکی دارند.
- زمان خاتمه پراسس نسبت به تردها بیشتر است.
- پراسس برای ایجاد شدن نسبت به ترد به زمان بیشتری نیاز دارد.
Context Switch چیست؟
Context Switch فرآیند ذخیره وضعیت یک پراسس یا ترد است. بهگونهای که میتوان آن را بازیابی و مجدداً در مرحله بعد اجرا کرد.
Context Switch اجازه میدهد تا چندین پراسس به صورت اشتراکی از یک CPU در بازههای کوتاهمدت استفاده کنند که این امکان، یکی از ویژگیهای اساسی یک سیستمعامل Multi Tasking میباشد.