ขัดจังหวะข้อขัดแย้งในโปรแกรม can ขัดจังหวะความขัดแย้ง ระบบขัดจังหวะ วิธีจัดการกับการอ่านที่สูง

เริ่มจากแนวคิดเรื่อง "การหยุดชะงัก" กันก่อน
การขัดจังหวะคือเหตุการณ์ที่บอกระบบว่ามีบางอย่างเกิดขึ้นและต้องมีการแทรกแซง
เหตุการณ์ดังกล่าวอาจเป็น: การกดปุ่มบนแป้นพิมพ์ สัญญาณจากโมเด็ม ข้อผิดพลาดทุกประเภท (เช่น การหารด้วยศูนย์) และอื่นๆ

ดังที่คุณคงเคยได้ยินมาแล้วว่ามีการขัดจังหวะด้านฮาร์ดแวร์และซอฟต์แวร์
ฮาร์ดแวร์ (IRQ - คำขอขัดจังหวะ) - คำขอที่เริ่มต้นโดยฮาร์ดแวร์และซอฟต์แวร์ - โดยซอฟต์แวร์ และกลไกในการเรียกฮาร์ดแวร์หรือซอฟต์แวร์ขัดจังหวะจะแตกต่างกันเล็กน้อย แม้ว่าโดยพื้นฐานแล้วจะเหมือนกันสำหรับโปรเซสเซอร์ก็ตาม

ด้วยการขัดจังหวะซอฟต์แวร์ (INT - ขัดจังหวะ) มันง่าย - โปรแกรมเรียกคำขอขัดจังหวะ (ในภาษาแอสเซมบลีคือ 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 72 ชม.) - ฟรี
- 11 (INT 73 ชม.) - ฟรี
- 12 (INT 74h) - ตัวควบคุมเมาส์ PS/2
- 13 (INT 75h) - ตัวประมวลผลร่วมทางคณิตศาสตร์
- 14 (INT 76h) - ช่องแรก ตัวควบคุม IDEฮาร์ดดิส
- 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 จะถูกจัดระเบียบโดยอุปกรณ์จะเก็บข้อมูลสำหรับการประมวลผลและไดรเวอร์จะทำงานร่วมกับอุปกรณ์ดังกล่าว

พื้นที่หน่วยความจำนี้มักเรียกว่าที่อยู่ I/O
เพื่อไม่ให้โหลดโปรเซสเซอร์ทุกครั้งที่ถ่ายโอนข้อมูลจากอุปกรณ์ไปยังหน่วยความจำ จะใช้ DMA (Direct Memory Access)

การส่งข้อมูลจะดำเนินการผ่านช่องทางที่เรียกว่าซึ่งมีทั้งหมดเจ็ดช่องทาง:

0 - ใช้สำหรับการฟื้นฟูหน่วยความจำในบางระบบ
- 1 - ฟรี
- 2 - ทำหน้าที่ควบคุม FDD
- 3 - ฟรี (บน XT - ตัวควบคุมฮาร์ดไดรฟ์)
- 5 - ฟรี
- 6 - ฟรี
- 7 - ฟรี

โปรดทราบว่าช่อง 0-3 เป็นแปดบิต และช่อง 5-7 เป็นสิบหกบิต
นั่นคือเหตุผลที่ SB 16 แบบเก่าที่ดีต้องใช้ช่อง DMA สองช่อง - หนึ่งช่อง (โดยปกติจะเป็นช่องแรก) แปดบิต และช่องที่สองสิบหกบิต

คนขับ เอเอ็มดี เรดออนซอฟต์แวร์ Adrenalin Edition 19.9.2 เป็นตัวเลือก

เวอร์ชั่นใหม่ ไดรเวอร์เอเอ็มดี Radeon Software Adrenalin Edition 19.9.2 ตัวเลือกเสริม ปรับปรุงประสิทธิภาพใน Borderlands 3 และเพิ่มการรองรับเทคโนโลยี Radeon Image Sharpening

สะสม อัพเดตวินโดวส์ 10 1903 KB4515384 (เพิ่ม)

เป็นเรื่องดีเมื่อหลังจากการประกอบหรือการอัพเกรดตามแผน คอมพิวเตอร์เริ่มทำงานในครั้งแรกและทำงานได้เสถียรและไม่มีข้อผิดพลาด จะแย่กว่านั้นมากหากเกิดปัญหาที่ไม่คาดคิด - การรีบูตและค้างโดยธรรมชาติ, โปรแกรมขัดข้อง, ไม่สามารถใช้งานได้หรือ "มองไม่เห็น" ของอุปกรณ์ ฯลฯ เหตุผลแรกที่มักจะนึกถึงในกรณีนี้คือความขัดแย้งขัดจังหวะ เรารู้ธรรมชาติของปรากฏการณ์นี้เป็นอย่างดี และเราพร้อมเพียงพอที่จะต่อสู้กับมันหรือไม่?

IRQ คืออะไร


การขัดจังหวะเป็นกลไกพื้นฐานสำหรับระบบในการตอบสนองต่อเหตุการณ์ที่เกิดขึ้น การขัดจังหวะด้วยฮาร์ดแวร์ ซึ่งมักเรียกว่า IRQ (Interrupt ReQuest) เป็นสัญญาณทางกายภาพที่ตัวควบคุมอุปกรณ์แจ้งให้โปรเซสเซอร์ทราบถึงความจำเป็นในการประมวลผลคำขอ ตามอัตภาพ วงจรการจัดการการขัดจังหวะจะมีลักษณะดังนี้:
1) โปรเซสเซอร์ได้รับสัญญาณขัดจังหวะและหมายเลขของมัน
2) เมื่อใช้ตารางพิเศษจะพบที่อยู่ของโปรแกรมที่รับผิดชอบในการประมวลผลการขัดจังหวะด้วยหมายเลขที่กำหนด - ตัวจัดการการขัดจังหวะ
3) โปรเซสเซอร์ระงับงานปัจจุบันและสลับไปที่การดำเนินการตัวจัดการ (ในกรณีทั่วไปนี่คือไดรเวอร์บางตัว)
4) ไดรเวอร์เข้าถึงอุปกรณ์และตรวจสอบสาเหตุของการขัดจังหวะ
5) เปิดตัวการดำเนินการที่ร้องขอ - การเริ่มต้น, การกำหนดค่าอุปกรณ์, การแลกเปลี่ยนข้อมูล ฯลฯ
6) ไดรเวอร์ออกและตัวประมวลผลกลับสู่งานที่ถูกขัดจังหวะ
เป็นที่ชัดเจนว่าสำหรับ การดำเนินการที่ถูกต้องกลไกการขัดจังหวะต้องเป็นไปตามเงื่อนไขสองประการ: ประการแรก สัญญาณคำขอจะต้องไปถึงโปรเซสเซอร์ และประการที่สอง ผู้ควบคุมไดรเวอร์จะต้องตอบสนองต่อสัญญาณนี้อย่างถูกต้อง ในกรณีที่มีข้อขัดแย้ง ไม่เป็นไปตามเงื่อนไขที่สอง: สัญญาณขัดจังหวะมาถึง แต่การตอบสนองต่อสัญญาณกลับกลายเป็นว่าไม่ถูกต้อง ซึ่งเป็นผลมาจากอุปกรณ์ที่เราใช้ไม่ได้ (อย่างดีที่สุด)

ขัดแย้ง

