سؤال

ما هو الفرق الفنية بين عملية الخيط ؟

أشعر كلمة مثل 'عملية' هو يبالغ وهناك أيضا الأجهزة والبرمجيات المواضيع.ماذا عن خفيفة الوزن العمليات في لغات مثل إرلانج?هل هناك سبب نهائي استخدام مصطلح واحد على الآخر ؟

هل كانت مفيدة؟

المحلول

وكلتا العمليتين والمواضيع هي متواليات مستقلة التنفيذ. الفرق النموذجي هو أن الخيوط (من نفس العملية) تشغيل في مساحة الذاكرة المشتركة، في حين تشغيل العمليات في المساحات ذاكرة منفصلة.

ولست متأكدا ما "الأجهزة" مقابل المواضيع "البرمجيات" التي قد تكون اشارة الى. المواضيع هي ميزة بيئة العمل، بدلا من أن يكون ميزة وحدة المعالجة المركزية (CPU على الرغم من أن لديها عادة العمليات التي تجعل المواضيع فعالة).

وإرلانج يستخدم "عملية" المدى لأنه لا يعرض نموذج متعدد البرامج الذاكرة المشتركة. سوف وصفها بأنها "المواضيع" يعني أن لديهم الذاكرة المشتركة.

نصائح أخرى

عملية
كل عملية توفر الموارد اللازمة لتنفيذ البرنامج.عملية لديه مساحة العنوان الظاهرية ، قانون قابل للتنفيذ, مقابض مفتوحة إلى كائنات نظام الأمن السياق عملية فريدة من نوعها معرف متغيرات البيئة أولوية الدرجة الأدنى والحد الأقصى مجموعة العمل الأحجام واحد على الأقل موضوع التنفيذ.كل عملية بدأت مع خيط واحد ، وغالبا ما تسمى ترابط الأساسي ، ولكن يمكن أن تخلق المزيد من المواضيع من أي من المواضيع.

الموضوع
الموضوع هو كيان في إطار عملية يمكن أن يكون موعد التنفيذ.جميع المواضيع من عملية تقاسم مساحة العنوان الظاهرية وموارد النظام.بالإضافة إلى ذلك, كل موضوع يحافظ على معالجات الاستثناء ، جدولة أولوية التخزين المحلي لمؤشر الترابط الفريد الموضوع المعرف ، و مجموعة من هياكل النظام سوف تستخدم لحفظ الموضوع السياق إلى أنه من المقرر.موضوع السياق يتضمن الموضوع مجموعة من آلة تسجيل ، مكدس kernel, موضوع البيئة كتلة المستخدم المكدس في مساحة العنوان من موضوع العملية.المواضيع يمكن أن يكون أيضا أمنهم السياق ، والتي يمكن استخدامها لانتحال شخصية العملاء.


وجدت هذا على MSDN هنا:
عن العمليات والخيوط

Microsoft Windows يدعم وقائية تعدد المهام ، مما يخلق تأثير التنفيذ المتزامن مواضيع متعددة من عمليات متعددة.على جهاز كمبيوتر متعدد المعالجات ، يمكن للنظام في وقت واحد تنفيذ العديد من المواضيع كما أن هناك معالجات على الكمبيوتر.

العملية:

  • المنفذة سبيل المثال برنامج يسمى العملية.
  • بعض أنظمة التشغيل استخدام مصطلح 'المهمة' للإشارة إلى البرنامج الذي يتم تنفيذه.
  • عملية دائما المخزنة في الذاكرة الرئيسية كما وصفته الأولية الذاكرة أو ذاكرة الوصول العشوائي.
  • ولذلك فإن عملية يطلق كيان نشط.فإنه يختفي إذا كان الجهاز هو تمهيد.
  • عدة العملية قد تترافق مع نفس البرنامج.
  • على نظام متعدد المعالجات متعددة العمليات التي يمكن تنفيذها بالتوازي.
  • على معالج أحادي النظام ، على الرغم من صحيح التوازي لا يتحقق ، وهي عملية الجدولة يتم تطبيق الخوارزمية و المعالج ومن المقرر تنفيذ كل عملية في وقت واحد مما أسفر وهم من التزامن.
  • على سبيل المثال: تنفيذ مثيلات متعددة من "آلة حاسبة" البرنامج.كل حالة من هذه الحالات توصف بأنها عملية.

الموضوع:

  • الموضوع هو مجموعة فرعية من هذه العملية.
  • هو ما يسمى بأنها خفيفة الوزن عملية' ، لأنه يشبه عملية حقيقية ولكن ينفذ في سياق عملية تشاطر نفس الموارد المخصصة لهذه العملية النواة.
  • عادة ما تكون عملية واحدة فقط خيط التحكم – مجموعة واحدة من آلة تعليمات تنفيذ في وقت واحد.
  • عملية يمكن أيضا أن تكون مصنوعة من خيوط متعددة من التنفيذ تنفيذ التعليمات بشكل متزامن.
  • المواضيع متعددة من التحكم يمكن استغلال صحيح التوازي ممكن على الأنظمة ذات المعالجات المتعددة.
  • على معالج أحادي نظام جدولة موضوع يتم تطبيق الخوارزمية و المعالج ومن المقرر تشغيل كل موضوع في وقت واحد.
  • جميع المواضيع تشغيل في إطار عملية تبادل نفس مساحة العنوان ، واصفات الملف ، المكدس عملية أخرى ذات سمات.
  • منذ المواضيع من عملية مشاركة نفس الذاكرة ، لمزامنة الوصول إلى البيانات المشتركة في عملية مكاسب غير مسبوقة أهمية.

