موضوع مقاله: چندریسمانی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # چندریسمانی | مقدمه: یک رایانه چندپردازنده‌ای می‌تواند همزمان دو یا چند ریسمان را اجرا کند که به معنی اجرای زودتر کل برنامه نسبت به رایانه تک‌پرداز است. | ## بخش 1: چندریسمانی | بر روی یک رایانه تک‌پردازنده یک برنامه چند ریسمانی زودتر اجرا نمی‌شود اما یک نرم‌افزار کاربردی چندریسمانی ممکن است با کاربر اندرکنش بیشتری داشته باشد زیرا چندین فعالیت در نرم‌افزار همزمان اجرا می‌شوند. نرم‌افزارهای سنتی تک‌ریسمان‌ای بر روی سیستم‌های چندپردازنده سریع‌تر اجرا نمی‌شوند زیرا ان نرم‌افزارها در هر زمان می‌توانند تنها یک پردازنده را به کار بگیرند. یک ریسمان شامل یک شناسه ریسمان، شمارنده برنامه (PC)، یک مجموعه ثبات، و یک پشته است. اگر فرآیندی دارای چندین ریسمان کنترل باشد، می‌تواند همزمان بیش از یک کار را انجام دهد. در زیر چند نمونه از برنامه‌های چند ریسمانی را آورده‌ایم: برنامه ای که از مجموعهٔ تصاویر نمونه عکس‌های کوچک ایجاد می‌کند، ممکن است از یک ریسمان جداگانه برای ایجاد نمونه تصویر کوچک از هر تصویر جداگانه استفاده کند. یک مرورگر وب ممکن است دارای یک ریسمان برای نمایش تصاویر یا متون باشد، در حالی که ریسمانی دیگر داده‌ها را از شبکه بازیابی می‌کند. یک پردازشگر کلمه ممکن است دارای یک ریسمان برای نمایش گرافیک، یک ریسمان دیگر برای پاسخ دادن به فشار دادن کلیدها از سوی کاربر و یک ریسمان سوم برای انجام املا و چک دستور زبان در پس زمینه باشد. برنامه‌ها همچنین می‌توانند با هدف حداکثر بهره‌گیری از قابلیت پردازش در سیستم‌های چند هسته ای طراحی شوند. چنین برنامه‌هایی می‌توانند چندین کار پردازنده ای سنگین را به‌طور موازی در چندین هسته محاسباتی انجام دهند. به عنوان مثال، یک سرور وب درخواست‌های مشتری را برای صفحات وب، تصاویر، صدا و غیره می‌پذیرد. | ## بخش 2: چندریسمانی | اگر وب سرور به صورت یک فرایند تک ریسمانی سنتی اجرا شود، می‌تواند در هر لحظه فقط به یک خدمت گیرنده سرویس دهد و مشتری مجبور است مدت زمان زیادی منتظر سرویس دهی برای درخواست خود بماند. وقتی سرور درخواستی را دریافت می‌کند، فرایند جداگانه ای برای سرویس دهی به آن درخواست ایجاد می‌کند. در حقیقت، این روش ایجاد فرایند معمولاً قبل از رایج شدن ریسمان‌ها، مورد استفاده قرار می‌گرفت. اگر فرایند جدید وظایفی شبیه فرایند موجود را انجام می‌دهد، چرا این همه هزینه سربار را متحمل شویم؟ اگر فرایند سرور وب چند ریسمانی باشد، سرور یک ریسمان جداگانه ایجاد می‌کند که به درخواست‌های مشتریان گوش می‌دهد. هنگامی که درخواستی صورت می‌گیرد، سرور به جای ایجاد فرایندی دیگر، یک ریسمان جدید برای سرویس دهی به درخواست جدید ایجاد می‌کند و مجدداً منتظر درخواست‌های بعدی می‌ماند. به عنوان مثال، در زمان بوت شدن سیستم در سیستم‌های لینوکس، چندین ریسمان هسته ایجاد می‌شود. هر ریسمان وظیفه خاصی مانند مدیریت دستگاه‌ها، مدیریت حافظه یا مدیریت وقفه را انجام می‌دهد. از دستور ps -ef می‌توان برای نمایش ریسمان‌های هسته در سیستم عامل لینوکس استفاده کرد. بسیاری از برنامه‌ها نیز می‌توانند از چندین ریسمان، بهره ببرند، از جمله، الگوریتم‌های اساسی مرتب‌سازی، درختان و گراف‌ها. | ## بخش 3: چندریسمانی | علاوه بر این، برنامه نویسانی که باید مسئله‌های سنگین پردازشی کنونی در داده کاوی، گرافیک و هوش مصنوعی را حل کنند، می‌توانند با طراحی راه حل‌هایی که به‌طور موازی اجرا می‌شوند، از قدرت سیستم‌های چند هسته ای جدید حداکثر استفاده را بکنند. مزایا مزایای برنامه‌نویسی چند ریسمانی را می‌توان به چهار دسته عمده تقسیم کرد: پاسخگویی. چند ریسمانی کردن یک برنامه تعاملی ممکن است به برنامه اجازه دهد که حتی اگر بخشی از آن مسدود شده باشد یا عملیاتی طولانی را انجام دهد، به اجرا ادامه دهد و در نتیجه پاسخگویی به کاربر را افزایش دهد. به عنوان مثال، در نظر بگیرید که چه اتفاقی می‌افتد وقتی کاربر دکمه ای را کلیک می‌کند که منجر به انجام یک عملیات وقت گیر می‌شود. یک برنامه تک ریسمانی تا زمانی که عملیات به پایان نرسد، پاسخگوی کاربر نخواهد بود. در مقابل، اگر عملیات زمان بر در یک ریسمان جداگانه و ناهمگام انجام شود، برنامه همچنان پاسخگو به کاربر است. فایده اشتراک کد و داده این است که به یک برنامه اجازه می‌دهد چندین ریسمان فعالیتی مختلف در فضای آدرس یکسان داشته باشد. ارزیابی تجربی تفاوت در سربار ممکن است دشوار باشد، اما به‌طور کلی ایجاد ریسمان، زمان و حافظه کمتری نسبت به ایجاد فرایند می‌برد. مزایای چند ریسمانی می‌تواند در معماری چند پردازنده، که در آن ممکن است ریسمان‌ها به‌طور موازی روی هسته‌های پردازشی مختلف اجرا شوند، حتی بیشتر باشد. | ## جمع‌بندی | یک فرایند تک ریسمانی، صرف نظر از تعداد پردازنده‌های موجود فقط می‌تواند در یک پردازنده اجرا شود.