درگیری ها را در برنامه های قوطی قطع کنید. تعارضات را قطع کنید سیستم قطع می شود. نحوه برخورد با خواندن بالا

بیایید با مفهوم وقفه شروع کنیم.
وقفه رویدادی است که به سیستم می گوید اتفاقی افتاده است و نیاز به مداخله دارد.
چنین رویدادهایی می توانند عبارتند از: یک کلید فشار داده شده روی صفحه کلید، یک سیگنال از مودم، انواع خطاها (مانند تقسیم بر صفر) و موارد مشابه.

همانطور که احتمالا قبلاً شنیده اید، وقفه های سخت افزاری و نرم افزاری وجود دارد.
سخت‌افزار (IRQ - درخواست وقفه) - آنهایی که توسط سخت‌افزار و نرم‌افزار - توسط نرم‌افزار آغاز می‌شوند، و مکانیسم‌های فراخوانی وقفه سخت‌افزاری یا نرم‌افزاری کمی متفاوت است، اگرچه برای یک پردازنده این اساساً یکسان است.

با وقفه های نرم افزاری (INT - Interrupt) ساده است - برنامه یک درخواست وقفه را فراخوانی می کند (در زبان اسمبلی INT xx است که xx عدد وقفه است)، پس از آن پردازنده آدرس برگشتی را در برنامه ذخیره می کند و پرچم های وضعیت پردازنده را ذخیره می کند. و به سمت کنترل کننده وقفه می رود.
برای پردازنده بسیار آسان است که آدرس برنامه کنترل کننده را پیدا کند (حتی لازم نیست فکر کنید) - اولین کیلوبایت حافظه دسترسی تصادفیشامل آدرس این برنامه ها می باشد.

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

وقفه‌های سخت‌افزاری کمی پیچیده‌تر هستند - هر اتوبوس (PCI، ISA و غیره) دارای خطوط خاصی (خواندن - مخاطبین) است که مسئول وقفه‌های ناشی از دستگاه‌ها هستند.
اعداد وقفه سخت افزاری مستقیماً با آدرس های نرم افزار مطابقت ندارند، یعنی IRQ 0 سخت افزار با INT 8 مطابقت دارد و غیره از طریق جدول.

تعجب می کند که چرا به این IRQ ها نیاز داریم؟
اولاً، دائماً همه دستگاه ها را برای موضوع مورد بازجویی قرار دهید "اما آیا می خواهید چنین چیزی را برای ما ارسال کنید؟" این فقط از نقطه نظر عملکرد امکان پذیر نیست.

پردازنده به سادگی از انجام این کار خسته می شود - بسیار ساده تر است که به دستگاه برخی حقوق بدهید و اجازه دهید دستور دهد.
ثانیاً، خود مکانیزم به برنامه‌ها و پردازنده اجازه می‌دهد تا به تمام عملکرد دستگاه‌ها کاملاً لعنتی وارد کنند.

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

تصور کنید که دو دستگاه روی دو وقفه مختلف "آویزان" هستند - یک رادار ردیابی موشک دوربرد و یک کتری.
و ناگهان آنها وقفه های خود را در همان زمان صدا می کنند.
چه چیزی برای شما مهمتر است - یک کتری یا یک دسته موشک که می تواند در یک دقیقه روی سر شما بیفتد؟
خودشه!

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

در اینجا لیستی از وقفه های سخت افزاری است که معمولاً در سیستمی که به روش خاصی پیکربندی نشده استفاده می شود:

0 (INT 08h) - تایمر سیستم
. 1 (INT 09h) - کنترل کننده صفحه کلید
. 2 (INT 0Ah) - با کارت گرافیک در XT جفت شده است. در AT و بالاتر برای آبشار تراشه کنترل کننده وقفه دوم استفاده می شود
. 3 (INT 0Bh) - استاندارد برای COM2/COM4
. 4 (INT 0Ch) - استاندارد برای COM1/COM3
. 5 (INT 0Dh) - معمولا رایگان است، اما در XT یک کنترلر روی این IRQ وجود داشت هارد دیسک
. 6 (INT 0Eh) - کنترلر FDD
. 7 (INT 0Fh) - وقفه پورت موازی (LPT)، اما توسط بسیاری از کنترل کننده های LPT استفاده نمی شود
. 8 (INT 70h) - ساعت زمان واقعی (RTC - ساعت واقعی)، وقفه 18.2 بار در ثانیه نامیده می شود.
. 9 (INT 71h) - شبیه سازی IRQ2 (برای سازگاری)
. 10 (INT 72h) - رایگان
. 11 (INT 73h) - رایگان
. 12 (INT 74h) - کنترلر ماوس PS/2
. 13 (INT 75h) - پردازنده کمکی ریاضی
. 14 (INT 76h) - اولین کانال کنترلر IDE HDD
. 15 (INT 77h) - دومین کانال کنترلر IDE HDD

اینها چه نوع حیواناتی هستند - IRQ2 و IRQ9 که به روشی نامفهوم به هم متصل هستند؟
واقعیت این است که در رایانه های XT (آنها را به خاطر دارید؟) تنها یک تراشه مسئول پردازش وقفه های سخت افزاری بود.
قابلیت های این ریزمدار، به بیان ملایم، ناچیز بود - فقط می توانست وقفه های سخت افزاری را ارائه دهد.

اما پتانسیل داشت - هنگام آبشار یکی از وقفه ها به ریزمدار دیگر، امکان اتصال چندین مجموعه دیگر از این منطق وجود داشت و در رایانه های IBM AT قبلاً دو ریز مدار و 16 وقفه سخت افزاری وجود داشت.
از آنجایی که دسترسی به ریز مدار دوم در سطح سخت افزار از طریق IRQ 2 اولین (پل IRQ2-IRQ9) انجام می شد، استفاده از IRQ 2 یا IRQ9 برای نیازهای شخصی دارای تعدادی ویژگی بود.

هنگامی که دستگاهی که روی IRQ2 کار می‌کرد، وقفه ایجاد کرد، منطق جدید AT آن را به سخت‌افزار به IRQ9 فرستاد، پس از آن BIOS به نوبه خود سیگنال را به IRQ2 هدایت کرد - به نرم افزارکه برای کار با IRQ2 طراحی شده بود، قابلیت کار معمولی با دستگاه را داشت.

