موضوع مقاله: ریسمان (رایانش) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ریسمان (رایانش) | مقدمه: پیاده‌سازی ریسمان‌ها و فرایندها از یک سیستم‌عامل به سیستم‌عامل دیگر متفاوت است اما در اکثر موارد، ریسمان یک مولفه از فرایند است. | ## بخش 1: ریسمان (رایانش) | ریسمان‌های یک فرایند، مخصوصا «کد اجرایی‌شان»، «مقادیر متغیرهای با انتساب پویا»، و «متغیرهای سراسری ریسمان‌ی محلی» را، در هر زمان، به اشتراک می‌گذارند. به ویژه اینکه، ریسمان در یک فرایند دستورالعمل (کد قابل اجرا) و متن خود (ارزش هر متغیر در هر لحظه معین) را به اشتراک می‌گذارد. این تعویض زمینه به گونه‌ای اجرا می‌شود که کاربر تصور می‌کند ریسمان‌ها یا وظایف؛ هم‌زمان اجرا می‌شوند. در سیستم‌های چند پردازنده‌ای یا چندهسته‌ای، ریسمان‌ها می‌توانند به صورت جداگانه و هم‌زمان توسط هر کدام از پردازنده‌ها یا هسته‌ها اجرا شوند. در حالت چندپردازنده‌ای، سیستم عامل ممکن است از ریسمان‌های سخت‌افزار که برای بهره‌برداری بهتر از پردازندهٔ مرکزی؛ در پشتیبان سخت‌افزار موجود است استفاده کند و این حالت با ریسمان‌های نرم‌افزاری که به‌طور کامل توسط نرم‌افزار بدون دخالت پردازنده مرکزی ساخته می‌شوند؛ متفاوت است. زمان‌بندی پردازش در اغلب سیستم عامل‌های امروزه به‌طور مستقیم از هر دو حالت ریسمان‌های اشتراک زمانی و چندپردازنده‌ای پشتیبانی می‌کنند. هسته سیستم عامل به برنامه‌ها این اجازه را می‌دهد که ریسمان‌ها را توسط بازبینی واسط فراخوان سیستمی اداره کند. برخی از پیاده‌سازی ریسمان ها؛ ریسمان‌های هسته نامیده می‌شوند، در حقیقت فرایندهای سبک‌وزن نوع خاصی از ریسمان‌های هسته هستند که وضعیت و اطلاعات مشابه را به اشتراک می‌گذارند. برنامه‌ها می‌توانند ریسمان‌های فضای کاربر را برای ایجاد وقفه در عملکرد خود توسط زمان‌سنج، ارسال سیگنال یا روش‌های دیگر استفاده کنند. ریسمان‌ها در مقابل فرایندها ریسمان‌ها با چندکارگی پردازش رایانه سنتی؛ در موارد زیر تفاوت دارند: فرایندها عمدتاً مستقل هستند، در حالیکه ریسمان‌ها به صورت زیرمجموعه‌هایی از فرایند به حساب می‌آیند. فرایند دارای چندین فضای آدرس مجزا است، که ریسمان‌ها این فضای آدرس‌ها را به اشتراک می‌گذارند. فرایند تنها بر روی سیتم‌های ارائه‌کنندهٔ ماشین‌های ارتباط بین پردازشی اثر متقابل می‌گذارد. | ## بخش 2: ریسمان (رایانش) | تعویض زمینه در بین ریسمان‌ها در یک فرایند عموماً سریع تر از تعویض زمینه در بین فرایندها است. سیستم‌هایی مانند ویندوز ان‌تی (به انگلیسی: Windows NT) و اواس/۲ (به انگلیسی: OS/2) به عنوان سیستم‌هایی با ریسمان‌های ارزان و فرایندهای گران شناخته شده‌اند؛ در سیستم عامل‌های دیگر تفاوت زیادی به جز در هزینهٔ فضای آدرس وجود ندارد. چندریسمانی یک مدل گسترده در برنامه‌نویسی و اجرا است که اجازه می‌دهد چند ریسمان در یک فرایند اجرا شوند. چندریسمانی همچنین می‌تواند در یک فرایند تنها برای رایانش موازی در سیستم چندپردازشی به کار رود. برنامه‌های کاربردی چندریسمانی مزیت‌های زیر را دارا هستند: پاسخدهی: در برنامه‌های تک ریسمانی، اگر ریسمان اجرایی اصلی در اجرای یک وظیفهٔ طولانی مسدود شود، تمام برنامه کاربردی می‌تواند متوقف شود. با انتقال این وظیفهٔ طولانی‌مدت به ریسمان کارگر که یکجا با ریسمان اجرایی اصلی فعالیت می‌کند، این امکان وجود دارد که برنامه کاربردی بتواند به ورودی پاسخگو باشد در حالی که وظیفه اجرایی در پس زمینه اجرا می‌شود. به عبارت دیگر، در بسیاری حالات چندریسمانی بودن تنها راه برای پاسخگو نگه داشتن برنامه کاربردی نیست، به وسیلهٔ ورودی و خروجی غیرد همزمان یا سیگنال‌های یونیکس امکان دستیابی به نتیجه مشابه وجود دارد. اجرای سریعتر: این مزیت چندریسمانی به برنامه اجازه می‌دهد که در سیستم رایانه‌هایی که دارای چندین پردازنده یا پردازنده‌های چندهسته‌ای هستند؛ سرعت عملکرد را افزایش دهد، یا از ماشین پردازش خوشه‌ای بگذرد؛ زیرا به‌طور طبیعی ریسمان‌های یک برنامه در همروندی اجرا خود را قرض می‌دهند. برای مثال وب‌سرور آپاچی، که از مخزنی از شنونده و ریسمان‌های سرور برای گوش دادن به درخواست‌های ورودی و پردازش این درخواست‌ها استفاده می‌کند. ساده‌سازی اشتراک و ارتباطات: برخلاف فرایندها، که نیازمند ارسال پیام یا اشتراک حافظه برای اجرای ارتباط بین پردازشی هستند، ارتباطات در بین ریسمان‌ها بسیار ساده است. ریسمان‌ها به‌طور خودکار داده‌ها را به اشتراک می‌گذارند، کد و فایل‌ها و …، ارتباطات به‌طور وسیع ساده‌سازی شده‌اند. موازی کردن: برنامه‌های کاربردی به دنبال بهره‌برداری از سیستم‌های چندهسته‌ای و چندپردازنده‌ای که توانایی استفاده از چندریسمانی برای تقسیم داده‌ها و وظایف در ریز-وظایف موازی را دارند؛ هستند. | ## بخش 3: ریسمان (رایانش) | واحد پردازش گرافیکی محیط‌های محاسباتی مانند کودا و اوپن‌سی‌ال از مدل چندریسمانی استفاده می‌کنند که صدها هزار از این ریسمان‌ها به‌طورت موازی در تعداد زیادی هسته اجرا می‌شوند. چندریسمانی معایب زیر را دارد: همگام‌سازی: از آنجاییکه آن‌ها از فضای آدرسی مشترکی استفاده می‌کنند، برنامه‌نویس باید مراقب وضعیت رقابتی و دیگر عملکردهای غیربصری باشد. برای اینکه داده‌ها به‌طور صحیح اداره شوند، ریسمان‌ها اغلب نیاز به یک وعده گاه در زمان اجرای فرایند داده دارند. همچنین ممکن است ریسمان‌ها نیازمند انحصار متقابل عملیات‌ها باشند (که اغلب از نشان‌بر استفاده می‌شود) تا از تغییر داده‌های مشترک که به‌طور هم‌زمان خوانده می‌شوند جلوگیری شود. ریسمان فرایند را خراب می‌کند: یک عملیات غیرقانونی اجرا شده توسط یک ریسمان تمام فرایند را خراب می‌کند، یک رفتار نادرست از ریسمان می‌تواند تمام پردازش‌های باقی ریسمان‌ها در برنامه را مختل کند. زمان‌بندی زمان‌بندی ریسمان‌های سیستم عامل در یکی از دو راه: چندوظیفه‌ای انحصاری عمدتاً دیگاه برتری را مطرح می‌کند، به گونه‌ای که اجازه می‌دهد سیستم عامل تعیین کند که چه زمانی تعویض زمینه رخ می‌دهد. شرایط نامساعد برای چندریسمانی انحصاری این است که سیستم ممکن است تعویض زمینه در زمان نامناسب داشته باشد، که موجب معکوس کردن اولویت یا اثرات منفی دیگر می‌شود. چندریسمانی تعاونی، به عبارت دیگر، اعتماد کردن به ریسمان‌ها برای رهاسازی کنترل؛ زمانی که در لحظه توقف قرار دارند است. ریسمان‌هایی که وظایف را فراخوانی می‌کنند، ابتدا در عملکرد چندبرنامه‌ای OS/360 با تعداد متغیری از وظایف در ۱۹۶۷ ظاهر شدند. تا اواخر دههٔ ۱۹۸۰، پردازنده‌ها در رایانه‌های رومیزی پشتیبانی زیادی از چندریسمانی نمی‌کردند، اگرچه ریسمان‌ها هنوز هم در آن رایانه‌ها استفاده می‌شد زیرا جابه جایی بین ریسمان‌ها بسیار سریعتر از تعویض زمینهٔ کل فرایند بود. | ## جمع‌بندی | این طراحی در معماری اینتل کور و اینتل کور۲ کمی افت کرد، اما دوباره در معماری پردازنده‌های کور ای ۷ و برخی از کور ای ۳ و ۵ برقرار شد.