اقترضت المعلومات المذكورة أعلاه من المعرفة السعي!بلوق.

أولا دعونا ننظر في الجانب النظري.تحتاج إلى فهم ما العملية من الناحية النظرية إلى فهم الفرق بين عملية الخيط ما هو مشترك بينهما.

لدينا ما يلي من قسم 2.2.2 الكلاسيكية موضوع نموذج في أنظمة التشغيل الحديثة 3e قبل تانينباوم:

عملية يقوم النموذج على اثنين من المستقلين المفاهيم:الموارد تجمع والتنفيذ.في بعض الأحيان من المفيد منفصلة ؛ هذا هو المكان المواضيع تأتي في....

ويتابع:

طريقة واحدة للنظر إلى عملية هو طريقة مجموعة الموارد ذات الصلة معا.عملية عنوان الفضاء تحتوي على البرامج النصية والبيانات ، فضلا عن الموارد الأخرى.هذه الموارد قد تشمل فتح ملفات الأطفال في العمليات المعلقة أجهزة الإنذار ، معالجات الإشارات المعلومات المحاسبية ، وأكثر من ذلك.من خلال وضعها معا في شكل عملية ، يمكن أن تدار بسهولة أكثر.مفهوم آخر عملية له هو موضوع التنفيذ ، وعادة ما تقصير الخيط فقط.موضوع يحتوي على برنامج مكافحة تحافظ المسار التي تعليمات لتنفيذ المقبل.وقد السجلات ، عقد العمل الحالية المتغيرات.وقد كومة ، والذي يحتوي على تنفيذ التاريخ ، مع إطار واحد لكل إجراء استدعاء بعد عودته من.على الرغم من أن الموضوع يجب أن ينفذ في بعض هذه العملية ، موضوع عملية هي مفاهيم مختلفة ويمكن علاجها بشكل منفصل.العمليات المستخدمة في مجموعة الموارد معا ؛ المواضيع هي الكيانات المقرر تنفيذ حكم الإعدام على وحدة المعالجة المركزية.

مزيد من أسفل وقال انه يوفر الجدول التالي:

Per process items             | Per thread items
------------------------------|-----------------
Address space                 | Program counter
Global variables              | Registers
Open files                    | Stack
Child processes               | State
Pending alarms                |
Signals and signal handlers   |
Accounting information        |

دعونا التعامل مع خاصية تعدد الأجهزة هذه المسألة.كلاسيكي, وحدة المعالجة المركزية دعم خيط واحد من التنفيذ ، والحفاظ على ترابط الدولة عبر برنامج واحد مضادة ، و مجموعة من السجلات.ولكن ماذا يحدث إذا كان هناك ذاكرة التخزين المؤقت آنسة ؟ فإنه يأخذ وقت طويل لجلب البيانات من الذاكرة الرئيسية ، في حين أن هذا يحدث وحدة المعالجة المركزية فقط يجلس هناك الخمول.إذا كان شخص ما فكرة في الأساس مجموعتين من موضوع الدولة ( PC + سجلات ) لذلك هذا موضوع آخر ( ربما في نفس العملية ، ربما في عملية مختلفة ) يمكن الحصول على العمل المنجز في حين أن موضوع آخر ينتظر في الذاكرة الرئيسية.هناك أسماء متعددة و تطبيقات هذا المفهوم ، مثل HyperThreading و المتزامن خاصية تعدد ( SMT قصيرة ).

الآن دعونا ننظر في الجانب البرمجيات.هناك أساسا ثلاث طرق هذه المواضيع يمكن تنفيذها على الجانب البرمجيات.

  1. Userspace المواضيع
  2. المواضيع النواة
  3. مزيج من اثنين

كل ما تحتاجه لتنفيذ المواضيع هي القدرة على حفظ وحدة المعالجة المركزية الدولة والحفاظ على عدة مداخن ، والتي يمكن في كثير من الحالات أن يتم في الفضاء المستخدم.الاستفادة من الفضاء المستخدم المواضيع بسرعة فائقة موضوع التحول منذ لم يكن لديك إلى فخ في النواة و القدرة على جدولة المواضيع الخاصة بك بالطريقة التي تريدها.أكبر عيب هو عدم القدرة على القيام حجب I/O ( التي من شأنها عرقلة العملية برمتها وكل المستخدم المواضيع) التي هي واحدة من الأسباب الكبيرة نستخدم المواضيع في المقام الأول.حجب I/O باستخدام خيوط يبسط إلى حد كبير تصميم البرنامج في كثير من الحالات.

المواضيع نواة لديها ميزة كونها قادرة على استخدام حجب I/O, بالإضافة إلى ترك جميع جدولة القضايا إلى نظام التشغيل.ولكن كل موضوع التبديل يتطلب محاصرة في النواة التي يحتمل أن تكون بطيئة نسبيا.ومع ذلك ، إذا كنت التبديل المواضيع بسبب حظر I/O هذا ليس حقا مشكلة منذ عملية الإدخال/الإخراج ربما المحاصرين في النواة بالفعل على أي حال.

وثمة نهج آخر هو الجمع بين الأمرين ، مع العديد من المواضيع نواة كل منها المستخدم متعددة مؤشرات الترابط.

وبالعودة إلى سؤالك من المصطلحات, يمكنك أن ترى أن عملية و موضوع التنفيذ مفهومان مختلفان و اختيارك من المدى الذي يعتمد على استخدام ما كنت تتحدث عن.بشأن مصطلح "خفيفة الوزن عملية" أنا شخصيا لا أرى فائدة في ذلك لأنه لا ينقل ما يجري وكذلك مصطلح "موضوع التنفيذ".