به همین دلیل است که در مادربردهای مدرن، جایی که تمام منطق کار با وقفه های سخت افزاری از قبل در چیپست تعبیه شده است، پشت سر هم IRQ2-IRQ9 برای سازگاری با نرم افزار و سخت افزار قدیمی باقی مانده است.
اکنون می توانید با خیال راحت از IRQ9 برای اهداف خود استفاده کنید.

خوب، خوب، ما یک سیگنال دریافت کردیم که دستگاه می خواهد چیزی به ما بگوید، و بعد چه؟
پس از همه، شما باید داده ها را دریافت کنید و به نحوی آنها را پردازش کنید.
برای انجام این کار، بخشی از RAM سازماندهی شده است که در آن دستگاه دارای داده هایی برای پردازش است و بر این اساس درایور با آنها کار می کند.

این بخش از حافظه معمولاً به عنوان آدرس های ورودی / خروجی شناخته می شود.
برای اینکه هر بار با انتقال داده ها از دستگاه به حافظه، پردازنده بارگیری نشود، از DMA (دسترسی مستقیم به حافظه - دسترسی مستقیم به حافظه) استفاده می شود.

انتقال داده ها از طریق کانال های به اصطلاح انجام می شود که در مجموع هفت مورد وجود دارد:

0 - برای به روز رسانی حافظه در برخی از سیستم ها استفاده می شود
. 1 - رایگان
. 2 - به کنترلر FDD سرویس می دهد
. 3 - رایگان (در XT - کنترل کننده هارد دیسک)
. 5- رایگان
. 6 - رایگان
. 7 - رایگان

توجه داشته باشید که کانال های 0-3 8 بیتی و کانال های 5-7 16 بیتی هستند.
به همین دلیل است که SB 16 خوب قدیمی به دو کانال DMA نیاز داشت - یکی (معمولاً اولی) هشت بیتی و دومی - شانزده بیتی.

راننده AMD Radeonنرم افزار Adrenalin Edition 19.9.2 اختیاری است

یک نسخه جدید درایورهای AMD Radeon Software Adrenalin Edition 19.9.2 Optional عملکرد را در Borderlands 3 بهبود می بخشد و پشتیبانی از Radeon Image Sharpening را اضافه می کند.

انباشته به روز رسانی ویندوز 10 1903 KB4515384 (اضافه شد)

خوب است که پس از مونتاژ یا ارتقای برنامه ریزی شده، رایانه برای اولین بار راه اندازی شود و به طور پایدار و بدون اشکال کار کند. در صورت بروز مشکلات غیرمنتظره - راه اندازی مجدد و یخ زدن خود به خود، خرابی برنامه، ناکارآمدی یا "نامرئی" دستگاه ها و غیره بسیار بدتر است. اولین دلیلی که معمولاً در این مورد به ذهن متبادر می شود، تعارض وقفه است. اما آیا ماهیت این پدیده را به خوبی می شناسیم، آیا آمادگی کافی برای مبارزه با آن را داریم؟

IRQ چیست؟


وقفه ها مکانیسم اساسی سیستم برای پاسخگویی به رویدادهایی هستند که رخ می دهند. وقفه های سخت افزاری که معمولاً IRQ (Interrupt ReQuests) نامیده می شوند، سیگنال های فیزیکی هستند که کنترل کننده دستگاه از آنها برای اطلاع رسانی به پردازنده برای پردازش درخواست استفاده می کند. به طور معمول، طرح مدیریت وقفه به این صورت است:
1) پردازنده سیگنال وقفه و شماره آن را دریافت می کند.
2) با استفاده از یک جدول خاص، آدرس برنامه مسئول رسیدگی به وقفه با شماره داده شده پیدا می شود - کنترل کننده وقفه.
3) پردازنده کار فعلی را تعلیق می کند و به اجرای کنترل کننده سوئیچ می کند (در حالت کلی ، این نوعی درایور است).
4) راننده به دستگاه دسترسی پیدا می کند و علت وقفه را بررسی می کند.
5) اقدامات درخواستی راه اندازی می شوند - مقداردهی اولیه، پیکربندی دستگاه، تبادل داده و غیره.
6) درایور خارج می شود و پردازنده به وظیفه قطع شده باز می گردد.
بدیهی است که برای عملکرد صحیحمکانیسم وقفه نیاز به دو شرط دارد: اولاً سیگنال درخواست باید به پردازنده برسد و دوم اینکه راننده-هندلر باید به درستی به این سیگنال پاسخ دهد. در صورت درگیری، شرط دوم برآورده نمی شود: سیگنال وقفه می آید، اما واکنش به آن نادرست است، در نتیجه ما (در بهترین حالت) یک دستگاه غیرفعال داریم.

تعارض

می توان گفت که تضاد وضعیتی است که در آن چندین شی به طور همزمان سعی می کنند به منبعی دسترسی پیدا کنند که فقط برای یکی از آنها در نظر گرفته شده است. تداخل وقفه زمانی رخ می دهد که چندین دستگاه از یک خط وقفه برای ارسال سیگنال درخواست استفاده می کنند و مکانیزمی برای رسیدگی به درخواست های رقیب وجود ندارد. اگر درایور هنگام دریافت کنترل، با دستگاه دیگری کار کند که درخواست را ارسال کرده است، یا خرابی رخ می دهد یا یکی از دستگاه ها به سادگی کار نمی کند.
این سوال مطرح می شود: آیا چندین دستگاه می توانند از یک خط وقفه استفاده کنند یا اصولاً غیرممکن است؟ از این گذشته، اگر راننده بتواند تعیین کند که درخواست دقیقاً از چه کسی خواسته شده است، تنها به سیگنال‌های دستگاه "خود" پاسخ می‌دهد و بقیه را نادیده می‌گیرد. اما این باید از قبل به نحوی توافق شود، در غیر این صورت تعارض اجتناب ناپذیر است.
گذرگاه PCI محلی با در نظر گرفتن اشتراک گذاری وقفه طراحی شده است. هر دستگاه PCI باید در همان خط وقفه مانند سایر دستگاه های PCI به درستی کار کند. این به شرح زیر انجام می شود: وجود یک سیگنال در خط وقفه توسط جلو تعیین نمی شود، یعنی. تغییر در سطح ولتاژ، اما با توجه به وجود یک ولتاژ خاص. چندین دستگاه می توانند به طور همزمان ولتاژ را در خط تغییر دهند و در یک صف برای سرویس قرار بگیرند.
بنابراین، به اشتراک گذاری IRQ یکسان توسط چندین دستگاه PCI، بنا به تعریف، یک تضاد نیست. با این حال، گاهی اوقات مشکلاتی ایجاد می شود. اول، همه دستگاه های PCI به درستی در همان خط وقفه مانند سایر دستگاه ها کار نمی کنند. ثانیاً، گاهی اوقات درایورها دارای اشکالاتی هستند که مانع از شناسایی صحیح منبع سیگنال و تداخل با سایر درایورها می شود. ثالثاً، همه دستگاه ها روی گذرگاه PCI کار نمی کنند. برای مثال، دستگاه‌های ISA، که شامل کنترل‌کننده‌های پورت COM/LPT هستند، نمی‌توانند وقفه‌ها را با دیگران به اشتراک بگذارند. برای داشتن یک ایده روشن از نحوه جلوگیری یا حذف تعارض، باید مکانیسم مدیریت IRQ را درک کنید.