เราสามารถพูดได้ว่าความขัดแย้งคือสถานการณ์ที่วัตถุหลายชิ้นพยายามเข้าถึงทรัพยากรที่มีไว้สำหรับวัตถุเพียงอันเดียวพร้อมกัน การโต้แย้งการขัดจังหวะเกิดขึ้นเมื่ออุปกรณ์หลายเครื่องใช้สายขัดจังหวะเดียวกันเพื่อส่งสัญญาณคำขอ และไม่มีกลไกในการจัดการคำขอที่แข่งขันกัน หากไดรเวอร์เมื่อได้รับการควบคุมไม่ทำงานกับอุปกรณ์ที่ส่งคำขอแสดงว่าเกิดความล้มเหลวหรืออุปกรณ์ตัวใดตัวหนึ่งไม่ทำงาน
คำถามเกิดขึ้น: อุปกรณ์หลายเครื่องสามารถใช้สายขัดจังหวะเดียวกันได้หรือไม่ หรือโดยพื้นฐานแล้วมันเป็นไปไม่ได้? ท้ายที่สุดแล้ว หากคนขับสามารถระบุได้ว่าคำขอนั้นมาจากใครกันแน่ มันก็จะตอบสนองต่อสัญญาณจากอุปกรณ์ "ของมัน" เท่านั้น โดยไม่สนใจสัญญาณอื่นๆ ทั้งหมด แต่จะต้องตกลงกันล่วงหน้าไม่ทางใดก็ทางหนึ่ง ไม่เช่นนั้นความขัดแย้งจะหลีกเลี่ยงไม่ได้
บัส PCI ภายในเครื่องได้รับการออกแบบเพื่อแบ่งปันการขัดจังหวะ อุปกรณ์ PCI แต่ละตัวจะต้องทำงานอย่างถูกต้องบนสายขัดจังหวะเดียวกันกับอุปกรณ์ PCI อื่นๆ ทำได้ดังนี้: การมีอยู่ของสัญญาณบนเส้นขัดจังหวะไม่ได้ถูกกำหนดโดยขอบนั่นคือ การเปลี่ยนแปลงระดับแรงดันไฟฟ้า แต่จากความเป็นจริงของการมีอยู่ของแรงดันไฟฟ้าที่แน่นอน อุปกรณ์หลายตัวสามารถเปลี่ยนแรงดันไฟฟ้าในสายได้พร้อมกันเพื่อเข้าคิวเข้ารับบริการ
ดังนั้นการแบ่งปัน IRQ เดียวกันกับอุปกรณ์ PCI หลายตัวจึงไม่ขัดแย้งกันตามคำจำกัดความ อย่างไรก็ตามบางครั้งปัญหายังคงเกิดขึ้น ประการแรก อุปกรณ์ PCI บางตัวอาจไม่ทำงานอย่างถูกต้องบนอินเทอร์รัปต์ไลน์เดียวกันกับอุปกรณ์อื่นๆ

ประการที่สอง บางครั้งไดรเวอร์มีข้อบกพร่องที่ทำให้ไม่สามารถตรวจจับแหล่งสัญญาณได้อย่างถูกต้อง ซึ่งรบกวนไดรเวอร์อื่นๆ ประการที่สาม ไม่ใช่ว่าอุปกรณ์ทั้งหมดจะทำงานบนบัส PCI ตัวอย่างเช่น อุปกรณ์ ISA ซึ่งรวมถึง ตัวอย่างเช่น ตัวควบคุมพอร์ต COM/LPT ไม่สามารถแบ่งปันการขัดจังหวะกับผู้อื่นได้ เพื่อให้เข้าใจอย่างชัดเจนว่าสามารถหลีกเลี่ยงหรือแก้ไขข้อขัดแย้งได้อย่างไร คุณต้องเข้าใจกลไกการควบคุม IRQ


การจัดระเบียบฮาร์ดแวร์ขัดจังหวะในคอมพิวเตอร์ส่วนบุคคล ดังที่คุณทราบคอมพิวเตอร์ส่วนบุคคล
เริ่มต้นด้วย IBM PC สถาปัตยกรรมประกอบด้วยสายขัดจังหวะฮาร์ดแวร์ (IRQ) แปดสายซึ่งควบคุมโดยตัวควบคุมพิเศษ แต่ละคนได้รับมอบหมายหมายเลขซึ่งกำหนดลำดับความสำคัญของการขัดจังหวะและที่อยู่ของตัวจัดการ (ที่เรียกว่าเวกเตอร์ขัดจังหวะ) สถาปัตยกรรมใหม่ IBM PC AT จัดให้มีบรรทัดขัดจังหวะเพิ่มอีกแปดบรรทัด ซึ่งใช้ตัวควบคุมตัวที่สอง เชื่อมต่อกับหนึ่งในบรรทัดขัดจังหวะของตัวควบคุมตัวแรก น่าเสียดายที่สถาปัตยกรรมนี้กลายเป็นสถาปัตยกรรมสุดท้ายหลังจากที่ IBM สูญเสียความสามารถในการควบคุมการพัฒนาแพลตฟอร์มที่ตนสร้างขึ้น ดังนั้นคอมพิวเตอร์สมัยใหม่ทุกเครื่องยังคงมีอินเทอร์รัปต์เพียงสิบหกครั้ง ซึ่งหนึ่งในนั้นถูกใช้โดยคอนโทรลเลอร์ตัวที่สอง 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
ดังนั้นเราจึงพบว่าอุปกรณ์ PCI ควรปราศจากปัญหาข้อขัดแย้ง IRQ แน่นอนว่าหากมันทำงานได้อย่างถูกต้อง แต่ก็ไม่ได้เป็นเช่นนั้นเสมอไป นอกจากนี้ ไดรเวอร์จะต้องรองรับกลไกการแบ่งปันการขัดจังหวะ อุปกรณ์ ISA ไม่สามารถแชร์สายขัดจังหวะได้ และทำให้เกิดข้อขัดแย้งกัน
ดังนั้นงานในการขจัดข้อขัดแย้งจึงขึ้นอยู่กับการกระจายตัวเลขที่ถูกต้อง (สาเหตุของปัญหาคืออุปกรณ์ ISA และไดรเวอร์ "คดเคี้ยว") หรือการกระจายไปตามสายทางกายภาพที่แตกต่างกัน ("ตัวควบคุม PCI คดเคี้ยว")

มาดูกันว่าตัวเลขมีการกระจายในระบบอย่างไร และเราจะมีอิทธิพลต่อกระบวนการนี้ได้อย่างไร

