Process vs Threads، Hardware Threads vs Software Threads، Hyperthreading في عالم البرمجيات المتقدمة والفعالة اليوم، سواء كنت تبني محرك التداول في الوقت الحقيقي، محرك ألعاب، أو خادم ويب بسيط، فهم كيفية تنفيذ المهام في المدى القصير يمكن تحسين بشكل كبير الأداء والتجربة المستخدمة. يبدأ في اللعب. concurrency threading في مدونتي السابقة، استعرضنا ومختلف - المكونات الأساسية لبناء مجموعة متنوعة من التوازن والتوازن المتقدم.بعد أن وضعتنا الأساسية، فقد حان الوقت للتركيز على النظرية والتفكير في المسألة الأساسية: إذا لم تقرأ هذه القصص السابقة حتى الآن ، فمن المستحسن جدًا النظر إليها أولاً للحصول على معنى أفضل. تصنيف فلين نموذج البرمجة المشتركة ما هو بالضبط thread ، وماذا يفعل؟ تصنيف فلين تصنيف فلين نموذج البرمجة المشتركة نموذج البرمجة المشتركة ما هو بالضبط thread ، وماذا يفعل؟ تنزيل الملفات أثناء تحديث UI، وتحليل النتائج أثناء استجابة الدخول للمستخدم، أو معالجة طلبات الشبكة المرسلة بشكل متوازن. وتقدم لغات البرمجة مثل C++ أدوات قوية لاستخدامها. يتيح التهديد للبرمجيات أن تفعل أكثر من شيء واحد في وقت واحد: hardware threads يتيح التهديد للبرمجيات أن تفعل أكثر من شيء واحد في وقت واحد: سواء كنت جديدًا في Multithreading أو تتطلع إلى تعزيز الأساسيات الخاصة بك، سوف يعطيك هذه القصة بدءًا قويًا. الخصائص: الخصائص vs المحاولات الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية الخصائص المعدنية What Is a Thread? ما هو التهديد؟ واحدة من العقبات الأولى للبدء في التعلم عن المنافسة هو فهم . difference between a thread and a process A هو برنامج مستقل يتم تنفيذه. إنه يحتوي على مساحة الذاكرة الخاصة به، وموضوعات الملفات، وموارد النظام، التي تم تمييزها من العمليات الأخرى. على سبيل المثال، عند فتح متصفح أو محطم، أنت تبدأ عملية جديدة. process A ، من ناحية أخرى ، هو أصغر وحدة التشغيل في عملية. يمكن أن تكون عدة أجزاء داخل نفس العملية ، تعمل في الوقت نفسه وتشارك نفس مساحة الذاكرة. هذا البيئة المشتركة تسمح للاتصال أسرع بين الأجزاء ، ولكن يفتح الباب أيضا إلى و إذا لم يتم الإدارة بشكل صحيح. thread race conditions synchronization issues من الناحية النظرية ، يمكنك أن تفكر في قاعدة كـ - قناة مستقلة من التنفيذ مع نفسها ، و و ولكن تشارك مع أجزاء أخرى في نفس العملية. lightweight process program counter registers stack heap and global memory عندما نتكلم عن الهواتف الذكية، من المهم جداً أن نختلف بين و على الرغم من أن كلاهما يتحدثان عن "الكوادر التنفيذية"، فإنهم يعملون على مستويات مختلفة جداً في مجموعة الحوسبة. hardware threads software threads What is a Hardware Thread? ما هو قنبلة الأجهزة؟ A إنها مسيرة التنفيذ إنها في الواقع a داخل القوة التي يمكن الحصول على، التشفير، وإجراء سلسلة من الإرشادات بشكل مستقل. hardware thread directly supported by the processor dedicated control unit التقليدية ، - بمعنى آخر، واحدة من وحدات التحكم لكل CPU الفني. في أنظمة مع مجموعة متنوعة من الأقراص (على سبيل المثال، منصات المورد) ، سيكون هناك ولكن هذا النموذج تطور بسرعة مع إنشاء و الأكاديمية one processor equaled one hardware thread one hardware thread per socket multi-core multi-threaded في CPU الحديثة: كل القوة تحتوي على ما لا يقل عن واحد من الأدوات. مع Multithreading Simultaneous (SMT) - إصدار Intel يسمى Hyper-Threading - يمكن أن يدعم القوة الوحيدة العديد من الأدوات. الآن ، قد يكون لديك معالجة واحدة (الصندوق) العديد من الكوريوهات ، وربما يكون لكل كوريوهات العديد من الأدوات. وخاصة بعد التفكير، فإن الكثيرين لذلك، عند التحقق من معلومات CPU باستخدام أدوات النظام، قد يرتبط عدد "مشغلات" المظهر إلى الأدوات المنطقية، وليس القواعد الفسيولوجية أو النوافذ. operating systems report hardware threads or logical cores as “processors.” كيف يمكنني التحقق من عدد الملفات المعدنية التي لديها؟ Windows Windows هناك العديد من الطرق للتحقق من عدد الأدوات على ويندوز ، ولكن لا تقلق ، هذه ليست واحدة من تلك "10 طرق للقيام بذلك" رسائل المدونات. استخدام - الرأس إلى ال Tab و Select . Task Manager Ctrl + Shift + Esc Performance CPU سوف ترى مجموعة من الملاحظات التي تشمل عدد و (أو: أدوات الهواتف الذكية) يبدو هذا على ما يلي: cores logical processors خيارات أخرى، إذا كنت ترغب في الاستكشاف بنفسك: PowerShell: Alternative 1: الخيار الأول: (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors Command Prompt (requires wmic): Alternative 2: التغيير 2: wmic cpu get NumberOfLogicalProcessors,NumberOfCores 2 - لينكس 2 - لينكس إذا كنت تستخدم أي طعم من لينكس، يمكن التحقق من تكوين نظامك ومعدلات الأدوات عن طريق قراءة القائمة. يقدم النقطة واحدة لكل ملف أجهزة الكمبيوتر، ويبدو النقطة واحدة من هذه الملفات هذه: /proc/cpuinfo ~$ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 183 model name : 13th Gen Intel(R) Core(TM) i5-13450HX stepping : 1 microcode : 0xffffffff cpu MHz : 2611.201 cache size : 20480 KB physical id : 0 siblings : 16 core id : 0 cpu cores : 8 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 28 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 xsaves avx_vnni vnmi umip waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize flush_l1d arch_capabilities vmx flags : vnmi invvpid ept_x_only ept_ad ept_1gb tsc_offset vtpr ept vpid unrestricted_guest ept_mode_based_exec tsc_scaling usr_wait_pause bugs : spectre_v1 spectre_v2 spec_store_bypass swapgs retbleed eibrs_pbrsb rfds bhi bogomips : 5222.40 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: ... بعض الأشياء التي يجب الإشارة إليها من هذا: CPU القابلة للطي: قد يكون هذا مأساويًا بالنسبة لهيكلات هيدروجينية، لأن هذا الرقم قد لا يعكس عدد القابلة للطي الفعلي (على سبيل المثال، Intel i5-13 Gen لديه 10 القابلة للطي: 6 القابلة للطي + 4 القابلة للطي، ولكن يظهر 8 القابلة للطي). أصدقاء: يتحدث عن العدد الكلي من الأدوات المنطقية. إن وجود علامة ht (الجزء الأصلي من Hyper-Threading) يؤكد أن SMT يدعم. هناك عدة بدائل لهذه الخطوة، والتي تمنح أيضًا نموذجًا أكثر صرامة: الخيار الأول: Lscpu الخيار الأول: Lscpu يمكنك الحصول على النتائج التالية لل : lscpu ~$ lscpu | grep -E 'Core|Socket|Thread' Model name: 13th Gen Intel(R) Core(TM) i5-13450HX Thread(s) per core: 2 Core(s) per socket: 8 Socket(s): 1 بديل 2: hwloc (lstopo) بديل 2: hwloc (lstopo) أداة اخرى مفيدة للتحقق من تكوين CPU في النظام الخاص بك هي المساعدة Linux الشهيرة. ، والتي توفر كل من إشارات خطة الأوامر والرؤى الخلفية لسيطرتك ، وهي مفيدة بشكل خاص لتصوير الأقمار والأقمار والأصناف المتحركة وأساليب NUMA. hwloc إذا تم تثبيت hwloc بالفعل ، يمكنك إنشاء خريطة مرئية لهيكل نظامك باستخدام الإدارة : lstopo ما هو Hyper-Threading؟ Hyper-Threading (HT) هو تطبيق Intel لـ Simultaneous Multithreading (SMT) ، مما يسمح لكل قاعدة جسدية بتشغيل دو إرسال إرشادات في وقت واحد. استخدام CPU أفضل - تحسين الأداء في تكلفة العمل I/O أو multitasking ولكن: لا يتضاعف الأداء - الفائدة التقليدية هي حوالي 15-30٪. تحذير للبرمجة الجانبية: في حين أن HT يستفيد من التعديلات المتعددة اليومية (على سبيل المثال، إجراء برامج متعددة على جهاز الكمبيوتر المحمول)، فإنه يمكن أن يؤثر سلبا على أداء HPC أو حملات العمل المرتبطة.إجراء العديد من الأدوات الضارة على نفس القوة يمكن أن يؤدي إلى تداعيات الموارد ويقلل من السرعة.هذا هو السبب في أن العديد من مراكز HPC تنوي إلغاء HT على الفور - التخطيط السريع للأدوات أمر حيوي على أنظمة SMT. مثال – i5–13450HX: 6 P-Cores مع HT → 12 العناصر 4 E-Cores بدون HT → 4 العناصر ➡️ مجموع = 16 أساليب منطقية What is Hyper-Threading? Hyper-Threading (HT) هو تطبيق Intel لـ Simultaneous Multithreading (SMT) ، مما يسمح بتشغيل كل القوة الفيزيائية. في الوقت نفسه، عندما يتوقف عن العمل (على سبيل المثال، الانتظار على الذاكرة)، قد يستخدم الأقراص الإجراء الأخرى. two instruction streams استخدام CPU أفضل - تحسين الأداء في تكلفة العمل I/O أو multitasking لا يتضاعف الأداء - الفوائد التقليدية هي حول . But 15–30% Caution for parallel programming: على الرغم من أن HT يستفيد من العديد من المهام اليومية (على سبيل المثال، إجراء العديد من البرامج على جهاز الكمبيوتر المحمول)، فإنه يمكن أن قد يؤدي تشغيل العديد من الأدوات الكبيرة على نفس القوة إلى تراجع الطلب، هذا هو السبب - التخطيط العميق للطائرات أمر حاسم على أنظمة SMT. negatively affect performance in HPC or parallel workloads resource contention many HPC centers disable HT by default Example — i5–13450HX: 6 P-Cores مع HT → 12 العناصر 4 E-Cores بدون HT → 4 العناصر ➡️ مجموع = 16 أساليب منطقية Understanding Software Threads: The Foundation فهم المجموعات البرمجية: الأساس على عكس الأقمار الصناعية ، التي تملكها على مستوى المعالجة ، فإن الأقمار البرمجية هي وتشكل هذه الأدوات أدوات إجراء مستقلة داخل عملية. . programming abstractions إن كلمة البرمجيات هي في الأساس وحدة تنفيذ خفيفة موجودة داخل عملية، وتشارك نفس مساحة عنوان مع الحفاظ على سياق تنفيذها الخاص. إن كلمة البرمجيات هي في الأساس وحدة تنفيذ خفيفة موجودة داخل عملية، وتشارك نفس مساحة عنوان مع الحفاظ على سياق تنفيذها الخاص. عند إنشاء قوائم البرمجيات في الكود الخاص بك ، تعمل نظام التشغيل وبيئة التشغيل معا لتسجيلها على متاحة. هذا التخطيط هو ديناميكي ويعتمد على التخطيط الصلب ، الذي يحدد متى ومتى يتم تشغيل كل الصلب. الهواتف المحمولة الهواتف المحمولة التمييز بين الهواتف الذكية والهواتف الذكية هو أمر حيوي. الهواتف الذكية تشكل الوحدات الفعالة المتاحة على جهاز الكمبيوتر الخاص بك، في حين أن الهواتف الذكية هي التمييز الذي يعمل مع البرامج. التمييز بين الهواتف الذكية والهواتف الذكية هو أمر حيوي. الهواتف الذكية تشكل الوحدات الفعالة الفعالة المتاحة على جهاز الكمبيوتر الخاص بك، في حين أن الهواتف الذكية هي التمييز الذي يعمل به البرامج. A single hardware thread can execute multiple software threads over time through context switching, and modern systems often support thousands of software threads running concurrently. The Evolution From Processes to Threads التطور من العمليات إلى الرموز لكي ندرك لماذا تم إدخال التبريد ، يجب علينا أولاً النظر في نموذج العمل التقليدي. إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال إرسال الانفصال الكامل مع مساحات عنوان منفصلة، وصفات الملفات، وبيانات المستخدم الاتصال فقط من خلال آليات الاتصال بين العمليات (IPC) إغلاق الموارد الشديدة بسبب تكرار العملية الكاملة تم إدخال Threading لتنفيذ الحد الأدنى من هذا النموذج المركزي على العملية من خلال إتاحة الفرصة للتفاعل مع الجذور الصغيرة. توفر الشبكات عدة مزايا رئيسية: Simplified Data Sharing Unlike processes, threads within the same process . This eliminates the need for complex IPC mechanisms and allows for more efficient communication between concurrent execution units. share the same address space, heap, and global variables مشاركة البيانات البسيطة Resource Efficiency Creating a thread requires significantly fewer resources than creating a process. , while process creation involves duplicating the entire parent process address space. Thread creation typically requires only 64KB for the thread’s private data area and two system calls فعالية الموارد Enhanced Responsiveness Threads enable patterns that are essential for modern applications. Consider a web browser: one thread handles the user interface, another manages network requests, while others handle rendering and background tasks. This separation ensures that the interface remains responsive even when heavy operations are running. asynchronous behavior تحسين الاستجابة Operating System Level Scheduling Threads still benefit from OS-level scheduling features, including (the ability to interrupt a thread) and fair progress guarantees among threads. This provides the balance between user control and system management. preemption برنامج مستوى نظام التشغيل Thread Architecture and Memory Model تكوين الشريط و نموذج الذاكرة يحافظ كل مسألة إجراء خاص بها في حين تشارك الموارد مع الموارد الأخرى في نفس العملية. الموارد الخاصة Thread كل حلقة لديها نفسها: Block Control Block (TCB) التي تحتوي على ID الشريان، عدد البرامج، مجموعة المستند، والبيانات التخطيطية تخزين الذاكرة للمتغيرات المحلية وإدارة الدعوة الفعالة برنامج مكافأة تتبع الإرشادات الحالية التي يتم تنفيذها الحد الأدنى من الحد الأدنى من الحد الأدنى من الحد الأدنى من الحد الأدنى من الحد الأدنى (TCB) ذاكرة Stack برنامج مكافأة الموارد مشتركة جميع الأدوات في عملية مشتركة: containing the program instructions Code section with global and static variables Data section for dynamically allocated data Heap memory and other system resources File descriptors قسم الكود قسم البيانات ذاكرة جيدة بيانات الملفات هذا نموذج الذاكرة المشتركة هو قوة ومهمة، في حين أنه يسمح بالتواصل الفعلي، فإنه يقدم أيضا الحاجة إلى تكييف احترافي لتجنب سباقات البيانات ويضمن سلامة الذاكرة. هذا نموذج الذاكرة المشتركة هو قوة ومهمة، في حين أنه يسمح بالتواصل الفعلي، فإنه يقدم أيضا الحاجة إلى تكييف احترافي لتجنب سباقات البيانات ويضمن سلامة الذاكرة. The Fork/Join Model: Structured Parallelism نموذج Fork/Join: Parallelism الهيكلية نموذج fork/join يمثل نموذجًا أكثر شيوعًا للبرمجة المشتركة المختلطة.هذا نموذج يوفر نموذجًا صافيًا لتقسيم العمل بين العديد من العناوين وتجميع النتائج. بداية سلسلة: يبدأ الشريان الرئيسي بإجراء سلسلة مرحلة الفورك: عند الحاجة إلى العمل الموازي، يخلق الرماد الرئيسي (الفوركس) الرماد الجديد، كل منها تبدأ في وظيفة محددة. الإجراء المباشر: يتم إجراء كل من العناوين الرئيسية والرسمية في وقت واحد، وربما على العناوين المعدنية المختلفة. مرحلة الانضمام: ينتظر العنصر الرئيسي لجميع العنصر الناتجة من الانضمام إلى الانضمام قبل التمديد التعاقد التعاقدي: التعاقد التعاقدي مع النتائج من العمل التعاقدي بداية سلسلة مرحلة الفوركس التنفيذ المباشر: الانضمام إلى المرحلة: التمديد السريع: What’s Next? ما هو التالي؟ لقد وصلنا الآن إلى نهاية الجزء الثالث من هذه سلسلة متعددة الأبعاد. حتى الآن، قمنا بتغطية المفاهيم الأساسية للأشكال والعمليات، مما يمنحك أساسًا قويًا لتبنيه. في الجزء التالي، سنقوم بتغيير التكاليف من النظرية إلى الممارسة واستكشاف العالم من الأشكال في العمل. و حيث سنكتب رمزًا حقيقيًا، وتحديد النتائج، والتفكير في كيفية جعل هذه المكتبات متوافقة مع الحياة. POSIX threads (pthreads) C++ std::thread Suggested Reads نصائح قراءة ( 1 ) الأكاديمية الكمبيوترية متعددة الأبعاد: خلاصة حالة ART [2] الحوسبة الموزعة: المبادئ والتقنيات والأنظمة - Kshemkalyani و Singhal (uic.edu)