سازماندهی وقفه های سخت افزاری در رایانه شخصی


همانطور که می دانید، کامپیوترهای شخصیبا کامپیوتر IBM شروع شد. معماری آن هشت خط وقفه سخت افزاری (IRQ) را ارائه می کرد که توسط یک کنترل کننده خاص کنترل می شد. به هر یک از آنها شماره ای اختصاص داده شد که اولویت وقفه و آدرس کنترل کننده آن (به اصطلاح بردار وقفه) را تعیین می کرد. معماری جدید، IBM PC AT، هشت خط وقفه دیگر را فراهم کرد، که برای آنها از یک کنترلر دوم استفاده شد که به یکی از خطوط وقفه اولین کنترلر متصل بود. متأسفانه، این معماری آخرین مورد پس از IBM بود که توانایی مدیریت توسعه پلتفرم ایجاد شده را از دست داد، بنابراین تمام رایانه های مدرن هنوز تنها شانزده وقفه دارند که یکی از آنها توسط کنترلر دوم استفاده می شود.
کامپیوتر IBM PC AT تنها یک اتوبوس داشت که از طریق آن دستگاه ها می توانستند با پردازنده و حافظه ارتباط برقرار کنند - ISA. بیشتر خطوط وقفه به دستگاه های استاندارد ISA اختصاص داده شده است، بقیه برای آینده رزرو شده است. وقتی این آینده رسید، معلوم شد که جدید اتوبوس جهانی PCI فقط چهار وقفه رایگان دریافت کرد. بنابراین، یک مکانیسم پیچیده برای اشتراک گذاری وقفه ها (IRQ Sharing) و تعریف مجدد اعداد پویا (IRQ Steering یا Mapping) اختراع شد.
ماهیت مکانیسم کنترل وقفه برای دستگاه های PCI به شرح زیر است. به طور کلی چهار خط وقفه فیزیکی PCI وجود دارد که PIRQ0، PIRQ1، PIRQ2 و PIRQ3 نامیده می شوند. آنها به کنترل کننده وقفه متصل هستند. هر دستگاه PCI به نوبه خود دارای چهار کانکتور به نام های INT A، INT B، INT C و INT D است. می توانید خطوط را به هر ترتیبی به کانکتورها متصل کنید. به عنوان مثال، برای اولین اسلات PCI، می توانید سیم کشی زیر را انجام دهید: PIRQ0 - INT A، PIRQ1 - INT B، PIRQ2 - INT C، PIRQ3 - INT D. و برای دوم - به روشی متفاوت: PIRQ0 - INT B , PIRQ1 - INT C, PIRQ2 - INT D, PIRQ3 - INT A. معمولاً دستگاه فقط به یک خط وقفه متصل به INT A نیاز دارد. هنگام نصب در اسلات اول، دستگاه از خط PIRQ0 استفاده می کند و در اسلات دوم، خط PIRQ1 روی همان پین خواهد بود. بنابراین، دستگاه ها در اسلات های مختلف از خطوط وقفه فیزیکی متفاوتی استفاده می کنند. تضاد سخت افزاری بین آنها حذف خواهد شد.
گذرگاه AGP که در واقع یک اصلاح تخصصی PCI است، از یکی از خطوط PIRQ - معمولا PIRQ0 - نیز استفاده می کند.
برای سیستم‌های مدرن، چهار خط کافی نیست، بنابراین چیپ‌ست‌های جدید اغلب از هشت خط PIRQ استفاده می‌کنند که به روشی مشابه در ترکیب‌های مختلف به اسلات‌های PCI و دستگاه‌های تعبیه‌شده در برد متصل می‌شوند.
خطوط PIRQ به کنترل کننده وقفه متصل می شوند. به آنها، مانند خطوط دیگر، اعداد IRQ منطقی اختصاص داده می شود. اگر چندین دستگاه در یک خط فیزیکی وجود داشته باشد (و این مجاز است)، همه آنها دارای شماره IRQ یکسان خواهند بود. اگر دستگاه‌ها روی خطوط فیزیکی متفاوتی باشند، همچنان می‌توانند همان شماره‌های IRQ را دریافت کنند. درایورهای معمولی به آن‌ها اجازه می‌دهند آزادانه بدون از دست دادن عملکرد کار کنند، زیرا به هر حال گذرگاه PCI فقط توسط یک دستگاه قابل ضبط است. نکته اصلی این است که تشخیص دهید سیگنال از کدام دستگاه آمده است.
اعداد برای خطوط PIRQ به لطف مکانیزم بدنام Plug&Play به طور خودکار اختصاص داده می شوند. اما دستگاه های ISA نیز وجود دارند که از Plug&Play پشتیبانی می کنند. آنها همچنین گزینه ای برای دریافت خودکار شماره IRQ دارند. اما خط وقفه آنها به طور انحصاری متعلق به آنهاست و اگر یکی از خطوط PIRQ به همین تعداد برسد، یک تضاد غیرقابل حل ایجاد می شود.
بنابراین، متوجه شدیم که دستگاه های PCI باید عاری از مشکلات تداخل IRQ باشند. البته اگر آنها به درستی کار کنند و همیشه اینطور نیست. علاوه بر این، درایورها باید از مکانیسم اشتراک گذاری وقفه ها پشتیبانی کنند. دستگاه های ISA خطوط وقفه مشترک ندارند و بنابراین محرک درگیری هستند. در نتیجه، وظیفه حذف تضادها به توزیع صحیح اعداد (منبع مشکلات دستگاه‌های ISA و درایورهای "کج" هستند) یا به پرورش در خطوط مختلف فیزیکی (کنترل‌کننده‌های PCI "کج") کاهش می‌یابد.
بیایید ببینیم اعداد چگونه در سیستم توزیع می شوند و چگونه می توانیم بر این فرآیند تأثیر بگذاریم.

