سرکشی‌کردن (علوم رایانه)

**سرکشی کردن،** یا عملیات **سرکشی،** در علوم کامپیوتر، اشاره به نمونه برداری فعال از وضعیت یک دستگاه خارجی توسط برنامه سرویس گیرنده به عنوان یک فعالیت همزمان دارد. سرکشی اغلب از لحاظ ورودی / خروجی () مورد استفاده قرار می‌گیرد و همچنین به عنوان **** سرکشی شده یا ** هدایت شده توسط نرم‌افزار شناخته می‌شود**.

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

در یک سیستم ساده یک هدفه، حتی انتظار مشغول اگر تا زمانی که دسترسی به  هیچ کاری نتوان انجام داد، کاملاً مناسب است، اما در اغلب موارد این به‌طور سنتی نتیجه سخت‌افزار ساده و سیستم عامل‌های غیر چند وظیفه ای هست.

سرکشی اغلب با لایه سخت‌افزار بسیار پایین درگیر می‌شود. به عنوان مثال، سرکشی یک پورت موازی پرینتر برای بررسی اینکه آیا آن آماده دریافت کاراکتر دیگری می‌باشد نیازمند بررسی یک بیت از بایت می‌باشد. این بیت در زمان خواندن نشان می‌دهد که آیا یک سیم تک در کابل چاپگر دارای ولتاژ کم یا زیاد است. دستورالعمل  که این بایت را می‌خواند به‌طور مستقیم وضعیت ولتاژ هشت سیم واقعی را به هشت مدار (فلیپ‌فلاپ) منتقل می‌کند که یک بایت یک ثبات CPU را تشکیل می‌دهند.

سرکشی ازین جهت نامناسب است که اگر دستگاه‌های زیادی برای چک کردن وجود داشته باشند، زمان مورد نیاز برای نظارت بر آنها می‌تواند از زمان در دسترس برای سرویس دهی دستگاه I / O بیشتر باشد.

### الگوریتم
سرکشی می‌تواند در مراحل زیر شرح داده شود (یک عکس اضافه کنید):

اقدامات میزبان:
# میزبان بارها و بارها بیت اشغال کنترل‌کننده را می‌خواند تا زمانی که صفر شود.
# وقتی صفر است، میزبان در ثبات فرمان می‌نویسد و یک بایت را در ثبات داده خروجی می‌نویسد.
# میزبان بیت آماده دستور (set to 1) را ست می‌کند.

اقدامات کنترل‌کننده:
# وقتی کنترل‌کننده بیت آماده دستور را ست (یک) می‌بیند، بیت اشغال را ست می‌کند.
# کنترل‌کننده ثبات دستور را می‌خواند و از آنجا که بیت نوشتن ست شده‌است، عملیات  لازم را بر روی دستگاه انجام می‌دهد. اگر بیت خواندن به جای بیت نوشتن ست شود، داده‌ها از دستگاه به ثبت داده ورودی بارگذاری می‌شوند، که بعداً توسط میزبان خوانده می‌شود.
# کنترل‌کننده بیت آماده دستور را پس از اتمام همه چیز پاک (صفر) می‌کند، بیت خطا را پاک می‌کند تا نشان دهنده عملیات موفق شود و بیت اشغال را بازنشانی می‌کند (۰).

## انواع
یک **چرخه سرکشی** زمانی است که هر عنصر یکبار بررسی می‌شود. چرخه سرکشی مطلوب بر اساس چندین عامل، از جمله سرعت مورد نیاز پاسخ و سربار (به عنوان مثال، زمان پردازنده و پهنای باند) سرکشی متفاوت خواهد بود.

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

در سرکشی قطبی، که همچنین به عنوان سکرشی نشانه شناخته می‌شود، هر عنصر، عنصر بعدی را در یک دنباله ثابت بررسی می‌کند. این تا زمانی ادامه می‌یابد که به اولین عنصر برسد، که در آن زمان دوره سرکشی دوباره شروع می‌شود.

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

در شبکه‌ها، سرکشی برای تعیین گره‌هایی که می‌خواهند به شبکه دسترسی داشته باشند استفاده می‌شود. همچنین توسط پروتکل‌های مسیریابی برای بازیابی اطلاعات مسیریابی مورد استفاده قرار می‌گیرد، همان‌طور که در مورد EGP (پروتکل دروازه خارجی) استفاده می‌شود.

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

## پیام سرکشی
یک **پیام سرکشی** یک پیام تصدیق کنترل است.

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

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

## جستارهای وابسته
* I / O ناهمزمان
* فن آوری سرکشی
* درخواست وقفه (معماری کامپیوتر)
* kqueue
* سرکشی ناهمگام دوره ای
* انتخاب (یونیکس)

رده:ورودی/خروجی
رده:رویدادها (رایانش)
رده:علوم رایانه