แผนที่ขัดจังหวะ
ดังที่ฉันได้กล่าวไปแล้ว หมายเลข IRQ ส่วนใหญ่ถูกครอบครองโดยอุปกรณ์มาตรฐานแล้ว หรือถูกกำหนดให้กับสายขัดจังหวะ มาดูกันตามลำดับ:
0 - ตัวจับเวลาระบบ (หมายเลขไม่ว่างเสมอ)
1 - แป้นพิมพ์ (หมายเลขไม่ว่างตลอดเวลา)
3 - ตัวควบคุมขัดจังหวะ 2 วินาที (ยุ่งตลอดเวลา);พอร์ตคอม
2 (สามารถปิดการใช้งานและหมายเลขที่ออก);
4 - พอร์ต COM1 (สามารถปิดการใช้งานและหมายเลขที่ปล่อยออกมา);
5 - พอร์ต LPT2 (โดยปกติแล้วหมายเลขจะว่าง)
6 - ตัวควบคุมฟล็อปปี้ดิสก์ (สามารถปิดการใช้งานและหมายเลขที่ปล่อยออกมา)
7 - พอร์ต LPT1 (หากไม่ได้อยู่ในโหมด EPP หรือ ECP แสดงว่าหมายเลขนั้นว่าง)
8 - นาฬิกาเรียลไทม์ (ยุ่งตลอดเวลา);
9 - ฟรี;
10 - ฟรี;
11 - ฟรี;
12 - เมาส์ PS/2 (สามารถว่างได้หากไม่มีเมาส์ดังกล่าว)
13 - โปรเซสเซอร์ร่วม (ยุ่งตลอดเวลา);
14 และ 15 - ตัวควบคุมฮาร์ดไดรฟ์ (สามารถปิดใช้งานได้และสามารถปล่อยหมายเลขได้)
ในระบบทั่วไปจะมีหมายเลข 5, 7, 9-11 นั่นคือห้าในสิบห้า นอกจากนี้คุณสามารถปิดการใช้งานพอร์ต COM2 และ LPT1 ได้อย่างปลอดภัยโดยเพิ่มจำนวนหมายเลขอิสระเป็นเจ็ด ฟรีไม่ได้หมายความว่าไม่ยุ่ง แต่เป็นเพียงการสับเปลี่ยนฟรีระหว่างกันเท่านั้น ระบบใด ๆ มีอุปกรณ์ PCI มาตรฐานสามตัว ได้แก่ ACPI, คอนโทรลเลอร์ USB และการ์ดแสดงผลซึ่งแต่ละอุปกรณ์จะใช้หมายเลขเดียว อุปกรณ์ที่ซับซ้อน (เช่นการ์ดเสียง
มีหลายวิธีในการค้นหาว่าขณะนี้มีการกระจายหมายเลขขัดจังหวะอย่างไร เมื่อเริ่มต้นการบูตคอมพิวเตอร์ ตารางข้อความการกำหนดค่าจะปรากฏขึ้น ทันทีหลังจากนั้นจะมีรายการอุปกรณ์ PCI ที่ระบุหมายเลข IRQ ที่กำหนดให้กับอุปกรณ์เหล่านั้น (ดูภาพหน้าจอ) อีกวิธีหนึ่งใช้ได้กับ Windows 9x ในแผงควบคุมจะมีไอคอน "ระบบ" ในแอปเพล็ตที่ถูกเรียกขึ้นมาจะมีแท็บ "อุปกรณ์" เราเลือกคุณสมบัติของอุปกรณ์ "คอมพิวเตอร์" และอุปกรณ์ทั้งหมดจะแสดงอยู่ที่นั่นโดยระบุ IRQ (ดูภาพหน้าจอ)
ใน Windows 2000 เราไม่สามารถเข้าถึงการจัดการการขัดจังหวะ ดังนั้นเพื่อดูรายการ IRQ เราจำเป็นต้องใช้ยูทิลิตี้ข้อมูลมาตรฐาน (แผงควบคุม/เครื่องมือในการดูแลระบบ/การจัดการคอมพิวเตอร์/ข้อมูลระบบ/ทรัพยากรฮาร์ดแวร์)

การกระจายหมายเลข IRQ โดยใช้ BIOS

ในระบบ หมายเลข IRQ จะถูกกระจายระหว่างบรรทัดทางกายภาพสองครั้ง ครั้งแรกที่ทำโดยระบบ BIOS คือ บูตสแตรประบบ อุปกรณ์ Plug&Play แต่ละตัว (PCI ทั้งหมด, ISA สมัยใหม่, อุปกรณ์แบบรวม) หรือที่เจาะจงกว่านั้นคือสายขัดจังหวะ ถูกกำหนดหมายเลขหนึ่งจากสิบที่เป็นไปได้ หากมีตัวเลขไม่เพียงพอ หลายบรรทัดจะได้รับหนึ่งบรรทัดทั่วไป หากสิ่งเหล่านี้เป็นสาย PIRQ ก็ไม่เป็นไร - หากคุณมีไดรเวอร์ปกติและการสนับสนุนจากภายนอก ระบบปฏิบัติการ(ดูข้อมูลเพิ่มเติมด้านล่าง) ทุกอย่างจะทำงาน และหากอุปกรณ์ ISA หรืออุปกรณ์ PCI และ ISA หลายเครื่องได้รับหมายเลขเดียว ความขัดแย้งก็เป็นสิ่งที่หลีกเลี่ยงไม่ได้ จากนั้นคุณต้องเข้าไปแทรกแซงกระบวนการแจกจ่าย
ก่อนอื่น คุณต้องปิดการใช้งานอุปกรณ์ ISA ที่ไม่ได้ใช้ทั้งหมด (อุปกรณ์เหล่านั้นจะมีอยู่ในระบบที่ไม่มีช่อง ISA ด้วย) - พอร์ตคอม 1, COM2 และดิสก์ไดรฟ์ คุณยังสามารถปิดใช้งานโหมด EPP และ ECP ได้อีกด้วย พอร์ตแอลพีทีจากนั้นอินเทอร์รัปต์ IRQ7 จะพร้อมใช้งาน
ในการตั้งค่า BIOS เราจำเป็นต้องมีส่วน "การกำหนดค่า PCI/PNP" มีสองวิธีพื้นฐานในการมีอิทธิพลต่อการกำหนดหมายเลข IRQ: บล็อกหมายเลขเฉพาะและกำหนดหมายเลขบรรทัด PIRQ โดยตรง
วิธีแรกใช้ได้กับ BIOS ทั้งหมด: ค้นหารายการ "IRQ x ใช้โดย:" (ใน BIOS ใหม่จะซ่อนอยู่ในเมนูย่อย "ทรัพยากร IRQ") การขัดจังหวะที่ควรกำหนดให้กับอุปกรณ์ ISA โดยเฉพาะควรตั้งค่าเป็น "Legacy ISA" ดังนั้นเมื่อกระจายหมายเลขไปยังอุปกรณ์ PCI การขัดจังหวะเหล่านี้จะถูกข้ามไป สิ่งนี้ควรทำหากอุปกรณ์ ISA ใด ๆ แชร์การขัดจังหวะแบบเดียวกันกับอุปกรณ์ PCI อย่างดื้อรั้น ซึ่งเป็นสาเหตุที่ทำให้ทั้งสองไม่ทำงาน จากนั้นเราจะค้นหาหมายเลขของ IRQ นี้และบล็อกไว้ในการตั้งค่า BIOS อุปกรณ์ PCI ไปที่ หมายเลขใหม่ IRQ แต่อุปกรณ์ ISA ยังคงอยู่ ความขัดแย้งได้รับการแก้ไขแล้ว
ประการที่สองเพิ่มเติม วิธีที่สะดวกการจัดการหมายเลข IRQ - การมอบหมายโดยตรง ในเมนูย่อยการตั้งค่า BIOS เดียวกันอาจมีรายการเช่น "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 แรก หากตอนนี้ฉันใส่หมายเลขใด ๆ แทน "อัตโนมัติ" การ์ดแสดงผลจะเปลี่ยนเป็นการขัดจังหวะนี้

การกระจายหมายเลข IRQ โดยใช้ Windows

ครั้งที่สอง หมายเลขขัดจังหวะจะถูกจัดสรรโดยระบบปฏิบัติการ ตามที่การทดลองของฉันแสดงให้เห็น Windows 98 เริ่มรบกวนการทำงานของ BIOS เฉพาะในกรณีที่รุนแรงเท่านั้น หากคุณมี BIOS ปกติ เทคนิคที่อธิบายไว้ที่นี่ก็ไม่จำเป็น
ควรสังเกตว่าเพื่อให้กลไกการแบ่งปัน IRQ และการจัดสรรแบบไดนามิกทำงานได้อย่างถูกต้อง Windows จะต้องรู้จักชิปเซ็ตเมนบอร์ดและโหลด IRQ Miniport ยิ่งมาก. เวอร์ชันล่าสุดสำหรับ Windows ยิ่งชิปเซ็ตรองรับมินิพอร์ตของตัวเองมากขึ้น (PCIIMP.PCI) อย่างไรก็ตาม จะเป็นการดีกว่าเสมอถ้าเล่นอย่างปลอดภัยและติดตั้งไดรเวอร์ชิปเซ็ตล่าสุด
ใน Windows 98 ระบบกระจาย IRQ ได้รับการจัดการโดยใช้ตัวจัดการอุปกรณ์มาตรฐาน ในรายการอุปกรณ์ระบบคุณต้องค้นหาบัส PCI มีแท็บพิเศษในคุณสมบัติ (ดูภาพหน้าจอ) หากทุกอย่างได้รับการกำหนดค่าอย่างถูกต้อง มินิพอร์ตจะถูกกล่าวถึง ("โหลดสำเร็จ") และตัวควบคุม บัส PCI(พวงมาลัย) จะถูกเปิดใช้งาน ดังนั้น Windows "98 จึงมีเครื่องมือสำหรับควบคุมการกระจายหมายเลขขัดจังหวะระหว่างบรรทัดทางกายภาพ แต่เนื่องจาก BIOS มักจะจัดการกับสิ่งนี้ได้ดีจึงไม่ได้ใช้กลไกนี้
แต่บางครั้งก็จำเป็นจริงๆ ดังที่ฉันได้กล่าวไปแล้ว อุปกรณ์ PCI ไม่ควรขัดแย้งกันหากใช้การขัดจังหวะแบบลอจิคัลเดียวกัน อีกประการหนึ่งคืออุปกรณ์ ISA ซึ่งรวมถึงพอร์ต COM และ LPT ด้วย หากอุปกรณ์ไม่ใช่ Plug&Play BIOS อาจไม่สังเกตเห็น ทำให้เกิดการขัดจังหวะที่อุปกรณ์ PCI จากนั้นคุณจะต้องสำรองการขัดจังหวะ ทำได้ใน Windows Device Manager 98: เลือกอุปกรณ์ "คอมพิวเตอร์" เรียกคุณสมบัติแล้วสลับไปที่แท็บที่สอง จากนั้นทุกอย่างชัดเจน
นอกจากความซ้ำซ้อนแล้ว คุณยังสามารถตั้งค่าหมายเลขขัดจังหวะสำหรับอุปกรณ์ได้โดยตรง ในการดำเนินการนี้ คุณจะต้องค้นหาแท็บ "ทรัพยากร" ในคุณสมบัติ ปิดใช้งานการกำหนดค่าอัตโนมัติ และลองเปลี่ยนหมายเลขขัดจังหวะที่กำหนด
น่าเสียดายที่วิธีนี้ใช้ไม่ได้ผลเสมอไป
Windows 2000 เป็นระบบพิเศษ ถ้าคุณมี คอมพิวเตอร์สมัยใหม่แสดงว่าอาจรองรับอินเทอร์เฟซการกำหนดค่า ACPI ในกรณีนี้ Windows 2000 จะเพิกเฉยต่อการทำงานของ BIOS โดยสิ้นเชิงและ "แฮงค์" อุปกรณ์ PCI ทั้งหมดในการขัดจังหวะทางลอจิคัลครั้งเดียว โดยทั่วไปการดำเนินการนี้จะทำงานได้ดี (เมื่อไม่มี ISA) แต่บางครั้งปัญหาก็เกิดขึ้น เพื่อให้สามารถเปลี่ยนหมายเลขขัดจังหวะได้ คุณต้องเปลี่ยนเคอร์เนล HAL หรือติดตั้ง Windows 2000 ใหม่โดยปิดใช้งาน ACPI ใน BIOS การเปลี่ยนเคอร์เนลทำได้ดังนี้: ในตัวจัดการอุปกรณ์เลือก "คอมพิวเตอร์" / "คอมพิวเตอร์ที่มี ACPI" เปลี่ยนไดรเวอร์เป็น " คอมพิวเตอร์มาตรฐาน", รีบูท หากไม่ได้ผล คุณจะต้องติดตั้ง Windows 2000 ใหม่อีกครั้ง
ฉันหวังว่าข้อมูลข้างต้นจะช่วยคุณในการต่อสู้กับข้อบกพร่องของฮาร์ดแวร์ และโปรดจำไว้ว่า: ปัญหาส่วนใหญ่ที่เกิดขึ้นเกี่ยวข้องกับความรู้คอมพิวเตอร์ในระดับต่ำของเจ้าของคอมพิวเตอร์ ดังนั้นควรพยายามศึกษาตนเองอยู่เสมอ ปัญหาจะน้อยลง และปัญหาที่เกิดขึ้นก็ดูไม่สามารถแก้ไขได้

มิคาอิล ไทชคอฟ หรือที่รู้จักในชื่อ ฮาร์ด

ขอให้เป็นวันที่ดี

ลองดูสถานการณ์นี้: โปรเซสเซอร์จะประมวลผลข้อมูลบางอย่างไม่ว่าจะเกิดอะไรขึ้นก็ตาม ในขณะนี้ อุปกรณ์บางอย่างก็มีข้อมูลที่ต้องประมวลผลเช่นกัน ฉันควรทำอย่างไร? เราต้องขอให้ผู้ประมวลผลยอมให้ความสนใจกับคำขอและตัดสินใจว่าจะประมวลผลข้อมูลนี้ทันทีหรือในภายหลัง ดังนั้นคำขอนี้คือ IRQ หรือการขัดจังหวะ (จริงๆ แล้วมีการขัดจังหวะสองประเภท: ฮาร์ดแวร์ (ภายนอก) และซอฟต์แวร์ (ภายใน) แต่เนื่องจากส่วนของฉันเรียกว่า "ฮาร์ดแวร์และเครือข่าย" ฉันจะพูดถึงเฉพาะการขัดจังหวะของฮาร์ดแวร์เท่านั้น) พูดอย่างเคร่งครัด IRQ คือช่องทางคำขอขัดจังหวะที่อุปกรณ์ทุกประเภทใช้เพื่อแจ้งให้โปรเซสเซอร์ทราบว่าจำเป็นต้องดำเนินการตามคำขอเฉพาะ ในทางกายภาพ IRQ จะแสดงด้วยเส้นแยก (ตัวนำ) และหน้าสัมผัสที่สอดคล้องกับเส้นเหล่านี้ในอินเทอร์เฟซ เห็นได้ชัดว่าทั้งหมดนี้ตั้งอยู่บน เมนบอร์ด- สาย IRQ มีไว้สำหรับส่งคำขอขัดจังหวะเท่านั้น

เรามาดูกันว่าขยะที่มี IRQ ทั้งหมดนี้เกิดขึ้นได้อย่างไร ดังนั้นหลังจากได้รับคำขอให้ขัดจังหวะ สโตนจะจัดเก็บเนื้อหาของรีจิสเตอร์ไว้บนสแต็ก จากนั้นจะเข้าถึงตารางเวกเตอร์ขัดจังหวะ ซึ่งมีรายการที่อยู่หน่วยความจำโปรแกรมที่สอดคล้องกับหมายเลขขัดจังหวะเฉพาะ หมายเลขอินเทอร์รัปต์จะกำหนดว่าโปรแกรมใดจะเปิดตัว โดยพื้นฐานแล้ว โปรแกรมเหล่านี้คือไดรเวอร์ที่เกี่ยวข้องกับอุปกรณ์ที่ส่งคำขอ (และไดรเวอร์ไม่ทราบงานของตนจริงๆ และจะค้นหาว่าต้องทำอะไรต่อไป) หลังจากทั้งหมดนี้ ขั้นตอนการประมวลผลจะส่งคืนจากสแต็กที่หินกำลังทำงานอยู่ หรือพูดง่ายๆ ก็คือ มอบการควบคุมระบบให้กับโปรแกรมที่ทำงานก่อนที่จะมีการร้องขอให้ขัดจังหวะ และเป็นอย่างนั้นอยู่ตลอดเวลา ตัวตารางนั้นอยู่ใน RAM และประกอบด้วย 256 องค์ประกอบ ชิ้นละ 4 ไบต์ และเริ่มต้นที่ที่อยู่ 0000:0000 มันกินพื้นที่ 1,024 KB ฉันหวังว่าคุณจะได้เรียนรู้ความจริงง่ายๆ: หากคุณต้องการประมวลผลอย่างน้อยหนึ่งไบต์ใหม่จากอุปกรณ์ใด ๆ คุณต้องประมวลผล IRQ ของอุปกรณ์นี้ก่อน

เพื่อหลีกเลี่ยงความสับสน IRQ มีลำดับชั้นหรือกล่าวอีกนัยหนึ่งคือลำดับความสำคัญ ยิ่งหมายเลขขัดจังหวะยิ่งต่ำ ลำดับความสำคัญก็จะยิ่งสูงขึ้น และในทางกลับกัน ยิ่งหมายเลขขัดจังหวะยิ่งสูง ลำดับความสำคัญก็จะยิ่งต่ำลง มี IRQ เพียง 16 รายการ ลำดับความสำคัญสูงสุดคือ IRQ 0 และต่ำสุดคือ IRQ 15 นี่คือตารางลำดับชั้น:

ฟังก์ชั่นมาตรฐาน

ระบบจับเวลา

ตัวควบคุมแป้นพิมพ์

คอนโทรลเลอร์ขัดจังหวะที่ตั้งโปรแกรมได้

พอร์ตอนุกรม COM2

พอร์ตอนุกรม COM1

ตัวควบคุมฟล็อปปี้ดิสก์มาตรฐาน

พอร์ตขนาน แอลพีที

CMOS และนาฬิกา

เสียงหรือ การ์ดเครือข่ายหรือฟรี

ฟรี

USB หรือ SCSI หรือฟรี

พอร์ตเมาส์ที่รองรับ PS/2

โปรเซสเซอร์ร่วม

ตัวควบคุม IDE หลัก

คอนโทรลเลอร์ IDE เพิ่มเติม

คุณต้องการที่จะเห็นการหยุดชะงักของคุณ? เลือก “Start – Run” พิมพ์ “msinfo32” ในหน้าต่าง "ข้อมูลระบบ" ที่ปรากฏขึ้น ทางด้านซ้าย ให้เลือกแท็บ "ทรัพยากรฮาร์ดแวร์ - IRQ Interrupts"

หากหยุดชะงักจะเกิดโรคริดสีดวงทวารด้วย ถ้ารุ่นเกิดขึ้น ปริมาณมาก IRQ แล้วสแต็คอาจล้นแล้ว... จากนั้นคุณก็เอื้อมมือไปที่ปุ่ม หากขยะประเภทนี้เกิดขึ้นบ่อยครั้ง คุณจะต้องเพิ่มพารามิเตอร์ Stacks ในไฟล์ Config.sys นอกจากสองสิ่งนี้ที่แตกต่างกันแล้ว อุปกรณ์ PCIสามารถกำหนดการขัดจังหวะเดียวกันได้ ตามทฤษฎีแล้วสิ่งนี้ไม่ควรเกิดขึ้น แต่ในทางปฏิบัติมันเกิดขึ้น ในกรณีนี้ คุณจะต้องกำหนดการขัดจังหวะให้กับอุปกรณ์ตัวใดตัวหนึ่งที่ล้มเหลวด้วยตัวเอง วิธีการทำเช่นนี้? คลิก. หน้าต่าง "คุณสมบัติ: ระบบ" จะปรากฏขึ้น เลือกแท็บ "อุปกรณ์" ค้นหาในรายการอุปกรณ์ที่เราจะแก้ไข IRQ แล้วคลิกสองครั้งด้วยเมาส์ หน้าต่างคุณสมบัติจะปรากฏขึ้นโดยที่เราเลือกแท็บ "ทรัพยากร" และยกเลิกการเลือก " การตั้งค่าอัตโนมัติ- จากนั้นเลือก "คำขอขัดจังหวะ" ด้านล่างแล้วดับเบิลคลิกอีกครั้ง หน้าต่างจะปรากฏขึ้นเพื่อให้คุณเปลี่ยนหมายเลข IRQ ได้ มันไม่ใช่เรื่องใหญ่และมันยาก แต่... คุณต้องกำหนดการขัดจังหวะอย่างชาญฉลาด ตรวจสอบตาราง: IRQ ใดมีไว้เพื่ออะไร ตรวจสอบกับตัวเองว่ามีรายการใดบ้าง อาจเกิดขึ้นได้ว่าคุณไม่มีการขัดจังหวะฟรี คิดว่าแค่นั้นเหรอไอ้หนู? เลขที่! แน่นอนว่าคุณจะไม่เพิ่ม IRQ ใหม่ แต่ลองพิจารณาว่าคุณต้องการอุปกรณ์ทั้งหมดหรือไม่ ตัวอย่างเช่น คุณใช้พอร์ต COM บ่อยแค่ไหน ฉันไม่ได้ใช้มันเลยในช่วงสามปีที่ผ่านมา ไล่พวกมันออกจากระบบซะ ซึ่งสามารถทำได้จาก BIOS และนี่คือ IRQ ฟรีของคุณ ในระยะสั้นในการตัดสินใจ ปัญหาที่คล้ายกันคุณเพียงแค่ต้องใส่ใจและทุกอย่างจะออกมาดีสำหรับคุณ และฉันอยากจะเตือนผู้เชี่ยวชาญเจ๋งๆ ทุกคนทันที อย่าเขียนจดหมายถึงฉันอย่างเช่น: “หลังจากบทความของคุณ ลูกค้าก็เริ่มนำคอมพิวเตอร์ที่มีการตั้งค่าที่ยุ่งเหยิงมาที่ร้านของเรา!” ฉันไม่รับผิดชอบต่อการกระทำของผู้ที่มีหัวและแขนงอกจากที่เดียวกับขา กาลครั้งหนึ่งฉันไม่เข้าใจเรื่องบ้าๆ เกี่ยวกับเรื่องนี้ด้วยตัวเอง แต่ฉันคิดออก และไม่มีใครอธิบายอะไรให้ฉันฟัง ผู้ที่เดินจะเชี่ยวชาญถนน!

เดินหน้าต่อไป โดยทั่วไป ควรสังเกตว่าช่องทางคำขอขัดจังหวะคือทรัพยากรระบบ ฉันจะให้คำจำกัดความสั้นๆ แต่เหมาะสมมาก: ทรัพยากรระบบคือช่องทางการสื่อสาร ที่อยู่ และสัญญาณที่โหนดคอมพิวเตอร์ใช้เพื่อแลกเปลี่ยนข้อมูลโดยใช้บัส เรียบง่ายและชัดเจนเช่นนั้น นอกเหนือจาก IRQ แล้ว ทรัพยากรระบบยังรวมถึง: ที่อยู่หน่วยความจำ ช่องการเข้าถึงหน่วยความจำโดยตรง และที่อยู่พอร์ต I/O แต่เพิ่มเติมเกี่ยวกับเรื่องนั้นในบทความอื่น ๆ นั่นคือทั้งหมดสำหรับวันนี้ ขอให้โชคดีในความพยายามของคุณ

สำหรับการจัดการเหตุการณ์ที่เกิดขึ้นแบบอะซิงโครนัสที่เกี่ยวข้องกับการทำงานของโปรแกรม เหมาะที่สุด กลไกการขัดจังหวะ.

ขัดจังหวะ ถือได้ว่าเป็นบางส่วน กิจกรรมพิเศษในระบบที่ต้องการการตอบสนองทันที ตัวอย่างเช่น ระบบที่มีความน่าเชื่อถือสูงที่ออกแบบมาอย่างดีใช้ระบบไฟฟ้าขัดข้องในการดำเนินการขั้นตอนการเขียนเนื้อหาของรีจิสเตอร์และ RAM ลงในสื่อแม่เหล็ก เพื่อให้เมื่อไฟฟ้ากลับคืนมา งานก็สามารถดำเนินการต่อจากที่เดิมได้

ดูเหมือนชัดเจนว่าการหยุดชะงักเกิดขึ้นได้หลากหลายด้วยเหตุผลหลายประการ ดังนั้น การขัดจังหวะไม่เพียงแค่ถูกพิจารณาว่าเป็นเช่นนั้น แต่ยังมีตัวเลขที่เกี่ยวข้องอยู่ด้วย ซึ่งเรียกว่า หมายเลขประเภทขัดจังหวะ หรือเพียงแค่หมายเลขขัดจังหวะ หมายเลขขัดจังหวะแต่ละหมายเลขเชื่อมโยงกับเหตุการณ์หนึ่งหรือเหตุการณ์อื่น ระบบสามารถรับรู้ได้ว่าการขัดจังหวะใดเกิดขึ้นกับหมายเลขใด และเริ่มขั้นตอนที่สอดคล้องกับหมายเลขนี้

โปรแกรมสามารถทำให้เกิดการขัดจังหวะตามจำนวนที่กำหนดได้ เมื่อต้องการทำเช่นนี้ พวกเขาใช้คำสั่ง INT สิ่งเหล่านี้เรียกว่าซอฟต์แวร์ขัดจังหวะ การขัดจังหวะของซอฟต์แวร์นั้นไม่อะซิงโครนัส เนื่องจากถูกเรียกจากโปรแกรม (และรู้เมื่อมันถูกเรียกการขัดจังหวะ!)

การขัดจังหวะของซอฟต์แวร์นั้นสะดวกในการจัดระเบียบการเข้าถึงแต่ละโมดูลที่เหมือนกันกับทุกโปรแกรม ตัวอย่างเช่น มีโมดูลซอฟต์แวร์ระบบปฏิบัติการให้เลือกใช้ แอพพลิเคชั่นกล่าวคือผ่านการขัดจังหวะ และเมื่อเรียกโมดูลเหล่านี้ ไม่จำเป็นต้องทราบที่อยู่ปัจจุบันในหน่วยความจำ แอปพลิเคชันโปรแกรมสามารถติดตั้งตัวจัดการการขัดจังหวะของตนเองเพื่อใช้งานโดยโปรแกรมอื่นในภายหลัง เมื่อต้องการทำเช่นนี้ ตัวจัดการขัดจังหวะภายในจะต้องมีหน่วยความจำอยู่

การขัดจังหวะด้วยฮาร์ดแวร์เกิดจากอุปกรณ์ทางกายภาพและมาถึงแบบอะซิงโครนัส การขัดจังหวะเหล่านี้จะแจ้งให้ระบบทราบเกี่ยวกับเหตุการณ์ที่เกี่ยวข้องกับการทำงานของอุปกรณ์ เช่น ในที่สุดเครื่องพิมพ์ก็พิมพ์อักขระเสร็จสิ้นแล้ว และจะเป็นการดีที่จะออกอักขระตัวถัดไป หรืออ่านเซกเตอร์ของดิสก์ที่ต้องการและเนื้อหาในนั้นแล้ว ที่มีอยู่ในโปรแกรม การใช้อินเทอร์รัปต์เมื่อทำงานกับอุปกรณ์ภายนอกที่ช้าทำให้คุณสามารถรวม I/O เข้ากับการประมวลผลข้อมูลได้ โปรเซสเซอร์กลางและเป็นผลให้ประสิทธิภาพโดยรวมของระบบดีขึ้น การขัดจังหวะบางอย่าง (ห้ารายการแรกตามลำดับตัวเลข) สงวนไว้สำหรับการใช้งานโดย CPU เองในกรณีที่มีเหตุการณ์พิเศษใดๆ เช่น ความพยายามที่จะหารด้วยศูนย์ โอเวอร์โฟลว์ ฯลฯ

บางครั้ง แนะนำให้ระบบไม่คำนึงถึงการขัดจังหวะทั้งหมดหรือส่วนบุคคล สำหรับสิ่งนี้พวกเขาใช้สิ่งที่เรียกว่า ขัดจังหวะการปิดบัง- แต่การขัดจังหวะบางอย่างไม่สามารถปกปิดได้ สิ่งเหล่านี้เป็นการขัดจังหวะที่ไม่สามารถปกปิดได้

โปรดทราบว่าตัวจัดการการขัดจังหวะสามารถเรียกซอฟต์แวร์ขัดจังหวะได้ด้วยตนเอง เช่น เพื่อเข้าถึง BIOS หรือบริการ DOS (บริการ BIOS ก็มีให้ใช้งานผ่านกลไกการขัดจังหวะของซอฟต์แวร์เช่นกัน)

การเขียนโปรแกรมจัดการการขัดจังหวะของคุณเองและการเปลี่ยนตัวจัดการ DOS และ BIOS มาตรฐานถือเป็นงานที่ซับซ้อนและมีความรับผิดชอบ มีความจำเป็นต้องคำนึงถึงรายละเอียดปลีกย่อยทั้งหมดของการทำงานของอุปกรณ์และการโต้ตอบของซอฟต์แวร์และฮาร์ดแวร์ เมื่อทำการดีบั๊ก เป็นไปได้ที่จะทำลายระบบปฏิบัติการพร้อมกับผลลัพธ์ที่คาดเดาไม่ได้ ดังนั้นคุณต้องระมัดระวังอย่างมากเกี่ยวกับสิ่งที่โปรแกรมของคุณกำลังทำอยู่

เพื่อเชื่อมโยงที่อยู่ของตัวจัดการการขัดจังหวะกับหมายเลขขัดจังหวะ ให้ใช้ ขัดจังหวะตารางเวกเตอร์ซึ่งครอบครอง RAM กิโลไบต์แรก - ที่อยู่ตั้งแต่ 0000:0000 ถึง 0000:03FF ตารางประกอบด้วย 256 องค์ประกอบ - ที่อยู่ FAR ของตัวจัดการการขัดจังหวะ องค์ประกอบเหล่านี้เรียกว่า เวกเตอร์ขัดจังหวะ- คำแรกขององค์ประกอบตารางประกอบด้วยค่าชดเชย และคำที่สองประกอบด้วยที่อยู่ของส่วนตัวจัดการขัดจังหวะ

หมายเลขขัดจังหวะ 0 สอดคล้องกับที่อยู่ 0000:0000 หมายเลขขัดจังหวะ 1 สอดคล้องกับที่อยู่ 0000:0004 เป็นต้น

ตารางบางส่วนได้รับการเตรียมใช้งานโดย BIOS หลังจากทดสอบฮาร์ดแวร์และก่อนที่ระบบปฏิบัติการจะเริ่มโหลด และอีกส่วนหนึ่งเมื่อโหลด DOS DOS สามารถเข้าควบคุมการขัดจังหวะ BIOS บางอย่างได้

ลองดูที่เนื้อหาของตารางเวกเตอร์ขัดจังหวะ นี่คือจุดประสงค์ของเวกเตอร์ที่สำคัญที่สุดบางส่วน:

คำอธิบาย

ข้อผิดพลาดของแผนก

เรียกโดยอัตโนมัติหลังจากดำเนินการคำสั่ง DIV หรือ IDIV หากการหารส่งผลให้เกิดการโอเวอร์โฟลว์ (เช่น การหารด้วย 0) DOS มักจะแสดงข้อความแสดงข้อผิดพลาดเมื่อจัดการกับการขัดจังหวะนี้ และหยุดโปรแกรมไม่ให้ทำงาน

สำหรับโปรเซสเซอร์ 8086 ที่อยู่ผู้ส่งจะชี้ไปที่คำสั่งถัดไปหลังจากคำสั่งการแบ่ง และในโปรเซสเซอร์ 80286 ไปยังไบต์แรกของคำสั่งที่ทำให้เกิดการขัดจังหวะ

โหมดขั้นตอนขัดจังหวะ ผลิตหลังจากการดำเนินการตามคำสั่งของเครื่องแต่ละเครื่อง หากตั้งค่า TF บิตการติดตามแบบทีละขั้นตอนในคำแฟล็ก ใช้สำหรับแก้จุดบกพร่องโปรแกรม การขัดจังหวะนี้ไม่ถูกสร้างขึ้นหลังจากดำเนินการคำสั่ง MOV ไปยังเซ็กเมนต์รีจิสเตอร์หรือหลังจากโหลดเซ็กเมนต์รีจิสเตอร์ด้วยคำสั่ง POP

ฮาร์ดแวร์ขัดจังหวะที่ไม่สามารถปกปิดได้ การขัดจังหวะนี้สามารถใช้งานได้แตกต่างกันในเครื่องที่ต่างกัน โดยทั่วไปจะสร้างขึ้นเมื่อมีข้อผิดพลาดของพาริตีใน RAM และเมื่อมีการร้องขอการขัดจังหวะจากตัวประมวลผลร่วม

ขัดขวางการติดตาม การขัดจังหวะนี้สร้างขึ้นโดยการดำเนินการคำสั่งเครื่องหนึ่งไบต์ด้วยโค้ด CCh และมักใช้โดยดีบักเกอร์เพื่อตั้งค่าเบรกพอยต์

ล้น. สร้างโดยคำสั่งเครื่อง INTO หากตั้งค่าสถานะ OF หากไม่ได้ตั้งค่าแฟล็ก คำสั่ง INTO จะถูกดำเนินการเป็น NOP การขัดจังหวะนี้ใช้เพื่อจัดการกับข้อผิดพลาดเมื่อดำเนินการทางคณิตศาสตร์

พิมพ์สำเนาหน้าจอ

สร้างโดยการกดปุ่ม PrtScr บนคีย์บอร์ด โดยทั่วไปจะใช้ในการพิมพ์ภาพหน้าจอ สำหรับโปรเซสเซอร์ 80286 สร้างขึ้นเมื่อดำเนินการคำสั่งเครื่อง BOUND หากค่าที่กำลังทดสอบอยู่นอกช่วงที่ระบุ opcode หรือคำสั่งที่ไม่ได้กำหนดมีความยาวมากกว่า 10 ไบต์ (สำหรับโปรเซสเซอร์ 80286)กรณีพิเศษของการไม่มีตัวประมวลผลร่วมทางคณิตศาสตร์ (ตัวประมวลผล 80286)

IRQ0 - ขัดจังหวะ

ตัวจับเวลาช่วงเวลา

เกิดขึ้น 18.2 ครั้งต่อวินาที

IRQ1 - คีย์บอร์ดขัดจังหวะ สร้างขึ้นเมื่อมีการกดหรือปล่อยปุ่ม ใช้ในการอ่านข้อมูลจากแป้นพิมพ์

IRQ2 - ใช้สำหรับการขัดจังหวะฮาร์ดแวร์แบบเรียงซ้อนในเครื่องคลาส AT IRQ3 - การหยุดชะงักของพอร์ตอะซิงโครนัส COM2 IRQ4 - การหยุดชะงักของพอร์ตอะซิงโครนัส COM1

IRQ5 - ขัดจังหวะจาก

IRQ7 - เครื่องพิมพ์ขัดจังหวะ สร้างโดยเครื่องพิมพ์เมื่อพร้อมที่จะดำเนินการอื่น อะแดปเตอร์เครื่องพิมพ์จำนวนมากไม่ได้ใช้การขัดจังหวะนี้

การบำรุงรักษาอะแดปเตอร์วิดีโอ

การกำหนดคอนฟิกอุปกรณ์ในระบบ

การกำหนดขนาดของ RAM ในระบบ

การบำรุงรักษาระบบดิสก์

อนุกรม I/O

บริการขั้นสูงสำหรับคอมพิวเตอร์ AT

การบำรุงรักษาคีย์บอร์ด

การบำรุงรักษาเครื่องพิมพ์

เรียกใช้ BASIC ใน ROM หากมี

บริการชม.

ตัวจัดการการขัดจังหวะ Ctrl-Break

การขัดจังหวะเกิดขึ้น 18.2 ครั้งต่อวินาที และถูกเรียกโดยทางโปรแกรมโดยตัวจัดการการขัดจังหวะของตัวจับเวลา

ที่อยู่ตารางวิดีโอสำหรับตัวควบคุมอะแดปเตอร์วิดีโอ 6845

ชี้ไปที่ตารางพารามิเตอร์ฟล็อปปี้ดิสก์

ชี้ไปที่ตารางกราฟิกสำหรับอักขระที่มีรหัส ASCII 128-255

ใช้โดย DOS หรือสงวนไว้สำหรับ DOS

การขัดจังหวะที่สงวนไว้สำหรับผู้ใช้

ไม่ได้ใช้.

IRQ8 - การขัดจังหวะนาฬิกาแบบเรียลไทม์

IRQ9 - ขัดจังหวะจากคอนโทรลเลอร์ EGA

IRQ10 - สงวนไว้

IRQ11 - สงวนไว้

IRQ12 - สงวนไว้

IRQ13 - ขัดจังหวะจากตัวประมวลผลร่วมทางคณิตศาสตร์

IRQ14 - ขัดจังหวะจากตัวควบคุมฮาร์ดดิสก์

IRQ15 - สงวนไว้

ไม่ได้ใช้.

สงวนไว้สำหรับ BASIC

ใช้โดยล่ามพื้นฐาน

การโต้แย้งการขัดจังหวะที่พบบ่อยที่สุด (IRQ) อาจเกี่ยวข้องกับพอร์ตอนุกรม COM2 แบบรวมที่พบในสมัยใหม่ เมนบอร์ดและโมเด็มภายใน (หมายถึงโมเด็มพีซีภายในที่มีคุณสมบัติครบถ้วน ไม่ใช่โมเด็มซอฟต์แวร์ ซึ่งเรียกอีกอย่างว่า WinModem) ความจริงก็คือว่าโมเด็มภายในที่มีคุณสมบัติครบถ้วนรองรับพอร์ตบางพอร์ตแล้ว ตามค่าเริ่มต้น พอร์ตนี้ถูกกำหนดให้กับ COM2 และระบบมักจะเปิดใช้งานพอร์ตอนุกรมที่สองด้วย ดังนั้น ระบบจะจบลงด้วยพอร์ตที่เหมือนกันสองพอร์ตที่ใช้ทรัพยากรเดียวกัน (การขัดจังหวะและที่อยู่พอร์ต I/O)

วิธีแก้ปัญหานี้ค่อนข้างง่าย: คุณควรเข้าสู่การตั้งค่า BIOS ของระบบและปิดการใช้งานพอร์ต COM2 ในตัว นอกจากนี้ คุณอาจพิจารณาปิดการใช้งานพอร์ต COM1 ซึ่งไม่ค่อยได้ใช้เช่นกัน การปิดใช้งานพอร์ต COMx ที่ไม่ได้ใช้เป็นหนึ่งในนั้น วิธีที่ดีที่สุดปล่อยอินเทอร์รัปต์ (IRQ) ให้กับอุปกรณ์อื่นๆ

ข้อขัดแย้งทั่วไปอีกประการหนึ่งยังเกี่ยวข้องกับพอร์ตอนุกรมด้วย ในตารางการจัดสรรการขัดจังหวะมาตรฐาน คุณอาจสังเกตเห็นว่า IRQ3 ถูกกำหนดให้กับ COM2 และ IRQ4 ถูกกำหนดให้กับ COM1 ปัญหาเกิดขึ้นเมื่อพอร์ต COM3 และ/หรือ COM4 เพิ่มเติมถูกเพิ่มลงในระบบ และไม่ได้กำหนดอินเทอร์รัปต์อิสระด้วยตนเอง (โดยค่าเริ่มต้นจะใช้ IRQ3 และ IRQ4 เดียวกัน)

นอกเหนือจากความซับซ้อนแล้ว การ์ดพอร์ตบางตัวยังไม่อนุญาตให้เลือกอินเทอร์รัปต์อื่นนอกเหนือจาก IRQ3 และ IRQ4 เป็นผลให้การกำหนด IRQ3 ให้กับ COM4 และ IRQ4 ให้กับ COM3 ส่งผลให้เกิดข้อขัดแย้งกับ COM1 และ COM2 ที่ใช้การขัดจังหวะเหล่านี้ด้วย: ทั้งสองพอร์ตไม่สามารถใช้ช่องสัญญาณควบคุมการขัดจังหวะเดียวกันในเวลาเดียวกันได้ เมื่อทำงานใน DOS สิ่งนี้เป็นไปได้เพราะสามารถทำได้ครั้งละหนึ่งงานเท่านั้น แต่ใน Windows และ OS/2 นี่เป็นไปไม่ได้เลย เพื่อให้คอมพิวเตอร์สามารถใช้พอร์ต COM แบบขนานมากกว่าสองพอร์ตได้ จำเป็นต้องมีการ์ดหลายพอร์ต ซึ่งนอกเหนือจากการขัดจังหวะหมายเลข 3 และ 4 แล้ว ยังอนุญาตให้ใช้การขัดจังหวะเพิ่มเติมได้ การแบ่งปันโดยหลักการแล้วการขัดจังหวะเป็นที่ยอมรับได้สำหรับอุปกรณ์ที่ปกติไม่ได้ทำงานพร้อมกัน (หรือต่อเนื่องกัน) พอร์ตไม่จัดอยู่ในหมวดหมู่อุปกรณ์นี้ คุณสามารถใช้สแกนเนอร์และโมเด็มขัดจังหวะร่วมกันได้ แต่ในกรณีนี้ หากใช้พร้อมกันก็จะเกิดข้อขัดแย้งขึ้น โชคดีที่อุปกรณ์ส่วนใหญ่ที่เคยใช้พอร์ตก่อนหน้านี้ (เช่น เมาส์ เครื่องพิมพ์ฉลาก และโมเด็มภายนอก) ตอนนี้เชื่อมต่อกับพอร์ต USB ดังนั้น ผู้ใช้คอมพิวเตอร์ในปัจจุบันจึงไม่จำเป็นต้องจัดการกับความจำเป็นในการรองรับหลายพอร์ต

หากคุณยังคงจำเป็นต้องใช้พอร์ตอนุกรมหลายพอร์ต ทางออกที่ดีที่สุดจะเป็นการซื้อบอร์ดหลายพอร์ตซึ่งมีความสามารถในการตั้งค่าการขัดจังหวะที่ไม่ขัดแย้งกันหรือมีโปรเซสเซอร์ของตัวเองที่อนุญาตให้ระบบขัดจังหวะหนึ่งระบบกระจายไปยังหลายพอร์ต การ์ดมัลติพอร์ตรุ่นเก่าบางรุ่นมีอินเทอร์เฟซ ISA แต่ปัจจุบันถูกแทนที่ด้วยการ์ด PCI ซึ่งมีข้อดีด้านประสิทธิภาพเช่นกัน

หากอุปกรณ์บางตัวที่กล่าวถึงในตารางหายไป (เช่น พอร์ตเมาส์ในตัว (IRQ12) หรือพอร์ตขนานที่สอง (IRQ5)) ก็ถือว่าการขัดจังหวะของอุปกรณ์เหล่านั้นพร้อมใช้งาน ตัวอย่างเช่น พอร์ตขนานที่สองสามารถพบได้น้อยมาก ดังนั้น IRQ5 Interrupt ที่กำหนดให้กับพอร์ตนี้จึงมักใช้กับการ์ดอะแดปเตอร์เสียง ในทำนองเดียวกัน IRQ15 ใช้สำหรับคอนโทรลเลอร์ IDE รอง หากระบบไม่มีอุปกรณ์ดิสก์ที่เชื่อมต่อกับช่อง IDE รอง คุณสามารถปิดการใช้งานคอนโทรลเลอร์นี้ใน BIOS ได้ ซึ่งจะเป็นการเพิ่มการขัดจังหวะอีกครั้งสำหรับอุปกรณ์อื่น ๆ

ควรสังเกตว่าวิธีที่ง่ายที่สุดในการตรวจสอบการตั้งค่าการขัดจังหวะคือในตัวจัดการ อุปกรณ์วินโดวส์- ใน Windows 95b จะมีโปรแกรม HWDIAG และใน Windows 98 และใหม่กว่าจะมีคอนโซล System Information ยูทิลิตี้เหล่านี้ช่วยให้คุณได้รับรายงานโดยละเอียดเกี่ยวกับการใช้ทรัพยากรในระบบตลอดจน ไดรเวอร์ที่ติดตั้งอุปกรณ์และบันทึก รีจิสทรีของ Windowsสำหรับแต่ละอุปกรณ์ ใน ระบบวินโดวส์ข้อมูลระบบ XP และ Vista จัดทำโดยโปรแกรม Msinfo32

เพื่อให้แน่ใจว่ามีการหยุดชะงักของข้อต่อในจำนวนสูงสุดที่เป็นไปได้ ระบบที่ทันสมัยหากไม่มีขั้วต่อ ISA เมื่อทำงานกับ BIOS ระบบ ให้ทำตามขั้นตอนเหล่านี้

  1. ปิดการใช้งานพอร์ตที่ไม่ได้ใช้ทั้งหมดใน BIOS ของระบบ ตัวอย่างเช่นหากคุณใช้พอร์ตอนุกรมและขนานแทน พอร์ต USBให้ปิดเลย เป็นผลให้สามารถปล่อยการขัดจังหวะได้สูงสุดสามครั้ง
  2. ระบุการขัดจังหวะ IRQ ที่เผยแพร่ในขั้นตอนที่ 1 ในรายการการขัดจังหวะที่มีอยู่สำหรับอุปกรณ์ PCI/PnP ขึ้นอยู่กับเวอร์ชันของ BIOS พารามิเตอร์ที่เกี่ยวข้องจะมีอยู่ในส่วนการยกเว้นทรัพยากร PnP/PCI หรือการกำหนดค่า PnP/PCI
  3. เปิดใช้งานตัวเลือกรีเซ็ตข้อมูลการกำหนดค่าเพื่อล้างตารางเส้นทาง IRQ ในหน่วยความจำ CMOS
  4. บันทึกการเปลี่ยนแปลงของคุณและออกจากยูทิลิตี้การตั้งค่า BIOS