วันพฤหัสบดีที่ 19 มีนาคม พ.ศ. 2552

การจัดลำดับความสำคัญของอินเทอร์รัพต์

การจัดลำดับความสำคัญของอินเทอร์รัพต์
ถ้ามีอินเทอร์รัพต์เกิดขึ้นมากมายในเวลาเดียวกัน ทำให้มีคำถามที่น่าสนใจ 2 คำถาม
คำถามแรกก็คือถ้ามีอินเทอร์รัพต์เกิดขึ้นพร้อมกันหลาย อินเทอร์รัพต์เพื่อคอย

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

วิธีหาดีไวซ์ที่ส่งอินเทอร์รัพต์
Vectored interrupt
ซึ่งในสัญญาณอินเทอร์รัพต์นั้นจะมีแอ็ดเดรสของ อินเทอร์รัพต์ดีไวซ์รวมมาด้วย
วิธีหาดีไวซ์ที่ส่งอินเทอร์รัพต์
Polled interrupt
โดยใช้พต์ พูลลิ่งแต่ละดีไวซ์ ใช้ “daisy chaining”

ซึ่งจะวางอินเทอร์รัพต์ไปบนสายอินเทอร์รัพต์เพียงเส้นเดียวไปยังซีพียูซึ่งกำหนดเป็นลำดับความสำคัญสูงสุดที่ซีพียูทราบได้ก่อน

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น