أن أشرح أكثر من ذلك فيما يتعلق البرمجة المتزامنة

  1. العملية بذاتها بيئة التنفيذ.عملية عموما كاملة, خاصة مجموعة أساسية وقت تشغيل الموارد ؛ ولا سيما كل عملية لها مساحة الذاكرة.

  2. المواضيع موجودة ضمن عملية — كل عملية واحدة على الأقل.المواضيع حصة العملية الموارد ، بما في ذلك الذاكرة و الملفات المفتوحة.وهذا يجعل كفاءة ، ولكن يحتمل أن تكون إشكالية التواصل.

إبقاء الشخص العادي في الاعتبار ،

على جهاز الكمبيوتر الخاص بك ، افتح Microsoft Word و متصفح الويب.ونحن ندعو هذه اثنين العمليات.

في Microsoft word, اكتب بعض الشيء يحصل حفظها تلقائيا.الآن, كنت قد لاحظت تحرير وحفظ يحدث بالتوازي التحرير على موضوع واحد و توفير في موضوع آخر.

<اقتباس فقرة>   

وتطبيق يتكون من العمليات واحدة أو أكثر. عملية، في أبسط شروط، هو برنامج المنفذة. واحد أو أكثر من المواضيع تعمل في سياق هذه العملية. وموضوع هو الوحدة الأساسية التي يخصص نظام التشغيل وقت المعالج. خيط يمكن تنفيذ أي جزء من رمز العملية، بما في ذلك أجزاء يجري حاليا تنفيذها من قبل موضوع آخر. والألياف وحدة التنفيذ التي يجب المقرر يدويا من قبل التطبيق. تشغيل الألياف في سياق المواضيع التي الجدول الزمني لها.

هنا .

والعملية هي عبارة عن مجموعة من التعليمات البرمجية، والذاكرة، والبيانات وغيرها من الموارد. وموضوع هو سلسلة من التعليمات البرمجية التي يتم تنفيذها في نطاق هذه العملية. يمكنك (عادة) لديها مواضيع متعددة في وقت واحد المنفذة داخل نفس العملية.

  • كل عملية هو موضوع (ترابط الأساسي).
  • ولكن كل موضوع غير عملية.بل هو جزء(كيان) عملية.

العالم الحقيقي مثلا عملية والخيط هذا وسوف تعطيك فكرة أساسية عن موضوع العملية enter image description here

اقترضت المعلومات المذكورة أعلاه من سكوت لانغام الجواب شكرا

العملية:

  1. عملية الوزن الثقيل العملية.
  2. العملية هو برنامج منفصل يحتوي ذاكرة منفصلة ، بيانات الموارد إلخ.
  3. عملية يتم إنشاؤها باستخدام شوكة الأسلوب ().
  4. السياق التبديل بين العملية تستغرق وقتا طويلا.

على سبيل المثال:
يقول فتح أي متصفح (mozilla, Chrome, IE).في هذه المرحلة الجديدة وسوف تبدأ عملية التنفيذ.

المواضيع:

  1. المواضيع الخفيفة الوزن العمليات.المواضيع المجمعة داخل العملية.
  2. المواضيع مشترك ذاكرة البيانات والموارد الملفات الخ.
  3. المواضيع التي تم إنشاؤها باستخدام طريقة استنساخ ().
  4. السياق التبديل بين المواضيع لا يستغرق وقتا طويلا من العملية.

على سبيل المثال:
فتح العديد من علامات التبويب في المتصفح.

كل المواضيع العمليات الذرية وحدات من نظام التشغيل تخصيص الموارد (أيهناك التزامن نموذج يصف كيف وقت وحدة المعالجة المركزية تقسم بينهما نموذج من امتلاك نظام التشغيل الأخرى الموارد).هناك فرق في:

  • الموارد المشتركة (المواضيع تقاسم الذاكرة عن طريق التعريف أنها لا تملك أي شيء إلا كومة المتغيرات المحلية;العمليات يمكن أيضا مشاركة الذاكرة ، ولكن هناك آلية منفصلة من أجل أن تحتفظ بها نظام التشغيل)
  • تخصيص مساحة (نواة مساحة العمليات مقابلالمستخدم مساحة المواضيع)

جريج Hewgill أعلاه صحيحة عن إرلانج معنى كلمة "عملية" ، هنا هناك مناقشة لماذا إرلانج يمكن أن تفعل العمليات خفيفة الوزن.

وكلتا العمليتين والمواضيع هي متواليات مستقلة التنفيذ. الفرق النموذجي هو أن الخيوط (من نفس العملية) تشغيل في مساحة الذاكرة المشتركة، في حين أن عمليات تشغيل في المساحات ذاكرة منفصلة.

وعملية

هل برنامج في التنفيذ. لديها قسم النص أي بمعنى رمز البرنامج، والنشاط الحالي ممثلا في قيمة عداد البرنامج والمحتوى المعالجات تسجيل. كما يشمل كومة عملية يحتوي على بيانات مؤقتة (مثل المعلمات وظيفة، موجهة العودة والمتغيرات المحلية)، وقسم البيانات، والذي يحتوي على متغيرات العالمية. قد تتضمن العملية أيضا كومة، والتي هي الذاكرة التي تم تخصيصها ديناميكيا اثناء عملية تستغرق وقتا التشغيل.

الموضوع

وهناك موضوع هو الوحدة الأساسية للاستخدام وحدة المعالجة المركزية. ويضم هوية الموضوع، عداد البرنامج، السجل الذي، وكومة. وهو يشارك مع المواضيع الأخرى التي تنتمي إلى نفس العملية مقطع التعليمات البرمجية، قسم البيانات وغيرها من نظام التشغيل مواردها مثل الملفات المفتوحة والإشارات.

