69 पॉइंट द्वारा alstjr7375 2022-12-28 | 10 टिप्पणियां | WhatsApp पर शेयर करें

सरल शब्दावली की व्यवस्थित समीक्षा से शुरुआत करते हुए, ग्राफिक्स और सेमीकंडक्टर तक व्यापक रूप से कवर किया गया है.

  1. शब्दावली
    • Concurrency / Parallelism
    • Async / Non-blocking
    • Preemptive / Non-preemptive
  2. Operating System और Processor
    • Operating System
    • Processor
  3. Coroutine और Fiber
    • Fiber
    • Coroutine
  4. Generator, Async/Await, Continuation
    • Generator
    • Async / Await
    • Continuation
  5. Promise और Future
  6. I/O Multiplexing
    • Multiplexing
    • Socket
    • I/O models
  7. Ring Buffer, आधुनिक I/O models, LMAX Disruptor
    • Ring Buffer
    • आधुनिक I/O models
    • LMAX Disruptor
  8. Synchronization primitives
    • आवश्यकता
    • Thread safety
    • Spinlock
    • Mutex
    • Semaphore
    • STM
    • GIL
  9. अन्य script languages के approaches और Reactor/Proactor patterns
    • Ractor (Ruby)
    • Node.js (Reactor pattern)
    • Proactor pattern
  10. CSP और Actor
    • CSP
    • Actor
  11. Green thread, goroutine और आधुनिक async runtime technologies
    • Green thread
    • आधुनिक CSP runtime
    • आधुनिक Actor runtime
  12. Parallelism
    • SIMD और pipelining
    • OpenMP & MPI
    • आधुनिक parallel techniques
    • Lambda architecture
  13. GPU
    • Pipeline और shader
    • Monitor
    • Buffering
    • Vertical sync
    • Frame pacing और beam racing
    • Compositor
    • Graphics API / library
  14. अन्य chips
    • Overview
    • DSP
    • FPGA
    • TPU
  15. संदर्भ

10 टिप्पणियां

 
roxie 2022-12-31

सिंक्रोनस और असिंक्रोनस में फर्क यह है कि काम पूरा हुआ है या नहीं, इसकी पुष्टि कौन करता है
ब्लॉकिंग और नॉन-ब्लॉकिंग में फर्क यह है कि नियंत्रण का अधिकार है या नहीं

मैं यह बात अनगिनत ब्लॉगों में बिल्कुल इसी तरह दोहराई हुई देख रहा हूँ, तो जिज्ञासा है कि इसका मूल स्रोत कहाँ है।

ज़्यादातर ब्लॉग एक-दूसरे को संदर्भित करने में ही व्यस्त हैं, इसलिए मूल लेख का अंदाज़ा लगाना मुश्किल था। जो कुछ मिला, उसमें IBM का AIO दस्तावेज़ ही था, लेकिन मुझे लगा कि यह शायद सिर्फ kernel I/O तक सीमित संदर्भ में ही बात कर रहा है। और यह भी सुना है कि यह वर्गीकरण अपने-आप में विवादित है।

क्या इसे कोई प्रामाणिक मानदंड माना जा सकता है?

 
alstjr7375 2022-12-31

सबसे पहले, synchronous/asynchronous को अगर circuit के आधार पर देखें तो ठीक रहेगा।
Synchronous circuit timing के लिए clock का उपयोग करते हैं, और asynchronous circuit event या किसी अन्य input से trigger होते हैं।
यानी, asynchronous API को भी उसी तरह callback आदि से trigger होने वाले तरीके के रूप में परिभाषित करना गलत नहीं होगा।
https://developer.mozilla.org/en-US/docs/…

Blocking/non-blocking API के लिए यह परिभाषा उपयुक्त है कि क्या किसी काम का इंतज़ार करना अनिवार्य है या नहीं।
हालांकि, इंतज़ार न करने के लिए ऐसा implementation होना चाहिए जिसमें call किया गया function control अपने पास रखे, इसलिए शायद इसे उसी तरह ज़्यादा समझाया जाता है।
https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/

