تفاوت بین Thread و Process

این پست رو دو روز پیش منتشر کردم ولی خب به خاطر مشکل پیش اومده برای بلاگیفای حذف شد (بلخره پیش میاد دیگه منم بعضی وقتا از این اشتباهات میکنم)
ولی خب حیفم اومد دوباره نذارمش چون خودم خیلی دوستش داشتم.

شاید براتون سوال شده باشه که تفاوت بین Process و Thread چی هستش(برای خودم خیلی سوال بود و هیچوقت نمیفهمیدم)
میخوام خیلی ساده با یه مثال براتون توضیح بدم :)

یه آشپزخونه رو فرض بگیرید. این آشپزخونه منابع خودشو مثل اجاق گاز, یخچال, قابلمه, مواد غذایی و... داره.یه سری آشپز هم دارن توی این آشپزخونه کار میکنن و هر کدوم وظایف خودشون رو دارن برای مثال یکی برنج میپزه یکی پیاز پوست میکنه یکی کباب میزنه یکی سرخ میکنه و ...
اینجا آشپزخونه Process و آشپز های داخلش Thread محسوب میشن.
توی این آشپزخونه اگر آشپزی خطا یا اشتباهی کنه ممکنه کار سایر آشپز ها یا کل آشپزخونه رو مختل کنه. اما این اختلال برای سایر آشپزخونه ها نیست چون این آشپزخونه ها از هم جدا هستن و منابع خودشون رو دارن.
حالا به نظرتون اگر آشپزخونه آتیش بگیره سایر آشپزخونه ها هم آتیش میگیرن؟‌ خیر این اتفاق نمیوفته.

بیاید با نرم افزار مورد که Firefox هستش مثال رو کامل کنیم 🦊
فایرفاکس یه Process هستش که منابع خودشو مثل مموری,دیسک,شبکه و از همه مهمتر CPU رو داره.
اینجا کلی ترد هستن که دارن تو پراسس فایرفاکس کار میکنن برای مثال یه ترد تب ها رو مدیریت میکنه , یه ترد دانلود رو مدیریت میکنه, یه ترد درخواست های HTTP رو ارسال میکنه, یه ترد فایل های HTML رو رندر میگیره, یه ترد محیط گرافیکی UI رو رندر و مدیریت میکنه و ....

امیدوارم تا اینجا براتون قشنگ جا افتاده باشه :)

بریم چندتا تفاوت جزئی ترد و پراسس رو هم براتون بگم:

مموری

  • پراسس ها فضای آدرس جداگانه دارن
  • پراسس ها نمیتونن مموری هم دیگه رو ببینن
  • ترد های داخل یه پراسس مموری اشتراکی دارن (فقط Stack و Heap مجزا دارن)

هزینه ایجاد شدن

  • طبیعتا پراسس ها هزینه راه اندازیشون بیشتره چون باید منابع لود بشن, مموری تخصیص داده بشه و ...

سازگاری و ایمنی

  • پراسس ها از هم ایزوله هستن. خراب شدنشون روی هم تاثیر ندارن برای همین امنیت بالایی هم دارن
  • ترد ها چون مموری و منابع اشتراکی دارن ممکنه رو دیتای هم خرابکاری کنن

رفتار در حین کرش

  • کرش یا خراب شدن یه پراسس تاثیری روی سایر پراسس ها نداره
  • ولی کرش کردن یا خطا دادن یه ترد میتونه کار سایر ترد ها رو خراب کنه و یا حتی کل پراسس رو بخوابونه!

امیدوارم مفید بوده باشه :)


نظرات

blogify ۱۴۰۵/۰۲/۱۷

مرسی که دوباره گذاشتیش ❤️

پاسخ:

❤️


برای ارسال نظر باید وارد شوید.