نقشه وقفه

همانطور که گفتم، اکثر شماره های IRQ قبلاً توسط دستگاه های استاندارد اشغال شده اند، یا بهتر است بگوییم، به خطوط وقفه آنها اختصاص داده شده است. به ترتیب بریم:
0 - تایمر سیستم (شماره همیشه مشغول است)؛
1 - صفحه کلید (شماره همیشه مشغول است)؛
2 - کنترل کننده وقفه دوم (همیشه مشغول است).
3 - پورت COM 2 (ممکن است غیرفعال شده و شماره منتشر شود)؛
4 - پورت COM1 (می توان آن را غیرفعال کرد و شماره را آزاد کرد).
5 - پورت LPT2 (معمولاً شماره رایگان است).
6 - کنترل کننده فلاپی دیسک (ممکن است غیرفعال باشد و تعداد آن منتشر شود).
7 - پورت LPT1 (اگر در حالت EPP یا ECP نباشد، شماره رایگان است).
8 - ساعت واقعی (همیشه مشغول)؛
9 - رایگان؛
10 - رایگان؛
11 - رایگان؛
12 - ماوس PS / 2 (ممکن است در صورت عدم وجود چنین ماوس رایگان باشد).
13 - پردازنده مشترک (همیشه مشغول)؛
14 و 15 - کنترل کننده هارد دیسک (می توان آن را غیرفعال کرد و شماره آزاد می شود).
در یک سیستم معمولی، اعداد 5، 7، 9-11 رایگان هستند، یعنی پنج از پانزده. علاوه بر این، با افزایش تعداد شماره های رایگان به 7، می توانید با خیال راحت پورت های COM2 و LPT1 را غیرفعال کنید. رایگان - به این معنی نیست که آنها مشغول نیستند، فقط امکان جابجایی رایگان بین آنها وجود دارد.
در هر سیستمی، سه دستگاه PCI استاندارد وجود دارد - ACPI، کنترلرهای USB و یک کارت ویدئو، که هر کدام یک عدد را اشغال می کنند. دستگاه پیچیده (مثلا کارت صدا) ممکن است به چندین خط نیاز داشته باشد - INT A، INT B و غیره. برای اجزای آنها، که با یکدیگر (در نهایت، خطوط فیزیکی مختلف) در تضاد نیستند، اما با دستگاه های دیگر - به راحتی.
راه های مختلفی برای اطلاع از نحوه تخصیص شماره های وقفه در حال حاضر وجود دارد. در همان ابتدای راه اندازی کامپیوتر، یک جدول پیکربندی متن ظاهر می شود. بلافاصله پس از آن لیستی از دستگاه های PCI با نشانی از شماره IRQ اختصاص داده شده به آنها می آید (نگاه کنید به اسکرین شات). راه دیگر روی ویندوز 9x کار می کند. در کنترل پنل یک نماد "سیستم" وجود دارد، در اپلت نامیده شده - تب "دستگاه ها". ما ویژگی های دستگاه "رایانه" را انتخاب می کنیم و همه دستگاه ها با IRQ خود در آنجا فهرست می شوند (نگاه کنید به تصویر).
در ویندوز 2000، ما به مدیریت وقفه دسترسی نداریم، بنابراین برای مشاهده لیست IRQها، باید از ابزار استاندارد اطلاعات (کنترل پنل/ابزارهای مدیریتی/مدیریت کامپیوتر/اطلاعات سیستم/منابع سخت افزار) استفاده کنیم.

تخصیص اعداد IRQ با استفاده از BIOS

در سیستم، اعداد IRQ دو بار بین خطوط فیزیکی تخصیص داده می شوند. اولین باری که بایوس سیستم این کار را انجام می دهد، زمانی است بوت استرپسیستم های. به هر دستگاه Plug&Play (همه PCI، ISA مدرن، دستگاه‌های یکپارچه)، یا بهتر است بگوییم خط وقفه آن، یک عدد از ده عدد ممکن را به خود اختصاص می‌دهد. اگر تعداد کافی وجود نداشته باشد، چندین خط یک مشترک دریافت می کنند. اگر این خطوط PIRQ هستند، اشکالی ندارد - اگر درایورهای معمولی و پشتیبانی از آن دارید سیستم عامل(بیشتر در مورد آن در زیر) همه چیز کار خواهد کرد. و اگر چندین دستگاه ISA یا دستگاه PCI و ISA یکسان را دریافت کنند، درگیری به سادگی اجتناب ناپذیر است، و سپس شما باید در فرآیند توزیع مداخله کنید.
اول از همه، شما باید تمام دستگاه های ISA استفاده نشده را غیرفعال کنید (در سیستم های بدون اسلات ISA، آنها نیز وجود دارند) - پورت های COM1، COM2 و درایو. همچنین می توانید حالت های EPP و ECP را غیرفعال کنید پورت LPT، سپس وقفه IRQ7 در دسترس خواهد بود.
در BIOS Setup، ما به بخش "PCI / PNP Configuration" نیاز داریم. دو راه اساسی برای تأثیرگذاری بر تخصیص شماره IRQ وجود دارد: یک شماره خاص را مسدود کنید و یک شماره خط PIRQ را مستقیماً اختصاص دهید.
روش اول برای همه BIOS ها در دسترس است: لیست موارد "IRQ x used by:" را پیدا کنید (در بایوس های جدیدتر در زیر منوی "IRQ Resources" پنهان است). آن وقفه‌هایی که باید منحصراً به دستگاه‌های ISA اختصاص داده شوند، باید روی «ISA قدیمی» تنظیم شوند. بنابراین، هنگام توزیع اعداد به دستگاه های PCI، این وقفه ها نادیده گرفته می شوند. اگر هر دستگاه ISA سرسختانه در همان وقفه با دستگاه PCI قرار گرفت، باید این کار را انجام دهید، زیرا هر دو کار نمی کنند. سپس شماره این IRQ را پیدا کرده و در تنظیمات بایوس غیرفعال می کنیم. دستگاه PCI به شماره جدید IRQ، اما دستگاه ISA باقی می ماند. درگیری حل شده است.
دوم، بیشتر راه راحتمدیریت شماره IRQ - انتساب مستقیم. در همان زیر منوی BIOS Setup، ممکن است مواردی مانند "Slot X use IRQ" وجود داشته باشد (نام های دیگر: "PIRQx use IRQ"، "PCI Slot x priority"، "INT Pin x IRQ").
با کمک آنها می توان به هر یک از چهار خط PIRQ یک شماره خاص اختصاص داد. به هر حال، در AwardBIOS 6.00 جدید می توانید ببینید که کدام دستگاه ها (از جمله دستگاه های داخلی) از یک خط خاص استفاده می کنند. فقط به سمت راست صفحه راه اندازی BIOS نگاه کنید: عکس نشان می دهد که من روی "Slot 1/5 use IRQ no." و "Display Contr." در سمت راست ظاهر شده است. یعنی اولین خط PIRQ توسط کارت گرافیک استفاده می شود. اگر اکنون به جای "Auto" عدد خاصی را قرار دهم، کارت گرافیک روی این وقفه قرار می گیرد.