و- مأخوذة من نظام التشغيل من قبل جالفين

محاولة الإجابة على هذا السؤال تتعلق جافا العالم.

عملية إعدام البرنامج ولكن الموضوع هو واحد تسلسل التنفيذ في العملية.وهي عملية يمكن أن تحتوي على مواضيع متعددة.موضوع ما يسمى أحيانا عملية خفيفة ، .

على سبيل المثال:

مثال 1:JVM يدير في عملية واحدة و المواضيع في JVM حصة كومة المنتمين إلى تلك العملية.هذا هو السبب في العديد من المواضيع من الوصول إلى نفس الكائن.المواضيع حصة كومة الذاكرة المؤقتة الخاصة بها مساحة مكدس.هذا هو كيف موضوع واحد هو الاحتجاج طريقة المتغيرات المحلية يتم الاحتفاظ الآمن موضوع من المواضيع الأخرى.ولكن كومة لا مؤشر الترابط-الآمن و يجب أن تكون متزامنة على موضوع السلامة.

مثال 2:البرنامج قد لا تكون قادرة على رسم الصور من خلال قراءة المفاتيح.البرنامج يجب إعطاء الاهتمام الكامل مدخلات لوحة المفاتيح و التي تفتقر إلى القدرة على التعامل مع أكثر من حدث واحد في كل مرة سوف يؤدي إلى المتاعب.الحل الأمثل لهذه المشكلة هو سلس تنفيذ قسمين أو أكثر من برنامج في نفس الوقت.المواضيع يسمح لنا أن نفعل هذا.هنا رسم الصورة هو عملية القراءة ضغطة دون عملية (موضوع).

الفرق بين الخيط العملية ؟

عملية تنفيذية مثيل التطبيق و الموضوع هو مسار التنفيذ في إطار عملية.أيضا, وهي عملية يمكن أن تحتوي على مواضيع متعددة.من المهم أن نلاحظ أن الموضوع يمكن أن تفعل أي شيء يمكنك القيام به.ولكن منذ عملية يمكن أن تتكون من عدة خيوط, خيط يمكن اعتباره 'خفيفة' العملية.وهكذا الفرق الجوهري بين الخيط و العملية هو العمل الذي يستخدم كل واحد إلى تحقيقه.المواضيع تستخدم في المهام الصغيرة, في حين أن عمليات تستخدم أكثر من الوزن الثقيل' المهام – في الأساس تنفيذ التطبيقات.

وثمة فرق آخر بين الخيط و العملية هو أن المواضيع في نفس عملية تبادل نفس العنوان الفضاء ، في حين أن العمليات المختلفة لا.هذا يسمح المواضيع القراءة من والكتابة إلى نفس هياكل البيانات و المتغيرات و أيضا يسهل الاتصال بين المواضيع.الاتصالات بين العمليات – المعروف أيضا باسم IPC ، أو بين عملية الاتصال – من الصعب جدا و كثيفة الاستخدام للموارد.

هنا ملخص الفروق بين المواضيع والعمليات:

  1. المواضيع أسهل لإنشاء من العمليات لأنها لا تتطلب مساحة عنوان منفصل.

  2. خاصية تعدد يتطلب حذرا البرمجة منذ المواضيع تبادل البيانات strucures التي يجب تعديلها إلا من خلال موضوع واحد في وقت.على عكس المواضيع العمليات لا تشترك في نفس مساحة العنوان.

  3. المواضيع تعتبر خفيفة الوزن لأنها تستخدم الآن موارد أقل من العمليات.

  4. عمليات مستقلة عن بعضها البعض.المواضيع لأنها حصة نفس مساحة العنوان مترابطة ، لذلك الحذر يجب أن تؤخذ حتى المواضيع المختلفة لا خطوة على بعضها البعض.
    هذا هو حقا وسيلة أخرى تفيد #2 أعلاه.

  5. وهي عملية يمكن أن تتكون من خيوط متعددة.

http://lkml.iu.edu/hypermail/linux/kernel/9608/0191.html

لينوس تورفالدس (torvalds@cs.helsinki.fi)

الأربعاء, 6 أغسطس 1996 12:47:31 +0300 (EET DST)

الرسائل مرتبة حسب:[ تاريخ ][ موضوع ][ موضوع ][ المؤلف ]

الرسالة التالية:بيرند P.زيلر:"Re:عفوا في get_hash_table"

الرسالة السابقة:لينوس تورفالدس:"Re:طلب I/O يأمر"

في الجمعة, 5 أغسطس 1996, P. بيترEiserloh كتب:

نحن بحاجة للحفاظ على واضحة المفهوم من المواضيع.الكثير من الناس يبدو أن الخلط بين موضوع مع عملية.المناقشة التالية لا تعكس الوضع الحالي لينكس ، بل هو محاولة البقاء على مستوى عال المناقشة.

لا!

لا يوجد سبب للاعتقاد بأن "المواضيع" و "العمليات" هي كيانات منفصلة.هكذا عادة ، ولكن أنا شخصيا أعتقد أنه خطأ كبير أن يفكر بهذه الطريقة.فقط السبب أعتقد أن الطريقة التاريخية الأمتعة.

كل المواضيع والعمليات هي في الحقيقة شيء واحد فقط:في "سياق التنفيذ".يحاول مصطنع التمييز بين مختلف الحالات فقط ذاتيا.

