คำตอบสั้น ๆ
คีย์บอร์ดทั้งสองจะทำงานอย่างเท่าเทียมกันสำหรับรหัสระดับผู้ใช้ อาจมีความแตกต่างเล็กน้อย ( นาโนเป็นไมโครวินาทีบนพีซีที่ทันสมัย) ถ้าคุณเขียนไดรเวอร์อุปกรณ์ หากระบบค้างแป้นพิมพ์ทั้งสองจะไม่สามารถแก้ปัญหาได้ ไปสำหรับการรีบูตอย่างหนัก
คำตอบยาว TL; DR;
การขัดจังหวะคืออะไร
เมื่อฮาร์ดแวร์ (หรือบางส่วนที่สำคัญของซอฟต์แวร์ภายในระบบปฏิบัติการเช่นเคอร์เนล) ต้องใช้บริการตัวประมวลผลซึ่งจะส่งข้อความหรือขัดจังหวะซึ่งขอให้หน่วยประมวลผลเลื่อนสิ่งที่มันทำและจัดการคำขอนี้
มันทำงานอย่างไร?
เมื่อฮาร์ดแวร์สร้างการขัดจังหวะ (เช่นกดปุ่ม) คำขอนี้จะเข้าสู่ตัวควบคุมการขัดจังหวะ จากนั้นคอนโทรลเลอร์จะขัดจังหวะ CPU ทันทีในบรรทัดเดียวของรหัสเครื่อง (CPU ยังคงประมวลผลบรรทัดสุดท้ายนี้) เมื่อตัวประมวลผลพร้อมที่จะให้บริการตามคำขอนี้ก็จะถามตัวควบคุมการขัดจังหวะการร้องขอการขัดจังหวะ (IRQ) และการจัดการประจำ ตัวควบคุมขัดจังหวะมีโครงสร้างข้อมูลภายใน - ตารางส่งสัญญาณขัดจังหวะที่มีตัวชี้ไปยังรูทีนที่ควรถูกเรียกใช้งานโดย CPU สำหรับ IRQ เฉพาะ
การขัดจังหวะที่แตกต่างกันทั้งหมดสอดคล้องกับInterrupt Request Level (IRQL) ที่ จำกัด อย่างดี ตัวอย่างเช่นในระบบ x86 มี 32 IRQLs และบน x64 และ IA64 มีจริงน้อยกว่า - 16 IRQL เห็นได้ชัดว่ามีอุปกรณ์ฮาร์ดแวร์และบริการซอฟต์แวร์มากกว่า IRQL ซึ่งหมายความว่าบางวัตถุระบบจะใช้ IRQL ร่วมกัน
ตาราง IRQLs สำหรับ x64
IRQL | ลักษณะ
--------------------------------------------
15 | ประวัติดี
14 | ผู้ขัดจังหวะ / พลังงาน
13 | นาฬิกา
12 | ซิงค์
11 | อุปกรณ์ N
.. | ...
3 | อุปกรณ์ 1
2 | จัดส่ง / DPC
1 | APC
0 | Passive / ต่ำ
IRQL ที่สูงขึ้น (ที่มีจำนวนมากกว่า) จะมีลำดับความสำคัญสูงกว่า ส่วนประกอบทั้งหมดของระบบพยายามรักษา IRQL ปัจจุบันของโปรเซสเซอร์ในระดับต่ำสุดที่เป็นไปได้ - 0 หากมีการขัดจังหวะในระดับที่สูงกว่าระดับ IRQL ปัจจุบันของโปรเซสเซอร์จะเพิ่มขึ้นและการขัดจังหวะที่มีระดับต่ำกว่าจะไม่ถูกจัดการจนถึง การขัดจังหวะทั้งหมดที่มีระดับสูงกว่าได้รับการแก้ไขแล้ว IRQ สามารถจัดการแบบแบตช์หากตัวจัดตารางเวลา IRQ สามารถคิว IRQ หลายตัวในระดับเดียวกันสำหรับการประมวลผลตัวประมวลผล
ประเด็นคืออะไร?
ทั้งหมดนี้ได้รับการออกแบบมาเป็นอย่างดีเพื่อแยกผู้ใช้ปลายทางออกจากความซับซ้อนของฮาร์ดแวร์และสร้างสถาปัตยกรรมสากลที่สามารถทำงานกับฮาร์ดแวร์ / ซอฟต์แวร์ได้หลายประเภท
รหัสระดับผู้ใช้ (เช่นไม่ใช่ระดับเคอร์เนล) จะดำเนินการก็ต่อเมื่อโปรเซสเซอร์อยู่ในประเภท Passive / Low (0) IRQL จุดคือคุณสามารถจัดการเหตุการณ์กดปุ่มในแอปพลิเคชันของคุณหลังจาก IRQL ทั้งหมดได้รับการจัดการ ดังนั้นสำหรับคีย์บอร์ดมันไม่สำคัญว่า IRQL จะถูกกำหนดให้กับการขัดจังหวะของฮาร์ดแวร์
IRQL เป็นเพียงนามธรรม OS และยังไม่ได้ตั้งอยู่ในหิน IRQ และ IRQL ที่สอดคล้องกันจะถูกเก็บไว้ในรีจิสทรีของ Windows (ตัวอย่าง) และผู้ใช้ที่กระตือรือร้นสามารถเปลี่ยนได้ด้วยตนเอง
สรุปผลการวิจัย
คำพูดจากคำถาม
เนื่องจากคีย์บอร์ด USB พึ่งพาไดร์เวอร์และสถาปัตยกรรม USB ทั่วไปที่มีการเข้าถึง IRQ เพียงไม่กี่ช่องเท่านั้นจึงไม่สามารถให้คีย์บอร์ดเข้าถึง IRQ ได้โดยมีลำดับความสำคัญสูงเท่ากับคอนโทรลเลอร์อื่น (พูด PS2)
บางทีผู้เขียนหมายIRQL ต่ำแทนที่จะเป็นช่อง IRQ น้อยลง อย่างไรก็ตามมันไม่สำคัญเพราะผู้ใช้ไม่สามารถมองเห็นได้บนพีซีที่ทันสมัยใด ๆ ความแตกต่างที่เป็นไปได้คือระดับนาโนถึงไมโครวินาทีและเกิดขึ้นที่ระดับเคอร์เนลเท่านั้น ในทั้งสองกรณีรหัสระดับผู้ใช้ถูกบล็อกโดยเคอร์เนลระบบปฏิบัติการ
สิ่งนี้ (ถ้าเป็นจริง) หมายความว่าคีย์บอร์ด USB จะตอบสนองน้อยกว่าคีย์บอร์ดที่ต่อกับพอร์ตอื่นหรือไม่?
มันไม่เป็นความจริงเพราะวิธีการออกแบบระบบปฏิบัติการ หากระบบปฏิบัติการไม่ว่างกับบางสิ่งและ "ช้า" ทั้งสองแป้นจะทำงานเหมือนกัน
ยกตัวอย่างเช่นแป้นพิมพ์ USB ที่แมปกับ IRQ ที่มีความสำคัญปานกลางบนระบบที่มีข้อบกพร่อง
ในกรณีนี้ระบบจะ BSOD การจัดการ IRQ ต้องได้รับการออกแบบตามมาตรฐานที่แน่นอน (เช่นจะต้องรวดเร็วซิงโครนัสและไม่ปิดกั้นเป็นต้น) ส่วนเบี่ยงเบนจากนี้และเคอร์เนลใด ๆ จะ BSOD
เนื่องจากมีลำดับความสำคัญค่อนข้างเท่ากันกิจกรรมแป้นพิมพ์จะถูกละเว้นและคุณจะไม่สามารถส่ง Ctrl-Alt-del หรือการกดแป้นฉุกเฉินอื่น ๆ
หากระบบหยุดทำงานมีสิ่งต่าง ๆ มากมายที่สามารถผิดพลาดได้ แต่ส่วนใหญ่ IRQL การกดแป้นพิมพ์จะถูกจัดการในระดับไดรเวอร์ ปัญหาคือมันจะไม่ถูกส่งไปยังแอปพลิเคชันที่สมัครรับการแจ้งเตือนดังกล่าวเนื่องจากระบบปฏิบัติการไม่ว่างทำอย่างอื่น