3 ms·
The fuck is an IRQ?
by koalacola 3y ago
The fuck is an IRQ?
- belfalas 3y agoJust wait until you learn about AUTOEXEC.BAT ;)
- pavlov 3y agoIt’s part of the holy trinity of MS-DOS hardware configuration settings: port, IRQ, DMA channel. When you installed a card like Sound Blaster so your PC games could actually play some passable music and sound effects, you’d configure these settings with physical jumpers on the card. And then you have to pass those configuration settings to the game somehow so it can send data to the device. You could leave the card to its default settings, but then it might collide with another device like a printer or whatever.
- hn8305823 3y agoIt was an essential part of 90's PC configuration hell. IRQ is short for "Interrupt Request" and each peripheral or device that needs to interrupt the CPU for time-sensitive processing needed to be assigned one. There were only 16 of them with several hard coded for certain things like RTC. Since each serial port, parallel port, floppy controller, HDD controller, video card, sound card, etc needed an IRQ assignment it was not unusual to run out of free ones and resort to overloading one or more. This was less than ideal as now multiple drivers are waking up unnecessarily for the same IRQ. Originally these were set with physical jumpers on the motherboard and expansion cards. Most things switched to being configured with software/BIOS when the industry moved to PCI bus.
- mananaysiempre 3y agoLack of standards for self-describing hardware and negotiating bus resources meant that when setting up old-school PCs you had[1] to manually point drivers to their devices’ I/O ports and interrupt lines (interrupt requests, or IRQs) [2] and occasionally resolve conflicts by reconfiguring jumpers on the devices themselves (the most familliar such jumper is probably the master/slave one on IDE drives, obsoleted by those twists in the ribbon cables). All of this still needs to be solved in a modern system, but for the most part the hardware, firmware, and OS will sort things out by themselves—even if some of the details of that process are liable to give you nightmares[3,4]. The iMac, for its part, solved this by not having any expandability at all (ISA or PCI), so the settings could be burned into the firmware. [1] See e.g. https://tldp.org/HOWTO/Plug-and-Play-HOWTO.html https://tldp.org/HOWTO/Plug-and-Play-HOWTO.html [2] I don’t think this was ever a problem for address ranges for memory-mapped I/O, UMA issues excepted,—perhaps because MMIO didn’t really become popular until PCI won and ACPI appeared? [3] https://wiki.osdev.org/I/O_APIC#IO_APIC_Inputs https://wiki.osdev.org/I/O_APIC#IO_APIC_Inputs [4] https://forum.osdev.org/viewtopic.php?f=1&t=29558 https://forum.osdev.org/viewtopic.php?f=1&t=29558