تخصیص IRQ ویندوز

بار دوم اعداد وقفه توسط سیستم عامل تخصیص داده می شود. همانطور که آزمایشات من نشان داده است، ویندوز "98 شروع به تداخل در اقدامات انجام شده توسط BIOS می کند" فقط در موارد شدید. اگر یک بایوس معمولی دارید، به تکنیک های توضیح داده شده در اینجا نیازی نیست.
توجه داشته باشید که برای اینکه مکانیسم های اشتراک گذاری IRQ و تخصیص پویا به درستی کار کنند، ویندوز باید چیپست مادربرد را بشناسد و IRQ Miniport را بارگذاری کند. بیشتر نسخه تازهبرای ویندوز، چیپست های بیشتری توسط مینی پورت خودش (PCIIMP.PCI) پشتیبانی می شود. با این حال، همیشه بهتر است آن را ایمن بازی کنید و آخرین درایورهای چیپست را نصب کنید.
در ویندوز 98، سیستم توزیع IRQ با استفاده از مدیر دستگاه استاندارد مدیریت می شود. در لیست دستگاه های سیستم، باید گذرگاه PCI را پیدا کنید. یک برگه ویژه در ویژگی های آن وجود دارد (نگاه کنید به تصویر). اگر همه چیز به درستی تنظیم شده باشد، مینی پورت در آنجا ذکر می شود ("با موفقیت بارگیری شد") و کنترل باس PCI(فرمان) فعال خواهد شد. بنابراین، ویندوز 98 ابزاری برای کنترل توزیع اعداد وقفه بین خطوط فیزیکی دارد. اما از آنجایی که BIOS اغلب این کار را به خوبی انجام می دهد، این مکانیسم درگیر نیست.
اما گاهی اوقات فقط لازم است. همانطور که قبلاً گفتم، دستگاه های PCI در صورت استفاده از وقفه منطقی یکسان نباید تداخل داشته باشند. مورد دیگر دستگاه های ISA است که شامل پورت های COM و LPT نیز می شود. اگر دستگاه غیر Plug&Play باشد، بایوس ممکن است متوجه آن نشود و وقفه‌ای را که به دستگاه PCI می‌دهد می‌دهد. سپس باید وقفه را رزرو کنید. این کار در Windows Device Manager "98" انجام می شود: دستگاه "رایانه" را انتخاب کنید، ویژگی های آن را فراخوانی کنید، به تب دوم بروید. سپس همه چیز روشن است.
علاوه بر افزونگی، می توانید مستقیماً شماره وقفه را برای دستگاه تنظیم کنید. برای انجام این کار، باید برگه "منابع" را در ویژگی های آن پیدا کنید، تنظیم خودکار را غیرفعال کنید و سعی کنید شماره وقفه اختصاص داده شده را تغییر دهید.
متأسفانه، این همیشه کار نمی کند.
ویندوز 2000 یک سیستم خاص است. اگر تو داری کامپیوتر مدرن، پس احتمالاً از رابط پیکربندی ACPI پشتیبانی می کند. ویندوز 2000 در این مورد به طور کلی اقدامات BIOS را نادیده می گیرد و تمام دستگاه های PCI را در یک وقفه منطقی "آویزان" می کند. به طور کلی این کار به خوبی انجام می شود (زمانی که ISA وجود ندارد)، اما گاهی اوقات مشکلاتی وجود دارد. برای اینکه بتوانید شماره های وقفه را تغییر دهید، باید هسته HAL را تغییر دهید یا ویندوز 2000 را با ACPI غیرفعال در BIOS دوباره نصب کنید. هسته به صورت زیر جایگزین می شود: در مدیر دستگاه، "Computer" / "Computer with ACPI" را انتخاب کنید، درایور را به " تغییر دهید. کامپیوتر استاندارد"، راه اندازی مجدد کنید. اگر این کار کمکی نکرد، باید ویندوز 2000 را دوباره نصب کنید.
امیدوارم اطلاعات فوق به شما در مبارزه با اشکالات سخت افزاری کمک کند. و به یاد داشته باشید: بیشتر مشکلاتی که پیش می آید به دلیل سطح پایین سواد رایانه ای صاحب رایانه است. بنابراین ، همیشه باید برای خودآموزی تلاش کرد ، در این صورت مشکلات کمتری وجود خواهد داشت و مواردی که با این وجود بوجود می آیند غیر قابل حل به نظر نمی رسند.

میخائیل تیچکوف با نام مستعار هارد

روز خوب.

