تفاوت بین یک فرآیند و یک موضوع چیست؟

ساخت وبلاگ

تفاوت فنی بین یک فرآیند و یک موضوع چیست؟

احساس می کنم یک کلمه مانند "فرآیند" بیش از حد مورد استفاده قرار می گیرد و موضوعات سخت افزاری و نرم افزاری نیز وجود دارد. در مورد فرآیندهای وزن سبک به زبانهایی مانند ارلانگ چطور؟آیا دلیل قطعی برای استفاده از یک اصطلاح نسبت به دیگری وجود دارد؟

احتمالاً این ضمانت نامه ها می گویند که هر سیستم عامل ایده متفاوتی از آنچه "موضوع" یا "فرآیند" است ، دارد. برخی از سیستم عامل های اصلی "مفهومی از" نخ "ندارند ، همچنین برخی از سیستم عامل های تعبیه شده وجود دارد که فقط دارای" موضوعات "هستند.

TLDR: "موضوعات" خواهر و برادر (در بیشتر سیستم عامل ها) همان فضای آدرس مجازی ، همان سوکت ها و پرونده های باز را به اشتراک می گذارند ، همه منابع یکسان. از طرف دیگر "فرآیندها" از یکدیگر جدا شده و محافظت می شوند ، و آنها چیزی به اشتراک نمی گذارند ، مگر اینکه صریحاً درخواست کنند تا موارد خاصی را به اشتراک بگذارند. در سیستم عامل که دارای "فرآیند" و "موضوعات" است ، فرآیند اغلب می تواند به عنوان یک ظرف برای یک یا چند موضوع و برای همه منابعی که به اشتراک می گذارند تصور شود.

35 پاسخ 35

هر دو فرآیند و موضوعات توالی مستقل از اجرای هستند. تفاوت معمولی در این است که موضوعات (از همان فرآیند) در یک فضای حافظه مشترک اجرا می شوند ، در حالی که فرآیندها در فضاهای حافظه جداگانه اجرا می شوند.

من مطمئن نیستم که موضوعات "سخت افزار" در مقابل "نرم افزار" که ممکن است به آنها مراجعه کنید. موضوعات به جای یک ویژگی CPU ، یک ویژگی محیط عملیاتی است (اگرچه CPU به طور معمول دارای عملیاتی است که موضوعات را کارآمد می کند).

ارلانگ از اصطلاح "فرآیند" استفاده می کند زیرا یک مدل چند برنامه نویسی مشترک با حافظه مشترک را در معرض نمایش قرار نمی دهد. تماس با آنها "موضوعات" دلالت بر این دارد که حافظه مشترک دارند.

