“Hardware Threads” və “Software Threads” Günümüzdə kiçik və yüksək performanslı proqramlarda, Artıq bir lüks deyil - bu bir ehtiyacdır. bir real-time ticarət motoru, bir oyun motoru, ya da basit bir web server inşa edirsiniz, işləri paralel olaraq necə yerinə yetirmək anlayış dramatik şəkildə performans və istifadəçi deneyimi artırır. Oyuna daxil olub. concurrency threading Əvvəlki bloglarda oxuduğum Çeşitli - Multithreading və ilkin paralelizmin əsas inşaat blokları.Artıq temel qoyduqdan sonra, teoriyadan uzaqlaşmaq və əsas sorğuya dalmaq zamanıdır: Əvvəlki yazılarınızı oxumadıysanız, daha yaxşı kontekst üçün onları ilk baxmanızı önerirəm. Flynnin taksonomiyası Paralel programlaşdırma sistemləri Bir thread nədir və nə edir? Flynnin taksonomiyası Flynnin taksonomiyası Paralel programlaşdırma sistemləri Paralel programlaşdırma sistemləri Bir thread nədir və nə edir? UI-nin güncellenməsi, istifadəçi girişinə cavab verməkdə nəticələri hesabatlandırmaq, ya da daxil olan ağ istəklərini paralel olaraq işləməkdə failları yükləmək. , və C++ kimi programlama dilləri bunlardan istifadə etmək üçün güclü alətlər verir. Threading programları bir dəfə birdən çox şey edə bilər: hardware threads Threading programları bir dəfə birdən çox şey edə bilər: Multi-threading üçün yeni olsanız da, ya da qurğularınızı gücləndirmək istəyirsinizsə, bu hikmət sizə sağlam bir başlanğıc verəcək. Tədbirlər: Tədbirlər vs. proseslər Tədbirlər vs. Hardware Tədbirlər vs. Software Tədbirlər Tədbirlər Hyperthreading Tədbirlər Fork/join threading model What Is a Thread? Bəs nədir bu həddi? “İnter” şirkətinin ilk mövsümündən xəbərdarlıq edib. . difference between a thread and a process A və Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » process A və VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. və Əgər düzgün işləməsəydim. thread race conditions synchronization issues Konceptual olaraq, bir thread kimi düşünə bilərsiniz. - Özü ilə bağlı bağımsız bir proses və və Paylaşmaq üçün Tədbirdə iştirak edən digər komandalar da bu prosesdə iştirak edirlər. lightweight process program counter registers stack heap and global memory Təsadüfi fikirlər oxuduğumuzda, aralarında ayırmaq lazımdır. və Hər ikisi “execution units” adlandırılsa da, onlar kompüter yığmasında çox fərqli düymələrdə işləyirlər. hardware threads software threads What is a Hardware Thread? Hardware thread nədir? A və Bu, bir execution streamdir. Bu, həqiqətən də a Bu sistem bağımsız olaraq bir komandanın quraşdırılmasını, dekodlaşdırılmasını və sürətləndirilməsini təmin edir. hardware thread directly supported by the processor dedicated control unit Tradisiya ilə VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayıb. Bu modelin yaradılması ilə yanaşı, və Arsitektlər one processor equaled one hardware thread one hardware thread per socket multi-core multi-threaded Qadınlar üçün modern proseslər: Hər bir qordun ən azından bir hardver thread-i vardır. Simultaneous Multithreading (SMT) - Intel-in versiyası Hyper-Threading adlandırılır - tek bir qordur bir neçə hardware threadə kömək edə bilər. Artıq, bir prosesor (socket) bir neçə qordur və hər bir qordur bir neçə hardware threadə malik olabilir. Mübahisəyə görə, bir çox Beləliklə, sistem aletləri ilə CPU bilgilerinizi kontrol edərkən, göstərilən “processorlar” sayının fiziki nüsxələr və ya socketlər deyil, logik threadlərə aid olması mümkündür. operating systems report hardware threads or logical cores as “processors.” Hazırda aparıcı sayımı necə kontrol edə bilərəm? Windows Windows Windows-da hardware threadlərin sayını kontrol etmək üçün bir neçə yol var, lakin qorxmayın, bu, o “10 yolu” blog postlarından biri deyil. Kullanış Baş səhifə » The TAB və SELECT . Task Manager Ctrl + Shift + Esc Performance CPU Görəcəksiniz ki, bir neçə sayda və (Dünyanın bir hissəsi var ki, bu belə görünür: cores logical processors Başqa variantlar var ki, özünüzü öyrənmək istəyirsiniz: PowerShell: Alternative 1: Alternativlər 1 (Get-WmiObject -Class Win32_Processor).NumberOfLogicalProcessors Command Prompt (requires wmic): Alternative 2: Alternativlər 2: wmic cpu get NumberOfLogicalProcessors,NumberOfCores Linux üçün Linux üçün "Linux"un hər hansı bir keyfiyyətini istifadə etsəniz, sisteminizin konfigürasiyası və Hardware threadlərin sayını "Linux" kitabını oxumayaraq kontrol edə bilərsiniz. Bir neçə ildir ki, bu filmdə hər biri belə görünür: /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: ... Bundan əlavə bir neçə şey qeyd etmək lazımdır: cpu qorduları: Bu hibrid arkitekturalar üçün yanıltıcı ola bilər, çünki bu sayı real qorduların sayını yansıtmayacaq (təkcə, mənim Intel i5-13 Gen 10 qordur: 6 P-qordur + 4 E-qordur, lakin 8 qordur göstərir). Xatırladaq ki, bu, “Logic Threads”un ümumi sayıdır. Ht bayrağının varlığı (Hyper-Threading üçün kısaltılmış) SMT'nin dəstəkləndiyini təsdiq edir. Bu komandaya bir neçə alternativ var ki, bu da daha açıq çıxışı verir: Tədbir 1 - LSK Tədbir 1 - LSK Sonrakı xəbərNeftçi : 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 İkinci alternativ: hwloc (lstopo) İkinci alternativ: hwloc (lstopo) Sisteminizin CPU topolojisini inspektorlaşdırmaq üçün bir başqa faydalı alət də popüler Linux utilitarıdır. Bu, hardver layoutunuza command-line və grafik göstəricilər verir.Koroner, hardver thread, cache level və NUMA nodularını görmək üçün çox faydalıdır. hwloc Əgər hwloc artıq yüklənmişse, sisteminizin arkitekturunun görkəmli bir kartı yaratabilirsiniz. Komandası : lstopo Hyper-Threading nə deməkdir? Hyper-Threading (HT) Intel-in Simultaneous Multithreading (SMT) implementasiyasıdır, hər bir fiziki qordunun iki əmr aksiyasını birbaşa davam etdirməyə imkan verir. CPU-nin daha yaxşı istifadə edilməsi - I/O-bound və ya multitasking iş yüklərində daha yaxşı performans Amma: Bu performansın iki qatını verməz – tipik artım 15-30% civarındadır. Paralel programlaşdırma: VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. Mövzu — i5–13450HX 6 P-qərarları HT → 12 thread ilə E-qərarları olmayan 4 HT → 4 threads ➡️ Toplam = 16 logiki thread What is Hyper-Threading? Hyper-Threading (HT) Intel-in Simultaneous Multithreading (SMT) implementasiyasıdır və hər bir fiziki qordunun çalışmasına imkan verir. Bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunacaq, bir ildir ki, bu problemlər həll olunacaq. two instruction streams CPU-nin daha yaxşı istifadə edilməsi - I/O-bound və ya multitasking iş yüklərində daha yaxşı performans Amma: Bu performansın iki qatını verməz – tipik artım 15-30% civarındadır. Caution for parallel programming: VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. Example — i5–13450HX: 6 P-qərarları HT → 12 thread ilə E-qərarları olmayan 4 HT → 4 threads ➡️ Toplam = 16 logiki thread Understanding Software Threads: The Foundation “Software Threads: The Foundation” proqramı “Software Threads”, “Software Threads”, “Software Threads”, “Software Threads”, “Software Threads”, “Software Threads”, “Software Threads”, “Software Threads”, “Software Threads” Bu proseslər bir prosesdə bağımsız proseslərdir. . programming abstractions “Software thread” bir prosesin içində var olan və öz exekutiyasının kontekstini saxlamaqla aynı adres yerini paylaşıb. “Software thread” bir prosesin içində var olan və öz exekutiyasının kontekstini saxlamaqla aynı adres yerini paylaşıb. Kodunuzda bir software thread yaratdığınızda, operativ sistemi və sürət vaxtı ortamı onu hazırlaşdırmaq üçün işləyir. Bu mapping dinamikdir və hər bir thread nə zaman və nə yerdə çalışdığını belirleyen thread planlayıcısına bağlıdır. Tədbirlər Hardware Tədbirlər Hardware VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. The Evolution From Processes to Threads Proqramlardan sülhə dəyişmək VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. Bir-birini bir-birini bir-birini bir-birini bir-birini bir-birini Ayrı-ayrı adres yerləri, file descriptors və user ID-lər ilə tam izolasiya İnterprocess Communication (IPC) sistemləri Bütün proseslərin duplikasiyası ilə bağlı ağır resurs overhead Threading bu proses-çentrik modelin limitlərini düzəltmək üçün daha finer-grained concurrence imkanlandırmaq üçün təqdim edildi. Threads bir neçə əsas üstünlüklərə malikdir: 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 Basitləşdirilmiş data paylaşımı 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 Resurssuzluq 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 Daha yaxşı reaksiya 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 Operativ sistemin planlaşdırılması Thread Architecture and Memory Model Thread Architecture və Memory Model Ümumilikdə, hər bir filmin özü özü özü ilə işləyir, bir sıra resursları da bu prosesdə digər filminlə paylaşıb. Private Thread resursları Hər kəsin özü var: Thread Control Block (TCB), thread ID, program hesabatı, registry set və planlaşdırma məlumatları içərisində Yerli variabillər və funksiyaların çağırılması üçün memoriya yığınları Program Counter: Əməliyyatda olan aktualdır Thread Control Block (TCB) ilə bağlı Memorialı Counter Programı Paylaşılmış resurslar Bir prosesdə olan bütün problemlər: 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 Kodi bölmələri Data sektoru Heykəl Memorialı Dosya Descriptorları Bu paylaşılan memoriya modeli həm güclüdür, həm də meydançadır.Efektiv kommunikasiya imkanına malik olsa da, data yarışlarını önləmək və filin təhlükəsizliyini təmin etmək üçün diqqətli sinchronizasiya ehtiyacını da təqdim edir. Bu paylaşılan memoriya modeli həm güclüdür, həm də meydançadır.Efektiv kommunikasiya imkanına malik olsa da, data yarışlarını önləmək və filin təhlükəsizliyini təmin etmək üçün diqqətli sinchronizasiya ehtiyacını da təqdim edir. The Fork/Join Model: Structured Parallelism Fork / Join modeli: strukturlu paralelizm VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. Başlanğıc: Başlanğıcın başlanğıcı başlanğıcdır Fork fazı: Paralel işə ehtiyac olduğunda, main thread yeni threadlər yaratır (forks), hər biri spesifik bir funksiya ilə başlayır Parallel Execution: Main və spawned thread hər ikisi bir-birinə uyğun olaraq, potansiyallıqla başqa hardver threadlərdə işləyir. Ətraflı xəbərlər: “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük”də “Türkçülük” var. Sürücülük davamı: Paralel işin nəticələri ilə sürətləndirilir Qiymətli start Fork fəziləsi Paralel işlər: Faza ilə bağlı: Təsadüfi davam: What’s Next? Sonrakı nədir? Bu qədər, biz fillərin və proseslərin əsas anlayışlarını dəstəklədik, sizə qurmaq üçün sağlam bir qurğular verəcəyik.Sonrakı hissədə, teoriyadan praktikaya dəyişəcəyik və fillərin dünyasını aktivləşdirmək üçün hazır olun. və Burada real kodu yazırıq, outputları analiz edərik və bu biblioteklərin necə yaşayışa gətirdiyini anlayırıq. POSIX threads (pthreads) C++ std::thread Suggested Reads Tədbirləri oxumaq [1] Əməkdarlıq Multithreaded Computer Architecture: A Summary of the State of the ART (Multithreaded Kompüter Arsitektri: ART-ın statusu haqqında) 2 İŞİD Distributed Computing: Principles, Algorithms, and Systems — Kshemkalyani və Singhal (uic.edu)