في "إطار تنفيذ" بموجب دعا مجلس أوروبا ، هو مجرد تكتل من كل دولة أن كو.أن الدولة يشمل أشياء مثل وحدة المعالجة المركزية الدولة (سجلات الخ) ، MMU الدولة (صفحة تعيينات) ، إذن الدولة (uid, gid) ومختلف "الاتصالات الأمريكية" (فتح الملفات, إشارة معالجات الخ).تقليديا, الفرق بين "الموضوع" ، "عملية" أساسا أن المواضيع قد CPU الدولة (+ ربما بعض الحد الأدنى من الدولة) ، في حين أن كل سياق آخر يأتي من العملية.ومع ذلك, هذا فقط واحد طريقة تقسيم مجموع دولة COE, و لا يوجد شيء أن يقول أن هذه هي الطريقة الصحيحة للقيام بذلك.تحد نفسك أن هذا النوع من الصور هو مجرد غبي.

طريقة لينكس يفكر في هذا (و بالمناسبة أريد من الأشياء) ، أن هناك هو لا يوجد شيء مثل "عملية" أو "موضوع".هناك فقط مجمل COE (تسمى "المهمة" لينكس).مختلفة كو هو يمكن أن تشترك في أجزاء من سياقها مع بعضها البعض, واحد فرعية من أن مشاركة التقليدية "الموضوع"/"عملية" الإعداد ولكن هذا حقا ينبغي أن ينظر إليه باعتباره مجموعة فرعية فقط (هو مجموعة فرعية مهمة ، ولكن أن أهمية لا يأتي من التصميم ، ولكن من المعايير:نحن obviusly ترغب في تشغيل المعايير المطابقة المواضيع البرامج على رأس لينكس أيضا).

باختصار:لا تصميم حول موضوع/عملية طريقة التفكير.على النواة يجب أن تكون مصممة حول COE طريقة التفكير ، ومن ثم pthreads مكتبة يمكن تصدير محدودة pthreads واجهة للمستخدمين الذين يرغبون في استخدام هذه الطريقة في أوروبا هو.

فقط كمثال على ما يصبح ممكنا عندما كنت تعتقد كو كما بدلا من الخيط/عملية:

  • يمكنك القيام الخارجية "cd" برنامج شيئا تقليديا من المستحيل في UNIX و/أو عملية/موضوع (سخيفة سبيل المثال ، ولكن فكرة هو أنه يمكنك الحصول على هذه الأنواع من "وحدات" التي لا تقتصر على التقليدية UNIX/المواضيع الإعداد).القيام:

استنساخ(CLONE_VM|CLONE_FS);

الطفل:execve("الخارجية-cd");

/* في "execve()" سوف تنأى VM, لذلك السبب الوحيد تستخدم CLONE_VM لجعل قانون الاستنساخ أسرع */

  • يمكنك أن تفعل "vfork()" بطبيعة الحال (عليه meeds الحد الأدنى من دعم النواة ، ولكن هذا الدعم يناسب كوا طريقة التفكير تماما):

استنساخ(CLONE_VM);

الطفل:تستمر في تشغيل في نهاية المطاف execve()

الأم:انتظر execve

  • يمكنك أن تفعل الخارجية "IO deamons":

استنساخ(CLONE_FILES);

الطفل:فتح ملف واصفات الخ

الأم:استخدام المديرية الطفل فتح vv.

كل ما سبق العمل لأنك لا ترتبط الموضوع/عملية طريقة التفكير.أعتقد من ملقم ويب على سبيل المثال ، حيث CGI البرامج النصية كما فعلت "المواضيع التنفيذ".لا يمكنك أن تفعل ذلك مع التقليدية المواضيع, لأن التقليدية المواضيع دائما حصة كامل مساحة العنوان ، لذلك يجب أن الرابط في كل ما من أي وقت مضى أردت أن تفعل في خادم الويب نفسها (و "الخيط" لا يمكن تشغيل آخر القابل للتنفيذ).

التفكير في هذا "السياق التنفيذ" المشكلة بدلا من ذلك ، المهام ويمكن الآن اختار تنفيذ البرامج الخارجية (= فصل مساحة العنوان من الوالدين) وما إذا كانوا يريدون أو يستطيعون من أجل على سبيل المثال مشاركة كل شيء مع الوالد إلا الملف الواصفات (بحيث الفرعية"المواضيع" يمكن فتح الكثير من الملفات دون الوالد الحاجة إلى القلق حول لهم:أنها تغلق تلقائيا عند دون"الموضوع" المخارج و لا تستهلك المديرية في الأصل).

أعتقد من الخيوط "inetd" ، على سبيل المثال.تريد انخفاض النفقات العامة شوكة+exec, حتى مع لينكس الطريقة يمكنك بدلا من استخدام "شوكة()" تكتب متعددة الخيوط inetd حيث كل موضوع يتم إنشاؤه مع فقط CLONE_VM (حصة مساحة العنوان ، ولكن لا حصة واصفات الملفات وما إلى ذلك).فإن الطفل يمكن أن execve إذا كانت الخدمة الخارجية (rlogind, على سبيل المثال) ، أو ربما كانت واحدة من الداخلية inetd الخدمات (الصدى ، timeofday) في هذه الحالة فقط يفعل شيء و المخارج.

لا يمكنك أن تفعل ذلك مع "موضوع"/"عملية".

لينوس

من وجهة نظر مقابلة ، وهناك أساسا 3 فقط أهم الأشياء التي أريد أن أسمع ، إلى جانب الأمور واضحة مثل هذه العملية يمكن أن يكون العديد من المواضيع:

  1. المواضيع حصة نفس مساحة الذاكرة, مما يعني الموضوع يمكن الوصول إلى الذاكرة من موضوع الذاكرة.العمليات عادة لا يمكن.
  2. الموارد.(ذاكرة, مقابض, مآخذ, الخ) ويتم الإفراج عنهم في عملية الإنهاء ، وليس موضوع الإنهاء.
  3. الأمن.عملية ثابت رمز الأمان.موضوع, من ناحية أخرى, يمكن أن انتحال شخصية مختلفة المستخدمين/الرموز.