موضوعات سخت افزاری احتمالاً به متن های مختلف موضوع در یک هسته (به عنوان مثال Hyperthreading ، SMT ، Sun's Niagara/Rock) اشاره دارند. این بدان معنی است که پرونده های ثبت شده تکراری ، بیت های اضافی که با دستورالعمل از طریق خطوط لوله حمل می شوند ، و از جمله موارد دیگر ، منطق دور زدن/حمل و نقل پیچیده تر هستند.

Greg ، یک شک من در موضوعات دارم. بگذارید در نظر بگیرم که من یک فرآیند A دارم که در RAM فضایی پیدا کرده است. اگر فرآیند A یک نخ ایجاد کند ، موضوع نیز به فضای لازم برای اجرای آن نیاز دارد. بنابراین آیا اندازه فضایی را که برای فرآیند A ایجاد شده است ، یا فضایی برای نخ ایجاد شده در جای دیگر افزایش می دهد؟بنابراین این روند فضایی مجازی چه چیزی را ایجاد می کند؟لطفاً اگر سوال من اشتباه است ، من را اصلاح کنید. با تشکر

jeshwanthkumak: ایجاد یک موضوع جدید حداقل حافظه کافی را برای یک پشته جدید اختصاص می دهد. این حافظه توسط سیستم عامل در فرآیند A اختصاص می یابد.

این پاسخ اشتباه به نظر می رسد. اگر هر دو فرآیند و رشته‌ها دنباله‌های اجرا مستقل باشند، در آن صورت فرآیندی که شامل دو رشته است باید سه دنباله اجرا داشته باشد، و این نمی‌تواند درست باشد. فقط یک thread دنباله ای از اجرا است -- یک فرآیند محفظه ای است که می تواند یک یا چند دنباله اجرا را در خود جای دهد.

«رشته‌های سخت‌افزاری» رشته‌هایی هستند که منابع سخت‌افزاری جداگانه (یک هسته، پردازنده یا ابررشته جداگانه) به آنها داده می‌شود.«رشته‌های نرم‌افزاری» رشته‌هایی هستند که باید برای قدرت پردازش یکسان با هم رقابت کنند.

این اطلاعات در Microsoft Lea here: About Processes and Threads یافت شد

فرآیند هر فرآیند منابع مورد نیاز برای اجرای یک برنامه را فراهم می کند. یک فرآیند دارای فضای آدرس مجازی، کد قابل اجرا، دستگیره های باز برای اشیاء سیستم، زمینه امنیتی، شناسه فرآیند منحصر به فرد، متغیرهای محیطی، کلاس اولویت، حداقل و حداکثر اندازه مجموعه کاری و حداقل یک رشته اجرا می باشد. هر فرآیند با یک رشته شروع می شود که اغلب به آن نخ اصلی می گویند، اما می تواند رشته های اضافی را از هر یک از رشته های خود ایجاد کند.

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

مایکروسافت ویندوز از چندوظیفه پیشگیرانه پشتیبانی می کند که اثر اجرای همزمان چندین رشته از چندین فرآیند را ایجاد می کند. در یک کامپیوتر چند پردازنده ای، سیستم می تواند همزمان به تعداد پردازنده هایی که روی کامپیوتر وجود دارد، رشته ها را اجرا کند.

برای افرادی که می خواهند بدانند چرا نمی توانید یک فلاپی را همزمان فرمت کنید: stackoverflow.com/questions/20708707/…

@LuisVasconcellos - اگر رشته‌ای وجود نداشت، فرآیند هیچ کاری انجام نمی‌داد. این فرآیند فقط مقداری کد و وضعیت برنامه در حافظه بارگذاری می شود. فایده زیادی ندارهمانند داشتن جاده ای است که هیچ وسیله نقلیه ای در آن تردد نمی کند.

این پاسخ بهتر از پاسخ پذیرفته شده است زیرا در مورد ایده آل فرآیندها و موضوعات صحبت می کند: آنها باید با نگرانی های جداگانه چیزهای جداگانه باشند. واقعیت این است که بیشتر سیستم عامل ها دارای تاریخچه ای هستند که دورتر از اختراع موضوعات برمی گردد و در نتیجه ، در بیشتر سیستم های عامل ، این نگرانی ها هنوز هم تا حدودی درگیر هستند ، حتی اگر به آرامی با گذشت زمان بهبود یابد.

با نهایت احترام ، آقا این پاسخ اشاره ای به کسانی است که از قبل می شناسند ، و به کسانی که نمی دانند کمک نمی کند. این تقریباً مانند ورود ویکی پدیا می خواند.

bkspurgeon با هر توضیحی که می دهد ، باید خواننده خود را از یک سطح درک به سطح بعدی ببرید. متأسفانه ، من نمی توانم پاسخ هر خواننده را تنظیم کنم و بنابراین باید سطح دانش را فرض کنم. برای کسانی که نمی دانند ، می توانند در مورد اصطلاحاتی که من از آنها استفاده می کنند ، آنها را درک کنند ، نمی توانند ، تا زمانی که به یک نقطه پایه که می فهمند برسند. من قصد داشتم به شما پیشنهاد کنم که پاسخ خود را ارائه دهید ، اما خوشحالم که می بینم که قبلاً دارید.

  • یک نمونه اجرا از یک برنامه یک فرآیند نامیده می شود.
  • برخی از سیستم عامل ها از اصطلاح ‘Task‘ برای مراجعه به برنامه ای که اجرا می شود استفاده می کنند.
  • یک فرآیند همیشه در حافظه اصلی ذخیره می شود که به عنوان حافظه اصلی یا حافظه دسترسی تصادفی نیز نامیده می شود.
  • بنابراین ، یک فرایند به عنوان یک موجود فعال نامیده می شود. در صورت راه اندازی مجدد دستگاه از بین می رود.
  • چندین فرآیند ممکن است با یک برنامه مشابه همراه باشد.
  • در یک سیستم چند پردازنده ، چندین فرآیند را می توان به صورت موازی اجرا کرد.
  • در یک سیستم یک پردازشگر ، گرچه موازی واقعی به دست نیامده است ، یک الگوریتم برنامه ریزی فرآیند اعمال می شود و پردازنده قرار است هر فرآیند را یک بار در یک زمان اجرا کند و توهم همزمانی را انجام دهد.
  • مثال: اجرای چندین نمونه از برنامه "ماشین حساب". هر یک از نمونه ها به عنوان یک فرآیند نامیده می شوند.
  • موضوع زیر مجموعه ای از فرآیند است.
  • این ماده به عنوان "فرآیند سبک وزن" نامیده می شود ، زیرا شبیه به یک فرآیند واقعی است اما در چارچوب یک فرآیند اجرا می شود و منابع مشابهی را که توسط هسته به این روند اختصاص داده شده است ، به اشتراک می گذارد.
  • معمولاً یک فرآیند فقط یک موضوع کنترل دارد - یک مجموعه از دستورالعمل های دستگاه در یک زمان.
  • یک فرآیند همچنین ممکن است از چندین موضوع اجرا تشکیل شود که همزمان دستورالعمل ها را اجرا می کنند.
  • موضوعات چندگانه کنترل می توانند از موازی واقعی ممکن در سیستم های چند پردازنده سوء استفاده کنند.
  • در یک سیستم یک پردازنده یکپارچه ، یک الگوریتم برنامه ریزی موضوع اعمال می شود و پردازنده برنامه ریزی شده است که هر موضوع را به طور همزمان اجرا کند.
  • تمام موضوعات در حال اجرا در یک فرآیند ، همان فضای آدرس ، توصیف کننده پرونده ، پشته و سایر ویژگی های مربوط به فرآیند را به اشتراک می گذارند.
  • از آنجا که موضوعات یک فرآیند همان حافظه را به اشتراک می گذارند ، همگام سازی دسترسی به داده های مشترک در این فرآیند اهمیت بی سابقه ای دارد.

کومار: از دانش من ، موضوعات همان پشته را به اشتراک نمی گذارند. در غیر این صورت امکان اجرای کد های مختلف برای هر یک از آنها امکان پذیر نیست.

بله فکر می کنم MihaineAcsu درست است. موضوعات "کد ، داده و پرونده" را به اشتراک می گذارند و "ثبت و پشته" خود را دارند. اسلاید از دوره سیستم عامل من: i. imgur.com/iq1qprv. png

این کاملاً مفید است ، زیرا در مورد موضوعات و فرآیندها و چگونگی ارتباط آنها با یکدیگر گسترش می یابد. من پیشنهاد می کنم نمونه ای از یک موضوع را اضافه کنید ، به خصوص که یک فرآیند وجود دارد. چیزهای خوب!

با تشکر از شما برای پاسخ دقیق اما در واقع همانطور که mihai neacsu اظهار داشت موضوعات دیگر بخش های دیگری را به عنوان داده ، کد و پشته نیز به اشتراک می گذارند ، اما آنها پشته تماس خود را به اشتراک نگذاشتند ، ممکن است منظور شما این باشد که موضوعات می توانند به سایر موضوعات دسترسی پیدا کنند که آن را به اشتراک نمی گذارند. آنها به اشتراک می گذارند که از هماهنگی اشیاء مراقبت می کند ، بیشتر یک روند جهنم است.

@dp13 مشکل فقط استفاده از کلمه "پشته" به جای "پشته" است. موضوعات پشته ها را به اشتراک می گذارند زیرا پشته فقط بخشی از حافظه مجازی است و موضوعات تمام حافظه مجازی را به اشتراک می گذارند. موضوعات حتی می توانند نشانگرهای پشته خود را تحریک کنند و اجرای آن توسط موضوع دیگری و بدون هیچ مشکلی می تواند از سر گرفته شود. این اتفاق می افتد که یک موضوع در حال اجرا یک پشته در یک زمان خاص به این معنی نیست که موضوعات پشته را به اشتراک نمی گذارند دقیقاً مانند این واقعیت که یک موضوع در یک زمان روی توصیف کننده پرونده کار می کند به این معنی نیست که موضوعات توصیف کننده های پرونده را به اشتراک نمی گذارندبشر

ابتدا بیایید به جنبه نظری نگاه کنیم. شما باید درک کنید که یک فرآیند از نظر مفهومی برای درک تفاوت بین یک فرآیند و یک موضوع و آنچه بین آنها به اشتراک گذاشته شده است.

ما موارد زیر را در بخش 2. 2. 2 مدل موضوع کلاسیک سیستم عامل های مدرن 3E توسط Tanenbaum داریم:

مدل فرآیند مبتنی بر دو مفهوم مستقل است: گروه بندی منابع و اجرای. گاهی اوقات جدا کردن آنها مفید است. اینجاست که موضوعات وارد می شوند.

یکی از راه های دیدن یک فرآیند این است که راهی برای گروه های مرتبط با هم است. یک فرآیند دارای فضای آدرس حاوی متن و داده های برنامه و همچنین منابع دیگر است. این منابع ممکن است شامل پرونده های باز ، فرآیندهای کودک ، هشدار در انتظار ، گیرنده سیگنال ، اطلاعات حسابداری و موارد دیگر باشد. با جمع کردن آنها به صورت یک فرآیند ، می توان آنها را راحت تر مدیریت کرد. مفهوم دیگری که یک فرآیند انجام می دهد ، موضوع اعدام است که معمولاً فقط به موضوع کوتاه می شود. موضوع دارای پیشخوان برنامه است که پیگیری می کند که دستورالعمل لازم برای اجرای بعدی را انجام می دهد. دارای رجیستری است که متغیرهای کار فعلی خود را در خود جای داده است. این پشته است که شامل سابقه اجرای آن است ، با یک قاب برای هر رویه ای به نام اما هنوز از آن بازگردانده نشده است. اگرچه یک موضوع باید در برخی از فرآیند ها اجرا شود ، موضوع و فرآیند آن مفاهیم مختلفی است و می توان به طور جداگانه با آنها رفتار کرد. فرآیندها برای گروه بندی منابع با هم استفاده می شوند. موضوعات موجوداتی هستند که برای اجرای CPU برنامه ریزی شده اند.

در پایین او جدول زیر را ارائه می دهد:

بیایید با مسئله چند رشته سخت افزاری مقابله کنیم. از نظر کلاسیک ، یک پردازنده از یک موضوع واحد از اجرای ، حفظ وضعیت موضوع از طریق یک پیشخوان برنامه واحد (PC) و مجموعه ای از ثبت ها پشتیبانی می کند. اما چه اتفاقی می افتد که یک حافظه پنهان وجود داشته باشد؟واکشی داده ها از حافظه اصلی مدت زمان زیادی طول می کشد ، و در حالی که این اتفاق می افتد ، پردازنده فقط در آنجا بیکار نشسته است. بنابراین شخصی این ایده را داشت که اساساً دو مجموعه از حالت نخ (PC + ثبت نام) داشته باشد تا موضوع دیگری (شاید در همان فرآیند ، شاید در یک فرآیند متفاوت باشد) بتواند کار را انجام دهد در حالی که موضوع دیگر منتظر حافظه اصلی است. نام ها و پیاده سازی های مختلفی از این مفهوم وجود دارد ، مانند Hyper-Threading و Multithreading همزمان (SMT برای کوتاه).

حال بیایید به سمت نرم افزار نگاه کنیم. در اصل سه روش وجود دارد که می توان موضوعات را در سمت نرم افزار پیاده سازی کرد.

  1. موضوعات فضایی کاربر
  2. نخهای هسته
  3. ترکیبی از این دو

تمام آنچه شما برای پیاده سازی موضوعات نیاز دارید امکان ذخیره حالت CPU و حفظ پشته های متعدد است که در بسیاری موارد می تواند در فضای کاربر انجام شود. مزیت موضوعات فضایی کاربر سوئیچینگ موضوع بسیار سریع است زیرا لازم نیست در هسته و امکان برنامه ریزی موضوعات خود را به روشی که دوست دارید به دام بیندازید. بزرگترین اشکال عدم توانایی در انجام مسدود کردن I/O (که باعث مسدود کردن کل فرآیند و تمام موضوعات کاربر آن می شود) است که یکی از دلایلی است که در وهله اول از آنها استفاده می کنیم. مسدود کردن I/O با استفاده از موضوعات ، طراحی برنامه را در بسیاری موارد بسیار ساده می کند.

موضوعات هسته این مزیت را دارند که علاوه بر اینکه تمام مشکلات برنامه ریزی را به سیستم عامل می اندازند ، می توانند از مسدود کردن I/O استفاده کنند. اما هر سوئیچ نخ نیاز به به دام انداختن در هسته دارد که به طور بالقوه نسبتاً کند است. با این حال ، اگر به دلیل I/O مسدود شده موضوعات را تغییر می دهید ، این مسئله واقعاً مسئله ای نیست زیرا عملیات I/O احتمالاً شما را به هر حال در هسته قرار داده است.

رویکرد دیگر ترکیب این دو است ، با چندین موضوع هسته ، هر یک دارای چندین موضوع کاربر هستند.

بنابراین با بازگشت به سؤال خود در مورد اصطلاحات ، می بینید که یک فرآیند و یک موضوع از اجرای دو مفهوم متفاوت است و انتخاب شما برای استفاده از کدام اصطلاح بستگی به آنچه شما در مورد آن صحبت می کنید بستگی دارد. با توجه به اصطلاح "فرآیند وزن سبک" ، من شخصاً این نکته را نمی بینم زیرا واقعاً آنچه را که اتفاق می افتد و همچنین اصطلاح "موضوع اجرای" را منتقل نمی کند.

پلتفرم های تجاری...
ما را در سایت پلتفرم های تجاری دنبال می کنید

برچسب : نویسنده : کمال بهروزکیا بازدید : 42 تاريخ : جمعه 4 فروردين 1402 ساعت: 19:19