मैंने इसे संक्षेप में आगे बढ़ने के लिए छोड़ दिया था, लेकिन अब इस सामग्री को अतिरिक्त रूप से शामिल करने की कोशिश करूँगा।

 
roxie 2023-01-01

आपने जो कहा, उससे मैं पूरी तरह सहमत हूँ। लेकिन इन दो मानदंड-अक्षों को एक quadrant वाले plane पर दिखाना चाहिए या नहीं, क्या ऐसा किया जा सकता है, और क्या इन्हें उचित रूप से अलग किया जा सकता है—इस बारे में अब भी मुझे पूरा भरोसा नहीं है। मुझे तो Blocking और Sync वैचारिक रूप से 90% संदर्भ साझा करते हुए लगते हैं। Non-Blocking और Async के मामले में भी यही बात लागू होती है।

 
alstjr7375 2023-01-01

Blocking-Sync और Non-Blocking-Async का साथ में इस्तेमाल अक्सर होता है, लेकिन कुछ मामलों में इन्हें अलग करके देखना ज़रूरी होता है।

  • Blocking-Async: Select जैसे I/O multiplexing
  • Non-Blocking-Sync: डेटा polling

इसी वजह से मुझे लगता है कि इन्हें अलग-अलग करके इस्तेमाल करना ही सही है।

 
roxie 2023-01-02

आपके दिए गए उदाहरणों की मुझे लगभग समझ ही नहीं है, इसलिए शायद उतनी सहमति महसूस नहीं हो रही है।

https://incredible-larva.tistory.com/entry/IO-Multiplexing-Topabogi-1bu इस लेख में इसे नीचे की तरह समझाया गया है:

आखिरकार select का अनुरोध करने वाला user process, return मिले हुए value को देखकर यह तय करता है कि आगे कोई follow-up काम है या नहीं। चूँकि कई I/O requests, जो कब आएँगी इसका अनुमान नहीं लगाया जा सकता, एक साथ manage की जा रही हैं, इसलिए कुछ लोग इसे Asynchronous मानते हैं, लेकिन अंततः वास्तविक individual I/O operation तो Synchronous व्यवहार ही दिखाता है।

इस बारे में आपकी क्या राय है, यह जानना चाहता हूँ। सच कहूँ तो, इस बिंदु पर आकर मुझे लगने लगा कि यह 2x2 classification अब अर्थहीन है। लगता है domain और perspective के हिसाब से इसकी व्याख्या अलग-अलग हो जाती है।

 
alstjr7375 2023-01-02

आगे, जब kernel की प्रतिक्रिया का इंतज़ार किया जाता है, तो kernel से यह callback signal आता है कि परिणाम मान तैयार हो गया है, और user process डेटा को अपने buffer में कॉपी करके ले आता है.

यह हिस्सा ऊपर सहमत हुए callback-आधारित trigger तरीके का है, इसलिए अगर इसे अलग करके परिभाषित करना हो तो इसे Blocking-Async कहना सही लगता है.
नज़रिए के अनुसार कुछ मामले थोड़े अस्पष्ट लग सकते हैं.

लेकिन polling एक स्पष्ट उदाहरण है,
https://en.wikipedia.org/wiki/Polling_(computer_science)

polling के मामले में, क्योंकि डेटा तैयार हुआ है या नहीं इसे बार-बार जाँचा जाता है, यह Sync-Blocking का एक उपयुक्त उदाहरण है.

 
wonkwh 2022-12-29

वाह, बहुत बढ़िया सामग्री है, धन्यवाद।

 
kayws426 2022-12-29

बहुत अच्छा लगा पढ़कर!

 
bus710 2022-12-28

स्क्रोल का तो कोई अंत ही नहीं है d d
लगता है कि इसी तरह के विषयों पर आधारित "7 तरह के समकालिकता मॉडल" नाम की किताब भी एक बार पढ़ने लायक है।

 
alstjr7375 2022-12-29

विषयसूची की तुलना की तो काफ़ी मिलती-जुलती लगी।
अच्छी किताब लगती है।