إذا كنت تريد المزيد من سكوت لانغام رد الى حد كبير يغطي كل شيء.كل هذه هي من منظور نظام التشغيل.لغات مختلفة يمكن تطبيق مفاهيم مختلفة ، مثل المهام, ضوء-wigh المواضيع وهلم جرا ، ولكن هم فقط طرق استخدام المواضيع (من الألياف على ويندوز).لا توجد الأجهزة والبرمجيات المواضيع.هناك الأجهزة والبرمجيات استثناءات و يقطع, أو وضع المستخدم ونواة المواضيع.

  1. موضوع يعمل في الذاكرة المشتركة الفضاء ، ولكن عملية تشغيل في مساحة ذاكرة منفصلة
  2. الموضوع هو خفيفة الوزن عملية ، ولكن عملية من هذا الوزن الثقيل العملية.
  3. الموضوع هو نوع فرعي من العملية.

وفيما يلي ما حصلت عليه من واحدة من المواد المتعلقة مشروع القانون . واعتقد انه يفسر كل ما يلزم بوضوح.

<اقتباس فقرة>   

وهناك موضوع هو آلية أخرى لتقسيم عبء العمل في منفصلة   تيارات التنفيذ. مؤشر ترابط أخف وزنا من العملية. هذه   الوسائل، فإنه يوفر مرونة أقل من عملية تفجير كاملة، ولكن يمكن   أن تبدأ أسرع لأن هناك أقل لنظام التشغيل ل   اقامة. عندما يتكون البرنامج من اثنين أو أكثر من المواضيع، كل   المواضيع تتقاسم مساحة ذاكرة واحد. وترد العمليات مساحات العناوين منفصلة.   جميع المواضيع تشترك في كومة واحدة. ولكن يعطى كل موضوع كومة الخاص بها.

  1. أساسا الموضوع هو جزء من عملية دون عملية ترابط لن تكون قادرة على العمل.
  2. موضوع خفيفة الوزن في حين أن عملية الوزن الثقيل.
  3. التواصل بين العملية تتطلب بعض الوقت في حين أن الموضوع يتطلب وقتا أقل.
  4. المواضيع يمكن أن تشترك في نفس منطقة الذاكرة في حين أن عملية يعيش في منفصلة.

<قوية> عملية : ليعرف البرنامج قيد التنفيذ كعملية

<القوي> الموضوع : في الموضوع هو وظيفة التي يتم تنفيذها مع جزء آخر من البرنامج على أساس مفهوم "واحد مع الآخر" لذلك موضوع هو جزء من عملية ..

قادمة من جزءا لا يتجزأ من العالم ، أود أن أضيف أن مفهوم عمليات موجود فقط في "الكبير" المعالجات (سطح المكتب وحدات المعالجة المركزية, ARM Cortex A-9) أن يكون MMU (وحدة إدارة الذاكرة) و أنظمة التشغيل التي تدعم استخدام ملمus (مثل لينكس).مع الصغيرة/المعالجات القديمة و المتحكمات الدقيقة و الصغيرة RTOS نظام التشغيل (في الوقت الحقيقي نظام التشغيل) مثل freeRTOS لا يوجد MMU الدعم وبالتالي لا يوجد العمليات ولكن فقط المواضيع.

المواضيع يمكن الوصول إلى كل الآخرين الذاكرة ، وهم من المقرر من قبل نظام التشغيل في معشق بطريقة بحيث تظهر إلى بالتوازي (أو متعددة النوى هم حقا بالتوازي).

العمليات, من ناحية أخرى ، يعيش في القطاع الخاص رمل الذاكرة الظاهرية ، بشرط يحرسها MMU.هذا هو مفيد لأنه يتيح:

  1. الحفاظ على عربات التي تجرها الدواب عملية انهيار النظام بأكمله.
  2. الحفاظ على الأمن من خلال جعل عمليات أخرى البيانات غير مرئية ، غير قابلة للوصول.العمل الفعلي داخل العملية هو العناية من قبل واحد أو أكثر من المواضيع.

وفي الوقت نفسه بناء خوارزمية في بايثون (لغة مفسرة) التي أدرجت متعدد خيوط وفوجئت أن تدرك أن وقت التنفيذ يست أفضل بالمقارنة مع خوارزمية متتابعة كنت قد بنيت في السابق. في محاولة لفهم السبب في هذه النتيجة فعلت بعض القراءة، ويعتقدون ما تعلمته يقدم سياق اهتمام من خلالها فهم الاختلافات بين خيوط متعددة والعمليات المتعددة.

وأنظمة متعددة النواة أن يمارس مواضيع متعددة من التنفيذ، ولذا يجب أن بيثون دعم متعدد خيوط. لكن بيثون ليست لغة تجميعها وبدلا من ذلك هو لغة تفسر <سوب> 1 . وهذا يعني أن يجب أن تفسر البرنامج من أجل تشغيل، والمترجم ليست على علم البرنامج قبل أن يبدأ التنفيذ. ماذا تعرف، ومع ذلك، فإن قواعد بايثون وبعد ذلك ينطبق حيوي تلك القواعد. ثم يجب أن تكون التحسينات في بيثون أساسا أمثل للمترجم نفسه، وليس تعليمة برمجية ليتم تشغيلها. هذا هو على النقيض من اللغات المترجمة مثل C ++، ولها عواقب متعدد خيوط في بيثون. على وجه التحديد، يستخدم بيثون قفل مترجم العالمية لإدارة متعدد خيوط.