بیایید به چنین وضعیتی نگاه کنیم: پردازنده برخی از داده ها را پردازش می کند. در این لحظه، برخی از رشته های دستگاه نیز داده هایی برای پردازش داشت. چه باید کرد؟ لازم است از پردازنده بخواهید که به درخواست توجه کند و تصمیم بگیرد که این داده ها را اکنون یا بعداً پردازش کند. پس این درخواست IRQ یا وقفه است (در واقع دو نوع وقفه وجود دارد: سخت افزاری (خارجی) و نرم افزاری (داخلی) اما از آنجایی که قسمت من "سخت افزار و شبکه" نام دارد، فقط در مورد وقفه های سخت افزاری صحبت می کنم. به بیان دقیق، IRQ ها کانال های درخواست وقفه هستند که توسط انواع دستگاه ها به منظور اطلاع دادن به پردازشگر در مورد نیاز به پردازش یک درخواست خاص استفاده می شود. از نظر فیزیکی، IRQها خطوط (رساناها) به طور جداگانه گذاشته شده و مربوط به تماس با این خطوط در رابط هستند. همه اینها البته روشن است مادربرد. خطوط IRQ فقط برای ارسال درخواست های وقفه هستند.

خوب، بیایید بفهمیم این همه زباله با IRQ چگونه اتفاق می افتد. بنابراین، پس از دریافت درخواست وقفه، سنگ محتویات ثبات ها را در پشته ذخیره می کند. سپس جدول بردار وقفه را بررسی می کند، که فهرستی از آدرس های حافظه برنامه مربوط به اعداد وقفه خاصی دارد. شماره وقفه تعیین می کند که کدام برنامه راه اندازی شود. اساساً، این برنامه‌ها درایورهای مربوط به دستگاه‌هایی هستند که درخواست را ارسال کرده‌اند (و رانندگان به سختی کار خود را می‌دانند و متوجه خواهند شد که چه کاری باید انجام دهند). پس از همه اینها، رویه پردازش از پشته آنچه را که سنگ با آن کار کرده است برمی گرداند، یا به عبارت ساده تر، کنترل سیستم به برنامه ای داده می شود که قبل از درخواست وقفه کار می کرد. و به طور مداوم. خود جدول در RAM قرار دارد و از 256 عنصر 4 بایتی تشکیل شده است و از آدرس 0000:0000 شروع می شود. 1024 کیلوبایت را اشغال می کند. امیدوارم یک حقیقت ساده را یاد گرفته باشید: اگر حداقل یک بایت جدید را از هر دستگاهی باید پردازش کنید، ابتدا باید IRQ این دستگاه را پردازش کنید.

برای جلوگیری از سردرگمی، IRQ دارای یک سلسله مراتب یا به عبارت دیگر اولویت ها است. هرچه عدد وقفه کوچکتر باشد، اولویت بیشتر است و بالعکس، هر چه عدد وقفه بزرگتر باشد، اولویت کمتر است. در مجموع 16 IRQ وجود دارد. IRQ 0 بیشترین اولویت را دارد و IRQ 15 کمترین اولویت را دارد. در اینجا یک جدول سلسله مراتبی وجود دارد:

عملکرد استاندارد

تایمر سیستم

کنترلر صفحه کلید

کنترل کننده وقفه قابل برنامه ریزی

پورت سریال COM 2

پورت سریال COM 1

کنترل کننده فلاپی دیسک استاندارد

پورت موازی LPT

CMOS و ساعت

صدا یا کارت شبکهیا رایگان

رایگان

USB یا SCSI یا رایگان

پورت ماوس سازگار با PS/2

پردازنده کمکی

کنترل کننده اصلی IDE

کنترلر IDE اضافی

آیا می خواهید وقفه های خود را ببینید؟ "شروع - اجرا" را انتخاب کنید، "msinfo32" را تایپ کنید. در پنجره "اطلاعات سیستم" که ظاهر می شود، در سمت چپ، تب "منابع سخت افزار - وقفه های IRQ" را انتخاب کنید.

با وقفه، هموروئید نیز اتفاق می افتد. اگر نسلی از تعداد زیادی IRQ وجود داشته باشد، ممکن است پشته سرریز شود و سپس .... سپس به سمت دکمه می روید. اگر چنین زباله هایی اغلب اتفاق می افتد، لازم است پارامتر Stacks را در فایل Config.sys افزایش دهید. علاوه بر این، دو متفاوت است دستگاه های PCIمی توان همان وقفه را تعیین کرد. از نظر تئوری نباید این اتفاق بیفتد، اما در عمل این اتفاق می افتد. در این صورت باید خودتان یک وقفه به یکی از دستگاه های خراب اختصاص دهید. چگونه انجامش بدهیم؟ کلیک . پنجره "Properties: System" ظاهر می شود. برگه "دستگاه ها" را انتخاب کنید، دستگاهی را که IRQ آن را تصحیح می کنیم در لیست جستجو کنید و چند بار با ماوس روی آن کلیک کنید. پنجره ای از ویژگی های آن ظاهر می شود، جایی که ما برگه "Resources" را انتخاب می کنیم و تیک " را برداریم تنظیم خودکار". سپس، درست در زیر، گزینه Interrupt Request را انتخاب کنید و دوباره با ماوس دوبار کلیک کنید. پنجره ای ظاهر می شود که در آن می توانید شماره IRQ را تغییر دهید. مهم نیست و سخت است. اما ... شما باید وقفه ها را عاقلانه تعیین کنید. جدول را بررسی کنید: کدام IRQ برای چه چیزی است. خودتان ببینید کدام یک رایگان هستند. ممکن است اتفاق بیفتد که وقفه های رایگان نداشته باشید. فکر می کنی همین است، احمق؟ نه! البته، شما IRQ های جدیدی اضافه نمی کنید، اما به این فکر کنید که آیا به همه دستگاه ها نیاز دارید یا خیر. به عنوان مثال، چند بار از پورت های COM استفاده می کنید. من در سه سال گذشته از آنها استفاده نکرده ام. خوب، لعنت به آنها از سیستم. این کار را می توان از بایوس انجام داد. و در اینجا IRQهای رایگان برای شما وجود دارد. به طور خلاصه، در تصمیم گیری مشکل مشابهباید سرت را بگذاری و همه چیز برایت درست می شود. و من می خواهم فوراً به انواع متخصصان جالب هشدار دهم - نامه هایی مانند این را برای من ننویسید: "بعد از مقاله شما ، مشتریان شروع به حمل بسته های رایانه با تنظیمات پیچ خورده به فروشگاه ما کردند!". من مسئول اعمال افرادی نیستم که سر و دستانشان از همان جایی که پاهایشان رشد می کند. روزی روزگاری، من خودم چیزی در مورد آن نمی دانستم، اما آن را فهمیدم. و هیچ کس چیزی برای من توضیح نداد. جاده توسط کسی که قدم می‌زند تسلط پیدا می‌کند!

پیش می رویم. به طور کلی باید توجه داشت که کانال های IRQ به منابع سیستم اطلاق می شود. من یک تعریف کوتاه اما بسیار دقیق ارائه خواهم کرد: منابع سیستم کانال های ارتباطی، آدرس ها و سیگنال هایی هستند که توسط گره های کامپیوتر برای تبادل داده ها با استفاده از اتوبوس ها استفاده می شود. همین، ساده و واضح است. به غیر از IRQ، منابع سیستم عبارتند از: آدرس های حافظه، کانال های دسترسی مستقیم به حافظه و آدرس های پورت I/O. اما بیشتر در مورد آن در مقالات دیگر. و این همه برای امروز است. در تلاش هایتان موفق باشید.

برای مدیریت رویدادهایی که به صورت ناهمزمان با توجه به اجرای برنامه رخ می دهند، بهترین گزینه است مکانیسم وقفه.

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

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

برنامه ها خودشان می توانند وقفه ها را با یک شماره مشخص تماس بگیرند. برای این کار از دستور INT استفاده می کنند. اینها به اصطلاح وقفه های نرم افزاری هستند. وقفه‌های نرم‌افزار ناهمزمان نیستند، زیرا از برنامه فراخوانی می‌شوند (و او می‌داند چه زمانی یک وقفه را فراخوانی می‌کند!).

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

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

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

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

نوشتن روال های وقفه خود و جایگزینی کنترل کننده های استاندارد DOS و BIOS یک کار سخت و پیچیده است. لازم است تمام ظرافت های عملکرد تجهیزات و تعامل نرم افزار و سخت افزار در نظر گرفته شود. هنگام اشکال زدایی، سیستم عامل می تواند با عواقب غیرقابل پیش بینی از بین برود، بنابراین باید مراقب کارهای برنامه خود باشید.

برای مرتبط کردن آدرس یک کنترل کننده وقفه با یک شماره وقفه، از استفاده کنید جدول برداری وقفه، که اولین کیلوبایت RAM را اشغال می کند - آدرس ها از 0000:0000 تا 0000:03FF. جدول از 256 عنصر تشکیل شده است - آدرس های FAR کنترل کننده های وقفه. این عناصر نامیده می شوند بردارهای وقفه. کلمه اول عنصر جدول حاوی offset و کلمه دوم شامل آدرس بخش کنترل کننده وقفه است.

وقفه 0 0000:0000، وقفه 1 0000:0004 و غیره است.

جدول تا حدی توسط BIOS پس از آزمایش سخت افزار و قبل از شروع بارگذاری سیستم عامل، تا حدی هنگام بارگیری DOS، مقداردهی اولیه می شود. DOS می تواند برخی از وقفه های BIOS را لغو کند.

محتویات جدول برداری وقفه را در نظر بگیرید. در اینجا هدف برخی از مهمترین بردارها آورده شده است:

شرح

خطای تقسیم پس از اجرای دستورات DIV یا IDIV اگر سرریزی در نتیجه تقسیم رخ دهد (مثلاً هنگام تقسیم بر 0) به طور خودکار فراخوانی می شود. DOS معمولاً هنگام مدیریت این وقفه پیام خطا را نشان می دهد و اجرای برنامه را متوقف می کند. برای پردازنده 8086، آدرس برگشتی به دستورالعملی که از دستورالعمل تقسیم می‌آید و در پردازنده 80286 به اولین بایت دستورالعملی که باعث وقفه شده است اشاره می‌کند.

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

سخت افزار NMI این وقفه می تواند در ماشین های مختلف به طور متفاوتی استفاده شود. معمولاً توسط یک خطای برابری در RAM و یک درخواست وقفه از جانب پردازنده ایجاد می شود.

ردیابی وقفه. این وقفه هنگام اجرای یک دستورالعمل ماشین تک بایتی با کد CCH ایجاد می شود و معمولاً توسط دیباگرها برای تعیین نقطه شکست استفاده می شود.

سرریز. در صورت تنظیم پرچم OF توسط دستورالعمل ماشین INTO ایجاد می شود. اگر پرچم تنظیم نشده باشد، دستور INTO به صورت NOP اجرا می شود. این وقفه برای رسیدگی به خطاها هنگام انجام عملیات حسابی استفاده می شود.

یک کپی از صفحه نمایش چاپ کنید. با فشار دادن کلید PrtScr روی صفحه کلید ایجاد می شود. معمولاً برای چاپ تصویر روی صفحه استفاده می شود. برای پردازنده، 80286 زمانی تولید می شود که دستور ماشین BOUND اجرا شود، اگر مقدار مورد بررسی خارج از محدوده مشخص شده باشد.

اپکد تعریف نشده یا طول دستورالعمل بیشتر از 10 بایت (برای پردازنده 80286).

مورد ویژه بدون کمک پردازشگر ریاضی (پردازنده 80286).

IRQ0 - وقفه تایمر فاصله، 18.2 بار در ثانیه رخ می دهد.

IRQ1 - وقفه صفحه کلید. هنگامی که یک کلید فشار داده می شود و زمانی که یک کلید آزاد می شود تولید می شود. برای خواندن داده ها از صفحه کلید استفاده می شود.

IRQ2 - برای آبشار وقفه های سخت افزاری در ماشین های کلاس AT استفاده می شود.

IRQ3 - قطع شدن پورت ناهمزمان COM2.

IRQ4 - قطع شدن پورت ناهمزمان COM1.

IRQ5 - وقفه کنترل کننده هارد دیسک برای XT.

IRQ6 - پس از اتمام عملیات، یک وقفه توسط کنترل کننده فلاپی دیسک ایجاد می شود.

IRQ7 - وقفه چاپگر. هنگامی که چاپگر آماده انجام عملیات دیگری است، تولید می شود. بسیاری از آداپتورهای چاپگر از این وقفه استفاده نمی کنند.

سرویس آداپتور ویدئو.

پیکربندی دستگاه ها را در سیستم تعیین کنید.

مقدار RAM سیستم را تعیین کنید.

تعمیر و نگهداری سیستم دیسک

I/O سریال.

خدمات گسترده برای کامپیوترهای AT.

تعمیر و نگهداری صفحه کلید

تعمیر و نگهداری چاپگر

در صورت وجود، BASIC را در رام اجرا کنید.

سرویس ساعت.

کنترل کننده وقفه Ctrl-Break.

وقفه 18.2 بار در ثانیه رخ می دهد که به صورت برنامه ریزی شده توسط کنترل کننده وقفه تایمر فراخوانی می شود.

آدرس جدول ویدیویی برای کنترلر آداپتور ویدیویی 6845.

اشاره گر به جدول پارامتر فلاپی.

اشاره گر به جدول گرافیکی برای کاراکترهای ASCII 128-255.

مورد استفاده توسط DOS یا رزرو شده برای DOS.

وقفه ها برای کاربر محفوظ است.

استفاده نشده.

IRQ8 - وقفه ساعت واقعی.

IRQ9 - وقفه از کنترلر EGA.

IRQ10 - رزرو شده است.

IRQ11 - رزرو شده است.

IRQ12 - رزرو شده است.

IRQ13 - وقفه پردازنده کمکی ریاضی.

IRQ14 - وقفه از کنترل کننده دیسک سخت.

IRQ15 - رزرو شده است.

استفاده نشده.

برای BASIC رزرو شده است.

توسط مترجم BASIC استفاده می شود.

احتمالاً رایج‌ترین تداخل وقفه (IRQ) مربوط به پورت سریال COM2 یکپارچه است که در مادربردهای مدرن و مودم داخلی یافت می‌شود (به معنای یک مودم کامپیوتر داخلی کامل، نه یک مودم نرم‌افزاری که WinModem نیز نامیده می‌شود). واقعیت این است که یک مودم داخلی تمام عیار قبلاً از برخی پورت ها پشتیبانی می کند. به طور پیش فرض، این پورت به COM2 اختصاص داده می شود و سیستم معمولاً دارای پورت سریال دوم نیز فعال است. بنابراین، سیستم با استفاده از منابع یکسان (وقفه‌ها و آدرس‌های پورت I/O) به دو پورت یکسان ختم می‌شود.

حل این مشکل بسیار ساده است: باید وارد BIOS Setup سیستم شوید و پورت COM2 داخلی را غیرفعال کنید. علاوه بر این، ممکن است COM1 را غیرفعال کنید، که به ندرت استفاده می شود. غیرفعال کردن پورت های استفاده نشده COMx یکی از این موارد است راه های بهترانتشار وقفه ها (IRQ) برای دستگاه های دیگر.

یکی دیگر از درگیری های رایج نیز مربوط به پورت های سریال. در جدول تخصیص وقفه استاندارد، ممکن است متوجه شده باشید که IRQ3 به COM2 و IRQ4 به COM1 اختصاص داده شده است. مشکل زمانی به وجود می آید که پورت های اضافی COM3 و/یا COM4 به سیستم اضافه شوند و وقفه های رایگان به صورت دستی به آنها اختصاص داده نشود (آنها به طور پیش فرض از همان IRQ3 و IRQ4 استفاده می کنند).

علاوه بر این پیچیدگی این است که برخی از کارت‌های پورت اجازه انتخاب وقفه‌های دیگری به جز IRQ3 و IRQ4 را نمی‌دهند. در نتیجه، اختصاص دادن IRQ3 به COM4 و IRQ4 به COM3 با COM1 و COM2 که از این وقفه ها نیز استفاده می کنند در تضاد است: دو پورت نمی توانند همزمان از یک کانال کنترل وقفه استفاده کنند. تحت DOS، این مجاز بود زیرا فقط یک کار می توانست در یک زمان اجرا شود، اما در ویندوز و OS/2، این کار کاملا غیرممکن است. برای استفاده از بیش از دو پورت COM موازی در کامپیوتر، یک کارت چند پورتی مورد نیاز است که علاوه بر وقفه شماره 3 و 4، امکان استفاده از وقفه های اضافی را نیز به شما می دهد. اشتراک گذاریوقفه در اصل برای دستگاه هایی که در شرایط عادی به طور همزمان (یا دائما) کار نمی کنند مجاز است. پورت ها در این دسته دستگاه ها قرار نمی گیرند. می توانید از وقفه اسکنر و مودم با هم استفاده کنید، اما در این صورت اگر همزمان از آنها استفاده شود تضاد ایجاد می شود. خوشبختانه، اکثر دستگاه‌هایی که قبلاً از پورت‌ها استفاده می‌کردند (مانند موس، چاپگر لیبل و مودم‌های خارجی) اکنون به درگاه‌های USB متصل می‌شوند، بنابراین کاربران مدرن رایانه نباید نگران پشتیبانی از چندین پورت باشند.

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

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

لازم به ذکر است که ساده ترین راه برای بررسی تنظیمات وقفه در دیسپاچر است دستگاه های ویندوزی. ویندوز 95b دارای ابزار HWDIAG و ویندوز 98 به بعد دارای کنسول اطلاعات سیستم است. این ابزارها به شما این امکان را می دهند که گزارش دقیقی در مورد استفاده از منابع در سیستم و همچنین دریافت کنید درایورهای نصب شدهدستگاه ها و سوابق رجیستری ویندوزبرای هر دستگاه AT سیستم های ویندوزاطلاعات سیستم XP و Vista توسط برنامه Msinfo32 ارائه می شود.

به منظور ارائه حداکثر تعداد ممکن وقفه های مشترک در سیستم مدرنبدون کانکتور ISA، در صورت استفاده از بایوس سیستم، موارد زیر را انجام دهید:

  1. تمام پورت های استفاده نشده در بایوس سیستم را غیرفعال کنید. به عنوان مثال، اگر به جای استفاده از پورت های سریال و موازی، پورت های USBآنها را خاموش کنید در نتیجه می توان تا سه وقفه آزاد کرد.
  2. IRQ منتشر شده در مرحله 1 را در لیست وقفه های موجود برای دستگاه های PCI/PnP مشخص کنید. بسته به نسخه BIOS، گزینه های مربوطه در بخش PnP/PCI Resource Exclusion یا PnP/PCI Configuration موجود است.
  3. گزینه Reset Configuration Data را فعال کنید تا جداول مسیریابی IRQ در حافظه CMOS پاک شود.
  4. تغییرات خود را ذخیره کرده و از برنامه تنظیم بایوس خارج شوید.