مرا به خاطر بسپار

محاسبات چندنخی چیست؟

بازدید: 427 آخرین به‌روزرسانی: 16 خرداد 1403

مقدمه

امروزه با پیشرفت سریع علم کامپیوتر و توسعه نرم‌افزار، تقاضا برای برنامه‌های کاربردی کارآمد به‌طور فزاینده‌ای اهمیت پیدا کرده است. فناوری چند‌نخی (Multithreading) به عنوان یک راه حل برای استفاده از قابلیت معماری‌های سخت‌افزاری ظاهر شده است. هدف از این مقاله ارائه درک دقیقی از مفهوم چندنخی، عملکرد و کاربردهای آن است.

چندنخی چگونه کار می‌کند؟

در یک برنامه، یک نخ (Thread) یک فرآیند (Process) سبک وزن است که سیستم عامل می‌تواند همزمان با بخش‌های دیگر برنامه‌ریزی و اجرا کند. سیستم عامل نخ‌ها را ایجاد و مدیریت می‌کند و آن‌ها حافظه و منابعی مشابه برنامه‌ای که آن‌ها را ایجاد کرده است را به اشتراک می‌گذارند. این موضوع باعث می‌شود تا چندین نخ با هم همکاری کرده و در یک برنامه واحد کار کنند. هر درخواست کاربر برای یک برنامه یا یک خدمت به عنوان یک نخ با هویت جداگانه شناخته می‌شود.
هدف از چندنخی این است که با تقسیم یک فرآیند به نخ‌های متعدد، به موازی‌سازی دست یابیم. به عنوان مثال، در یک مرورگر، چندین تب می‌تواند نخ‌های مختلف باشد. یا برنامه ورد (MS Word) از چندین نخ استفاده می‌کند: برای مثال یک نخ برای قالب‌بندی متن و نخ دیگر برای پردازش ورودی‌ها.
با اینکه پردازنده در یک زمان تنها یک دستور را اجرا می‌کند، نخ‌های برنامه‌های متعدد به قدری سریع اجرا می‌شوند که به نظر می‌رسد چندین برنامه به طور همزمان اجرا می‌شوند. هر چرخه پردازنده (CPU Cycle) یک نخ واحد را اجرا می‌کند که به تمام نخ‌های دیگر در جریان خود پیوند می‌دهد. این فرآیند همگام‌سازی آنقدر سریع اتفاق می‌افتد که به نظر می‌رسد همه جریان‌ها همزمان در حال اجرا هستند. این را می‌توان به عنوان یک برنامه چندنخی توصیف کرد، زیرا می‌تواند بسیاری از نخ‌ها را در حین پردازش اجرا کند. هر نخ حاوی اطلاعاتی در مورد نحوه ارتباط آن با برنامه کلی است. ولی در جریان پردازش ناهمزمان برخی از نخ‌ها اجرا می‌شوند، در حالی که برخی دیگر منتظر نوبت خود هستند.

تفاوت چندنخی با چندفرآیندی چیست؟

چندفرآیندی (Multi-Processing) به توانایی یک سیستم برای اجرای چندین فرآیند به صورت موازی اشاره دارد که در آن هر پردازنده می تواند یک یا چند فرآیند را اجرا کند. در چندنخی، چندین نخ درون یک فرآیند، بخش‌های کد، داده و فایل‌های یکسانی را به اشتراک می‌گذارند اما روی یک مجموعه ثبات (Register) اختصاصی و پشته (Stack) متفاوت اجرا می‌شوند. چندفرآیندی به جای یک فرآیند واحد از چندین فرآیند استفاده می‌کند و کد، داده و فایل‌ها را تکرار می‌کند، که سربار بیشتری را دارد.

تفاوت چندخی با چندفرآیندی

چندنخی برای فرآیندهای محدود به I/O مفید است، مانند خواندن فایل‌ها از یک شبکه یا پایگاه داده، زیرا هر نخ می‌تواند فرآیند را به طور همزمان اجرا کند. هم چند نخی و هم چندفرآیندی برای پردازش‌های محدود به پردازنده، مانند وظایف محاسباتی سنگین مفید هستند زیرا از داشتن چندین پردازنده سود می بردند. شبیه به نحوه عملکرد رایانه‌های چند هسته‌ای که سریع‌تر از رایانه‌های تک هسته‌ای هستند.

دقت کنید که بین همزمانی (Concurrency) و موازی بودن (Parallelism) تفاوت وجود دارد. موازی‌سازی به چندین کار اجازه می‌دهد تا همزمان اجرا شوند، در حالی که همزمانی به چندین کار اجازه می‌دهد تا یکی در میان به روش همپوشانی اجرا شوند.

مدل‌های چندنخی

سه نوع مدل چندنخی وجود دارد که عبارتند از:
  • رابطه چند به چند: در این مدل هر تعداد نخ کاربر (User Threads) را می‌توان به تعداد مساوی یا کمتر از نخ‌های هسته (Kernel Threads) نگاشت کرد. توسعه د‌هندگان قادر به ایجاد چندین نخ کاربر هستند و نخ‌های هسته مربوطه آن‌ها می‌توانند به صورت موازی روی یک ماشین چند پردازنده اجرا شوند.
  • رابطه چند به یک: این مدل چندین نخ در سطح کاربر را به یک نخ در سطح هسته نگاشت می‌کند. هنگامی که یک فراخوانی سیستم مسدود‌کننده برقرار می‌شود، کتابخانه نخ مدیریت نخ را در کتابخانه کاربر انجام می‌دهد و کل فرآیند را مسدود می‌کند. چند نخ نمی‌توانند به صورت موازی اجرا شوند، فقط یک نخ می‌تواند در یک زمان به هسته دسترسی داشته باشد.
  • رابطه یک به یک: در این مدل، نخ در سطح کاربر و نخ در سطح هسته یک رابطه یک به یک به اشتراک می‌گذارند. همزمانی ارائه شده توسط این مدل بیشتر از مدل چند به یک است. این امکان اجرای موازی نخ‌های متعدد روی ریزپردازنده‌ها را فراهم می‌کند.

چندنخی در پردازنده گرافیکی و پردازنده مرکزی

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

جمع‌بندی

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

سوالات متداول

  1. هدف از چندنخی چیست؟

هدف اصلی چندنخی بهبود کارایی و موازی‌سازی در اجرای برنامه‌ها با استفاده از هسته‌های موازی پردازنده (مانند CPU) است.

  1. پردازش موازی چیست؟

پردازش موازی به یک روش محاسباتی اشاره دارد که به پردازش کارهای بزرگ با جداسازی آن‌ها به چندین بخش و تکمیل همزمان آن‌ها با دو یا چند واحد پردازشی کمک می‌کند.

  1. چه وظیفه‌هایی از چندنخی بهره‌مند می‌برند؟

چندنخی در وظایفی مانند محاسبات علمی، پردازش تصویر، و اجرای همزمان وظایف مختلف (مثلاً کاربردهای وب) موثر است.

  1. چندنخی چیست؟
چندنخی یک مدل اجرایی است که اجازه اجرای همزمان چندین نخ (thread) در یک فرآیند    (process)  را می‌دهد.
تا چه حد این مطلب برای شما مفید بود؟
بر اساس رای 1 نفر

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

ثبت نظر

نظر دادن