وعلى الجانب الآخر لغة مترجمة هو، أيضا، المترجمة. تتم معالجة برنامج "تماما"، حيث لأول مرة يتم تفسيرها وفقا لتعاريفه النحوية، ثم تعيينها إلى لغة وسيطة تمثيل الملحد، وربط في نهاية المطاف إلى رمز قابل للتنفيذ. هذه العملية تسمح رمز لتكون الأمثل للغاية لأنه موجود في كل وقت تجميع. يتم تحديد التفاعلات البرنامج المختلفة والعلاقات في وقت إنشاء الملف القابل للتنفيذ وقرارات قوية حول الأمثل ويمكن إجراء.

في البيئات الحديثة مترجم بايثون يجب أن تسمح خيوط المعالجة المتعددة، وهذا يجب أن يكون كل من آمنة وفعالة. هذا هو المكان الفرق بين أن تكون لغة تفسر مقابل لغة مترجمة يدخل الصورة. يجب أن المترجم لا يزعج البيانات المشتركة داخليا من المواضيع المختلفة، وفي الوقت نفسه تحقيق الاستخدام الأمثل للمعالجات للحسابات.

وكما لوحظ في المشاركات السابقة على حد سواء عملية وموضوع هي الإعدام متتابعة المستقلة والفرق الأساسي هو أن الذاكرة المشتركة عبر مواضيع متعددة من العملية، في حين أن عمليات عزل مساحات ذاكرتهم.

في البيانات بيثون محمي من الوصول في وقت واحد من المواضيع المختلفة من قبل قفل مترجم العالمية. ويقتضي ذلك في أي برنامج بيثون مؤشر واحد فقط يمكن تنفيذها في أي وقت. من ناحية أخرى فإنه من الممكن لتشغيل عمليات متعددة حيث يتم عزل الذاكرة لكل عملية من أي عملية أخرى، ويمكن لعمليات تعمل على النوى المتعددة.


<سوب> 1 دونالد نث لديه تفسير جيد من الروتين التفسيرية في فن برمجة الحاسوب: الخوارزميات الأساسية

ومحاولة الإجابة عليه من نواة لينكس في OS مشاهدة

وهناك برنامج يصبح العملية عندما أطلقت في الذاكرة. عملية لديها قناعاتها معنى الفضاء عنوانه وجود قطاعات مختلفة في الذاكرة مثل .text segement لتخزين ترجمة التعليمات البرمجية، .bss لتخزين المتغيرات ثابتة أو العالمية غير مهيأ، وما إلى ذلك كل عملية سيكون لها عداد البرنامج الخاصة وسهولة spcae <م> كومة . داخل النواة، فإن كل عملية يكون كومة الخاصة نواة (والتي لا يفصلها عن كومة الفضاء المستخدم للحصول على القضايا الأمنية) وهيكل اسمه task_struct التي تستخرج عادة باعتباره كتلة التحكم في العمليات، وتخزين جميع المعلومات المتعلقة بعملية مثل أولوياتها، الدولة، (والكثير من قطعة أخرى). عملية يمكن أن يكون لها مواضيع متعددة من التنفيذ.

والمجيء إلى المواضيع، يقيمون داخل عملية ومشاركة مساحة العنوان من عملية الأصل جنبا إلى جنب مع غيرها من الموارد التي يمكن أن تنتقل خلال إنشاء موضوع مثل الموارد الملفات، تبادل الإشارات، تبادل البيانات (المتغيرات والتعليمات) بانتظار مما يجعل المواضيع خفيفة الوزن، وبالتالي السماح أسرع تبديل السياق. داخل النواة، كل موضوع له رصة kernel الخاص بها جنبا إلى جنب مع هيكل task_struct الذي يحدد موضوع. لذلك نواة عدد المشاهدات المواضيع من نفس العملية على أنها كيانات مختلفة وهي schedulable في حد ذاتها. مواضيع في نفس العملية تشترك معرف المشترك كما دعا مجموعة موضوع الهوية (tgid)، وأيضا لديهم هوية فريدة من نوعها كما دعا معرف العملية (pid).

وبالنسبة لأولئك الذين هم أكثر راحة مع التعلم من خلال وضع تصور، وهنا هو رسم تخطيطي مفيد أنا خلقت لشرح عملية والمواضيع.
لقد استخدمت المعلومات من MSDN - <وأ href = "https://msdn.microsoft.com/en-us/library/windows/desktop/ms681917٪28v=vs.85٪29.aspx" يختلط = "نوفولو noreferrer" عنوان = "MSDN"> معلومات عن العمليات والمواضيع

والمواضيع ضمن نفس حصة عملية في الذاكرة، ولكن كل موضوع له في كومة الخاصة والسجلات والبيانات موضوع معين المواضيع مخزن في كومة. المواضيع أبدا تنفيذ بشكل مستقل، وبالتالي فإن الاتصالات بين موضوع هو أسرع بكثير بالمقارنة مع التواصل بين العملية.

والعمليات أبدا يشتركون في نفس الذاكرة. عندما يخلق عملية تابعة فإنه يكرر موقع الذاكرة من عملية الأصل. تتم عملية الاتصال باستخدام الأنابيب، والذاكرة المشتركة، وتحليل الرسالة. تبديل السياق بين المواضيع بطيئة للغاية.

أفضل إجابة

العملية:

عملية هو في الاساس برنامج في التنفيذ.بل هو كيان نشط.بعض أنظمة التشغيل استخدام مصطلح 'المهمة' للإشارة إلى البرنامج الذي يتم تنفيذه.عملية دائما المخزنة في الذاكرة الرئيسية كما وصفته الأولية الذاكرة أو ذاكرة الوصول العشوائي.ولذلك فإن عملية يطلق كيان نشط.فإنه يختفي إذا كان الجهاز هو تمهيد.عدة العملية قد تترافق مع نفس البرنامج.على نظام متعدد المعالجات متعددة العمليات التي يمكن تنفيذها بالتوازي.على معالج أحادي النظام ، على الرغم من صحيح التوازي لا يتحقق ، وهي عملية الجدولة يتم تطبيق الخوارزمية و المعالج ومن المقرر تنفيذ كل عملية في وقت واحد مما أسفر وهم من التزامن.على سبيل المثال:تنفيذ مثيلات متعددة من "آلة حاسبة" البرنامج.كل حالة من هذه الحالات توصف بأنها عملية.

الموضوع:

الموضوع هو مجموعة فرعية من هذه العملية.هو ما يسمى بأنها خفيفة الوزن عملية' ، لأنه يشبه عملية حقيقية ولكن ينفذ في سياق عملية تشاطر نفس الموارد المخصصة لهذه العملية النواة.عادة ما تكون عملية واحدة فقط خيط التحكم – مجموعة واحدة من آلة تعليمات تنفيذ في وقت واحد.عملية يمكن أيضا أن تكون مصنوعة من خيوط متعددة من التنفيذ تنفيذ التعليمات بشكل متزامن.المواضيع متعددة من التحكم يمكن استغلال صحيح التوازي ممكن على الأنظمة ذات المعالجات المتعددة.على معالج أحادي نظام جدولة موضوع يتم تطبيق الخوارزمية و المعالج ومن المقرر تشغيل كل موضوع في وقت واحد.جميع المواضيع تشغيل في إطار عملية تبادل نفس مساحة العنوان ، واصفات الملف ، المكدس عملية أخرى ذات سمات.منذ المواضيع من عملية مشاركة نفس الذاكرة ، لمزامنة الوصول إلى البيانات المشتركة في غضون عملية مكاسب غير مسبوقة أهمية.

ref-https://practice.geeksforgeeks.org/problems/difference-between-process-and-thread

وأفضل إجابة لقد وجدت حتى الآن هي "واجهة برمجة لينكس ميتشايل كييريسك ل ":

<اقتباس فقرة>   

في تطبيقات UNIX الحديثة، كل عملية يمكن أن يكون لها مواضيع متعددة   التنفيذ. طريقة واحدة لتوخي المواضيع هي كمجموعة من العمليات   التي تشترك في نفس الذاكرة الظاهرية، فضلا عن مجموعة من الآخر   الصفات. كل موضوع يتم تنفيذ نفس رمز البرنامج وأسهم   نفس المنطقة البيانات والكومة. ومع ذلك، كل موضوع له أنه كومة الخاصة   تحتوي على المتغيرات المحلية والمعلومات وظيفة مكالمة الربط. [LPI 2.12]

وهذا الكتاب هو مصدر وضوح. ذكرت جوليا ايفانز مساعدتها في ازالة كيف جماعات لينكس تعمل حقا في <لأ href = "HTTP: // هنا٪ 20is٪ 20how٪ 20groups٪ 20actually٪ 20work٪ 20I٪ 20learned٪ 20this٪ 20by٪ 20reading٪ 20Chapter٪ 209٪ 20 (٪ E2٪ 80٪ 9CProcess٪ 20Credentials٪ E2٪ 80٪ 9D)٪ 20of٪ 20The٪ 20Linux٪ 20Programming٪ 20Interface٪ 20which٪ 20is٪ 20an٪ 20incredible٪ 20book.٪ 20As٪ 20soon٪ 20as٪ 20I٪ 20realized٪ 20that ٪ 20I٪ 20did٪ 20not٪ 20understand٪ 20how٪ 20users٪ 20and٪ 20groups٪ 20worked،٪ 20I٪ 20opened٪ 20up٪ 20the٪ 20table٪ 20of٪ 20contents٪ 20with٪ 20absolute٪ 20confidence٪ 20that٪ 20it٪ 20would٪ 20tell٪ 20me٪ 20what٪ E2٪ 80٪ 99S٪ 20up،٪ 20and٪ 20I٪ 20was٪ 20right ". يختلط = "noreferrer نوفولو"> هذه المقالة .

وهم تقريبا كما نفسه ... ولكن الفرق الرئيسي هو موضوع وخفيفة الوزن وعملية ثقيل الوزن من حيث تبديل السياق، عبء العمل وهلم جرا.

مثال 1: JVM يعمل في عملية واحدة والمواضيع في JVM تشترك في كومة تابعة لتلك العملية. وهذا هو السبب في العديد من المواضيع قد الوصول إلى نفس الكائن. المواضيع تشترك في كومة ولها مساحة مكدس الخاصة بهم. هذه هي الطريقة التي يتم الاحتفاظ الاحتجاج موضوع واحد من طريقة والمتغيرات المحلية الخاصة به موضوع في مأمن من المواضيع الأخرى. ولكن كومة ليس موضوع آمنة، ويجب أن تكون متزامنة للسلامة الموضوع.

والنظر في عملية مثل وحدة الملكية أو ما هي الموارد التي يحتاج إليها مهمة. وعملية يمكن أن يكون الموارد مثل مساحة الذاكرة ومحددة الإدخال / الإخراج، وملفات محددة، والأولوية وما إلى ذلك.

وهناك موضوع وحدة dispatchable التنفيذ أو في كلمات بسيطة التقدم من خلال سلسلة من الإرشادات

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top