ทุกคนลองจินตนาการถึงโลกที่ทุกงานต้องทำทีละอย่างไปตามลำดับ ไม่มีใครหยุดใคร และไม่มีการเร่งเวลากัน ทุกอย่างต้องรอต่อคิวเพียงเท่านั้น ฟังดูช้า และน่าเบื่อใช่ไหม ? แต่โชคดีที่คอมพิวเตอร์ไม่ได้ทำงานแบบนั้น เพราะมันมีสิ่งหนึ่งที่เข้ามาช่วยแก้ไข นั่นก็คือ "Interrupt" หรือ "การขัดจังหวะ" ที่คอยบอก ซีพียู (CPU) ให้หยุดสิ่งที่มันกำลังทำ และหันไปแก้ไขปัญหา หรือทำงานอื่นที่เร่งด่วน ก่อนแล้วค่อยกลับมาทำงานเดิมต่อ
Interrupt ก็คือฟันเฟืองลับที่ช่วยให้คอมพิวเตอร์ตอบสนองได้รวดเร็ว หากทุกคนอยากรู้ว่ามันทำงานอย่างไร ? มีเบื้องหลังอะไรที่น่าสนใจ ? ก็ตามมาอ่านกันได้เลย เพราะบทความนี้จะพาทุกคนไปรู้จักกับการ Interrupt ทั้งความหมาย, ความเป็นมา, วิธีการ, ประเภท และประโยชน์ของ Interrupt ถ้าทุกคนพร้อมกันแล้ว เรามาเริ่มกันเลย !
ให้ทุกคนลองจินตนาการว่า กำลังทำงานกับโปรแกรมหนึ่งอยู่ แล้วจู่ ๆ ก็มีเหตุการณ์ หรือคำสั่งที่ต้องการความสนใจในทันที เหมือนกับการที่เรากำลังพิมพ์งาน แล้วมีโทรศัพท์ด่วนเข้ามาให้เราหยุดก่อน ซึ่งนั่นก็เป็นตัวอย่างง่าย ๆ ของ "Interrupt" หรือ "การขัดจังหวะ" ซึ่งเป็นสัญญาณที่ถูกส่งออกจาก ฮาร์ดแวร์คอมพิวเตอร์ หรือซอฟต์แวร์ เมื่อกระบวนการ หรือเหตุการณ์ใด ๆ ต้องการความสนใจด่วน ซึ่งจะทำให้โปรเซสเซอร์หยุดกระบวนการที่กำลังทำอยู่ และหันไปจัดการกับสิ่งที่สำคัญก่อนนั่นเอง
ในกรณีของอุปกรณ์ I/O (Input/Output) จะมีสายควบคุมบนบัสของระบบคอมพิวเตอร์ (Bus Control Line) สายหนึ่งที่ถูกกำหนดให้ใช้สำหรับการส่งสัญญาณ Interrupt นี้ และมีชื่อเรียกว่า Interrupt Service Routine (ISR)
เมื่ออุปกรณ์ส่งสัญญาณ Interrupt มาขณะโปรเซสเซอร์กำลังทำงานในกระบวนการใดกระบวนการหนึ่ง สมมติว่าเป็นกระบวนการ i (Process i) โปรเซสเซอร์จะทำการประมวลผลคำสั่งในกระบวนการ i ให้เสร็จสิ้นก่อน หลังจากนั้น โปรเซสเซอร์จะทำการเปลี่ยนไปที่ Interrupt Service Routine (ISR) โดยการโหลดค่า Program Counter (PC) ไปยังที่อยู่ของคำสั่งแรกใน ISR แต่ก่อนที่จะทำเช่นนั้น มันจะเก็บที่อยู่ของคำสั่งที่ถูกขัดจังหวะ (จากกระบวนการ i) ไว้ในที่ชั่วคราว เพื่อที่เมื่อการจัดการกับ Interrupt เสร็จสิ้นแล้ว โปรเซสเซอร์จะสามารถกลับมาทำงานต่อจากจุดที่ถูกหยุดไว้ในกระบวนการ i+1 ได้
ภาพจาก : https://embeddedwala.com/EmbeddedSystems/embedded-c/what-is-isr
ในระหว่างที่โปรเซสเซอร์กำลังจัดการกับ Interrupt อยู่ มันต้องส่งสัญญาณไปยังอุปกรณ์ที่ส่ง Interrupt มา เพื่อแจ้งว่าได้รับสัญญาณแล้ว และอุปกรณ์นั้นก็จะหยุดการส่งสัญญาณ Interrupt นอกจากนี้ ในการจัดการ Interrupt โปรเซสเซอร์ต้องเก็บค่าของรีจิสเตอร์ต่าง ๆ ไว้ เพื่อที่เมื่อเสร็จจากการจัดการ Interrupt แล้ว จะสามารถคืนค่าการทำงานที่ถูกหยุดไปกลับมาได้เหมือนเดิม สิ่งนี้ทำให้เกิดความล่าช้าเล็กน้อยระหว่างที่ Interrupt เรียกว่า Interrupt Latency
การใช้ Interrupt ในระบบคอมพิวเตอร์ถูกพัฒนาขึ้นเพื่อเพิ่มประสิทธิภาพในการทำงาน โดยเฉพาะการลดช่วงเวลาที่เครื่องต้องรอเหตุการณ์จากภายนอกซึ่งไม่จำเป็น ระบบแรกที่นำแนวคิดนี้มาใช้คือ DYSEAC ซึ่งเสร็จสมบูรณ์ในปี ค.ศ. 1954 (พ.ศ. 2497) แม้ว่าระบบก่อนหน้านี้จะมีฟังก์ชันบางอย่างในการจับข้อผิดพลาด และจัดการกับเหตุการณ์บางอย่าง แต่ยังไม่ได้ใช้งาน Interrupt โดยตรงเหมือนกับระบบนี้
ภาพจาก : https://en.wikipedia.org/wiki/SEAC_%28computer%29#/media/File:SEACComputer_020.jpg
การใช้ Interrupt อย่างเป็นทางการเริ่มต้นจากคอมพิวเตอร์ UNIVAC 1103A ซึ่งเปิดตัวในปี ค.ศ. 1953 (พ.ศ. 2496) ถือเป็นคอมพิวเตอร์เครื่องแรกที่นำ Interrupt มาใช้ในการจัดการกระบวนการต่าง ๆ ในการทำงาน และตัวก่อนหน้าอย่าง UNIVAC I ที่เปิดตัวในปี ค.ศ. 1951 (พ.ศ. 2494) ก็ได้มีฟังก์ชันในการจัดการ Arithmetic Overflow ซึ่งเมื่อเกิดข้อผิดพลาดนี้ คอมพิวเตอร์จะเรียกใช้ Routine ที่กำหนดล่วงหน้า หรือสามารถหยุดการทำงานของเครื่องได้ตามตัวเลือกของโปรแกรมเมอร์
ภาพจาก : https://en.wikipedia.org/wiki/UNIVAC_1103#/media/File:UNIVAC-1103-BRL61-0905.jpg
ในปี ค.ศ. 1954 (พ.ศ. 2497) คอมพิวเตอร์ IBM 650 เป็นเครื่องแรกที่นำแนวคิด Interrupt Masking มาใช้ ซึ่งหมายถึงการป้องกันไม่ให้เกิดการขัดจังหวะจากสัญญาณ Interrupt ที่ไม่ต้องการในช่วงเวลาหนึ่ง การนำฟังก์ชันนี้มาใช้ช่วยให้ระบบสามารถควบคุมการหยุดทำงาน และขัดจังหวะต่าง ๆ ได้อย่างมีระเบียบมากขึ้น
ภาพจาก : https://upload.wikimedia.org/wikipedia/commons/0/07/IBM_650_EMMA.jpg
ในปีเดียวกัน DYSEAC ของ National Bureau of Standards ซึ่งเสร็จสมบูรณ์ในปี ค.ศ. 1954 (พ.ศ. 2497) ได้กลายเป็นระบบแรกที่ใช้ Interrupt ในการจัดการการสื่อสารกับอุปกรณ์ I/O (Input/Output) หรือการรับส่งข้อมูลกับอุปกรณ์ภายนอก เช่น เครื่องพิมพ์ หรืออุปกรณ์จัดเก็บข้อมูล ซึ่งช่วยเพิ่มความสามารถในการตอบสนอง และประสิทธิภาพในการทำงานของระบบ
ในปี ค.ศ. 1957 (พ.ศ. 2500) คอมพิวเตอร์ IBM 704 ได้พัฒนา Interrupt สำหรับการดีบัก (Debugging) โดยมีฟังก์ชันที่เรียกว่า "Transfer Trap" ซึ่งช่วยให้คอมพิวเตอร์สามารถเรียกใช้รูทีนพิเศษได้เมื่อคำสั่งกระโดด (branch instruction) ถูกพบในการทำงาน วิธีนี้ทำให้โปรแกรมเมอร์สามารถตรวจสอบ และแก้ไขข้อผิดพลาดในโปรแกรมได้ง่ายขึ้น
ภาพจาก : https://www.zl2al.com/wp-content/uploads/2012/10/IBM704-3.jpg
สุดท้าย ในปี ค.ศ. 1957 (พ.ศ. 2500) TX-2 ของ MIT Lincoln Laboratory กลายเป็นระบบแรกที่รองรับการจัดการ Interrupt หลายระดับ หรือ Multiple Levels Of Priority Interrupts ซึ่งช่วยให้สามารถจัดลำดับความสำคัญของ Interrupt ต่าง ๆ ได้อย่างมีประสิทธิภาพ โดยสามารถตอบสนองกับสัญญาณ Interrupt ได้ตามลำดับความสำคัญของแต่ละงาน ช่วยให้การประมวลผล และการจัดการกระบวนการต่าง ๆ เป็นไปอย่างรวดเร็ว และแม่นยำยิ่งขึ้น
ภาพจาก : https://www.tumblr.com/engineeringhistory/75896878597/mit-lincoln-laboratory-tx-2-computer-used-by-ben
การเกิด Interrupt ในระบบคอมพิวเตอร์สามารถเกิดขึ้นได้จากเหตุการณ์ที่เกี่ยวข้องกับทั้ง ซอฟต์แวร์ และ ฮาร์ดแวร์ ของคอมพิวเตอร์ ซึ่งแบ่งออกเป็น 2 ประเภทหลัก ๆ คือ ซอฟต์แวร์ Interrupt (Software Interrupt) และ ฮาร์ดแวร์ Interrupt (Hardware Interrupt) มาดูรายละเอียดของแต่ละประเภทกัน
ภาพจาก : https://en.m.wikipedia.org/wiki/Interrupt
ซอฟต์แวร์ Interrupt หรือบางครั้งเรียกว่า Trap หรือ Exception คือ การขัดจังหวะ ที่เกิดจากการทำงานของซอฟต์แวร์ ซึ่งมักจะเกิดขึ้นเมื่อมีข้อผิดพลาด หรือเมื่อระบบต้องการทำงานบางอย่างที่ไม่สามารถทำได้ในเวลานั้น เช่น การเรียกใช้ฟังก์ชันจากระบบ (System Call) หรือเกิดข้อผิดพลาดจากคำสั่งที่ไม่ถูกต้อง
ภาพจาก : https://golangdocs.com/ways-to-learn-coding-software-engineer
และเมื่อเกิด ซอฟต์แวร์ Interrupt โปรเซสเซอร์จะหยุดการทำงานในขณะนั้น และสลับไปยัง Interrupt Handler ซึ่งเป็นโปรแกรมที่ถูกเขียนขึ้นมาเพื่อจัดการกับเหตุการณ์ที่เกิดขึ้น ไม่ว่าจะเป็นการแก้ไขข้อผิดพลาด หรือดำเนินการตามคำสั่งที่ระบบต้องการ หลังจากที่ทำการจัดการเสร็จแล้ว ระบบจะคืนการควบคุมกลับไปยังโปรแกรมที่ถูกหยุดไว้
ตัวอย่างการใช้ ซอฟต์แวร์ Interrupt ที่เห็นได้ชัดคือการใช้คำสั่ง fork() ซึ่งเป็น System Call ที่เรียก Interrupt หรือกรณีที่เกิดการ หารด้วยศูนย์ ที่เป็นไปไม่ได้ซึ่งถือเป็นข้อผิดพลาดที่ทำให้เกิด Exception และต้องเรียกใช้ ซอฟต์แวร์ Interrupt เพื่อจัดการ ในการสร้าง ซอฟต์แวร์ Interrupt จะใช้คำสั่งที่เรียกว่า Interrupt Instruction เมื่อคำสั่งนี้ถูกใช้งาน โปรเซสเซอร์จะหยุดการทำงานปัจจุบัน และสลับไปยังรหัสของ Interrupt Handler ที่ได้กำหนดไว้นั่นเอง
ในกรณีของ ฮาร์ดแวร์ Interrupt ทุกอุปกรณ์ที่เชื่อมต่อกับระบบจะมีการเชื่อมต่อกับ Interrupt Request Line ซึ่งเป็นสายเส้นเดียวที่ใช้สำหรับทุกอุปกรณ์ในระบบ เมื่ออุปกรณ์ต้องการขอ Interrupt จะทำการปิดสวิตช์ที่เชื่อมโยงกับอุปกรณ์นั้น ๆ จากนั้นค่า INTR จะเป็นผลรวมจากคำขอ Interrupt ของแต่ละอุปกรณ์ที่ส่งเข้ามา
ฮาร์ดแวร์ Interrupt สามารถแบ่งออกเป็น 2 ประเภทหลัก ได้แก่
เป็น Interrupt ที่สามารถเปิด หรือปิดได้ตามต้องการ โดยการใช้ Interrupt Mask Register ที่มักพบในโปรเซสเซอร์ ซึ่งในตัว รีจิสเตอร์ จะมีบิตที่เกี่ยวข้องกับสัญญาณ Interrupt ของแต่ละอุปกรณ์ เมื่อบิตถูกตั้งค่าเป็น 1 จะอนุญาตให้มีการ Interrupt หากตั้งค่าเป็น 0 การทำงานของ Interrupt จะถูกปิด ในบางระบบอาจมีการทำงานที่ตรงข้ามกัน
ภาพจาก : https://www.sciencedirect.com/topics/computer-science/maskable-interrupt
เป็น Interrupt ที่เกิดขึ้นโดยไม่มีแหล่งที่มาชัดเจน หรือที่เรียกว่า Phantom Interrupt หรือ Ghost Interrupt ซึ่งมักจะเกิดขึ้นเมื่อวงจร Wired-OR interrupt เชื่อมต่อกับอินพุตของโปรเซสเซอร์ที่ไวต่อระดับ (Level-Sensitive Processor Input) ปรากฏการณ์นี้ทำให้เกิด Interrupt โดยไม่มีเหตุผลที่แท้จริง ซึ่งอาจทำให้ยากในการตรวจสอบ หรือแก้ไขเมื่อระบบเกิดปัญหา หรือทำงานผิดพลาด
ทั้ง ซอฟต์แวร์ Interrupt และฮาร์ดแวร์ Interrupt มีบทบาทสำคัญในการช่วยให้ระบบคอมพิวเตอร์ทำงานได้อย่างมีประสิทธิภาพ ซอฟต์แวร์ Interrupt จะช่วยจัดการกับข้อผิดพลาด และการเรียกใช้ฟังก์ชันจากระบบ ในขณะที่ ฮาร์ดแวร์ Interrupt ช่วยให้ระบบสามารถจัดการกับคำขอจากอุปกรณ์ต่าง ๆ ได้
การทำงานของ Interrupt มีขั้นตอนการทำงานดังนี้
ภาพจาก : https://www.geeksforgeeks.org/interrupts/
กระบวนการเริ่มต้นเมื่อ อุปกรณ์ ตัวอย่างง่าย ๆ เช่น เมาส์, คีย์บอร์ด หรือฮาร์ดดิสก์ ส่งคำขอ Interrupt ไปยังโปรเซสเซอร์ คำขอเหล่านี้อาจเกิดขึ้นจากเหตุการณ์ต่าง ๆ เช่น การกดปุ่มบนคีย์บอร์ด หรือการเสร็จสิ้นของการถ่ายโอนข้อมูลจากฮาร์ดดิสก์ ซึ่งอุปกรณ์แต่ละตัวจะมีสัญญาณ Interrupt ของตัวเองที่ถูกส่งไปยังโปรเซสเซอร์
เมื่อโปรเซสเซอร์ได้รับคำขอ Interrupt จากอุปกรณ์ จะทำการหยุดการทำงานของโปรแกรมที่กำลังทำอยู่ และ บันทึกสถานะ ของโปรแกรมปัจจุบันเอาไว้ โดยสถานะที่ถูกบันทึกนั้นรวมถึงค่าของ รีจิสเตอร์ และโปรแกรมเคาท์เตอร์เตอร์ (PC) ซึ่งจะช่วยให้โปรเซสเซอร์สามารถกลับมาทำงานจากจุดเดิมได้หลังจากเสร็จสิ้นการจัดการกับ Interrupt
หลังจากที่โปรเซสเซอร์หยุดการทำงานแล้ว ระบบจะทำการ ยืนยันคำขอ Interrupt ไปยังอุปกรณ์ที่ส่งคำขอว่าได้รับแล้ว และอุปกรณ์นั้นจะยกเลิกการส่งสัญญาณ Interrupt ต่อไป การยืนยันนี้เป็นการบอกอุปกรณ์ว่าโปรเซสเซอร์รับรู้คำขอแล้ว และจะเริ่มดำเนินการต่อ
โปรเซสเซอร์จะ สลับไปยังฟังก์ชันจัดการ Interrupt หรือ Interrupt Handler ที่ถูกกำหนดไว้ ซึ่งฟังก์ชันนี้จะทำงานตามคำขอที่ได้รับ เช่น การรับข้อมูลจากอุปกรณ์ I/O หรือการจัดการข้อผิดพลาดที่เกิดขึ้นในขณะนั้น ในระหว่างที่โปรเซสเซอร์ทำการจัดการกับ Interrupt ระบบจะไม่ทำงานตามโปรแกรมเดิมที่หยุดไป แต่จะทำการจัดการ Interrupt ก่อน
เมื่อการจัดการกับ Interrupt เสร็จสิ้น ฟังก์ชัน Interrupt Service Routine (ISR) จะเสร็จสิ้นการทำงาน และโปรเซสเซอร์จะ กลับไปยังโปรแกรมที่ถูกหยุดไว้ เพื่อดำเนินการต่อจากจุดเดิมที่ถูกบันทึกไว้ก่อนหยุดการทำงาน การกลับไปทำงานตามปกตินี้ทำให้ระบบสามารถตอบสนองต่อคำขอจากอุปกรณ์ได้โดยไม่ต้องรอให้โปรแกรมที่กำลังทำอยู่นั้นเสร็จสมบูรณ์ก่อนนั้นเอง
ในการทำงานของ Interrupt สัญญาณที่ใช้ในการกระตุ้น (trigger) จะมีรูปแบบการตอบสนองที่แตกต่างกัน โดยทั่วไปแล้วจะถูกแบ่งออกเป็นสองประเภทหลัก ๆ คือ Level-Trigger และ Edge-Trigger ซึ่งแต่ละประเภทจะมีวิธีการทำงานที่ต่างกันดังนี้
ภาพจาก : https://www.electricaltechnology.org/2024/07/difference-between-edge-triggering-and-level-triggering.html
การกระตุ้นแบบ Level-Trigger สัญญาณ Interrupt จะถูกกระตุ้นเมื่อสัญญาณนั้นถูกตั้งอยู่ที่ระดับที่กำหนด (ระดับสูง หรือระดับต่ำ) และจะคงระดับนี้ไว้จนกว่าจะมีการปิดสัญญาณ หรือเปลี่ยนแปลงระดับ การกระตุ้น ซึ่งหมายความว่าอุปกรณ์จะส่งคำขอ Interrupt ตราบเท่าที่มันสามารถคงสัญญาณไว้ในระดับที่ระบุ เช่น ระดับสูง (High) หรือระดับต่ำ (Low) ในช่วงเวลาหนึ่ง
ในกรณีของการกระตุ้นแบบ Edge-Trigger การกระตุ้นจะเกิดขึ้นเมื่อมีการเปลี่ยนแปลงระดับสัญญาณจาก ต่ำไปสูง (rising edge) หรือจาก สูงไปต่ำ (falling edge) เมื่อเกิดการเปลี่ยนแปลงในขอบสัญญาณ (Edge) ของสัญญาณ Interrupt ระบบจะรับรู้การกระตุ้นทันที และจะเริ่มกระบวนการ Interrupt
เมื่อมีอุปกรณ์หลายตัวที่ส่งสัญญาณขอ Interrupt (IRQ) เข้ามาพร้อมกัน สิ่งที่คอมพิวเตอร์ต้องทำคือการหาวิธีเลือกว่าอุปกรณ์ใดควรจะได้รับคำร้องก่อน ซึ่งมีวิธีการต่าง ๆ ที่ใช้ในการตัดสินใจเลือกอุปกรณ์ที่จะให้ความสำคัญก่อน ได้แก่ Polling, Vectored Interrupts และ Interrupt Nesting ซึ่งแต่ละวิธีการมีรายละเอียดดังนี้
ในวิธี Polling ตัวโปรเซสเซอร์จะทำการตรวจสอบสัญญาณ IRQ ของอุปกรณ์ทั้งหมดทีละตัว โดยเลือกอุปกรณ์ที่พบว่ามีสัญญาณ IRQ ตั้งค่าไว้เป็นตัวแรกที่ควรได้รับการบริการ ซึ่งวิธีนี้เป็นการตรวจสอบอย่างง่ายและตรงไปตรงมา แต่มันมีข้อเสียตรงที่ต้องใช้เวลาในการตรวจสอบสัญญาณ IRQ ของทุกอุปกรณ์ แม้ว่าจะมีบางอุปกรณ์ที่ไม่ได้ร้องขอการ Interrupt ก็ตาม
วิธี Vectored Interrupts จะทำให้แต่ละอุปกรณ์ที่ต้องการ Interrupt สามารถระบุถึงตัวเองได้โดยตรง อุปกรณ์นั้นจะส่งรหัสพิเศษ หรือที่เรียกว่า Interrupt Vector ไปยังโปรเซสเซอร์ผ่านบัส ซึ่งโปรเซสเซอร์สามารถใช้รหัสนี้ในการระบุว่าเป็นอุปกรณ์ตัวไหนที่ได้สร้างสัญญาณ Interrupt ขึ้นมา รหัสพิเศษนี้อาจเป็นที่อยู่เริ่มต้นของ Interrupt Service Routine (ISR) หรือที่ตั้งของ ISR ในหน่วยความจำ ซึ่งช่วยให้โปรเซสเซอร์สามารถเข้าถึง และดำเนินการต่อกับ ISR ของอุปกรณ์นั้นได้อย่างรวดเร็ว
ในวิธี Interrupt Nesting อุปกรณ์ I/O จะถูกจัดระเบียบในลำดับความสำคัญ (Priority) ซึ่งหมายความว่าเมื่อมีการร้องขอ Interrupt จากอุปกรณ์หลายตัว ระบบจะยอมรับคำขอจากอุปกรณ์ที่มีความสำคัญสูงกว่าและจะละเลยคำขอจากอุปกรณ์ที่มีความสำคัญต่ำกว่า การตั้งค่าความสำคัญนี้จะถูกกำหนดไว้ในบางบิตของ Process Status Register (PS) และสามารถเปลี่ยนแปลงได้โดยคำสั่งในโปรแกรม
ในขณะที่โปรเซสเซอร์ทำงานในโหมด Supervised Mode (โหมดที่โปรแกรมระบบปฏิบัติการทำงาน) มันจะยอมรับการ Interrupt จากอุปกรณ์ที่มีความสำคัญสูงสุดเท่านั้น แต่เมื่อสลับไปสู่โหมด User Mode (โหมดที่โปรแกรมทั่วไปทำงาน) การจัดลำดับความสำคัญอาจจะไม่ค่อยมีผลมากเท่าไหร่
Interrupt Latency คือ ระยะเวลาที่ใช้ตั้งแต่เกิดการร้องขอ Interrupt ไปจนถึงเมื่อมันได้รับการจัดการ ปัจจัยที่ส่งผลต่อ Interrupt latency ได้แก่ จำนวนการร้องขอ Interrupt ที่เกิดขึ้น, จำนวน Interrupt ที่สามารถจัดการได้ และระยะเวลาที่ใช้ในการจัดการแต่ละ Interrupt ตัวอย่างเช่น ถ้าเครื่องพิมพ์กำลังพิมพ์อยู่ และคอมพิวเตอร์ต้องหยุดการทำงานของโปรแกรมเพื่อรอให้พิมพ์เสร็จ การหยุดชั่วคราวนี้คือ Interrupt Latency ซึ่งระยะเวลาที่ใช้ในการหยุด และรอให้เครื่องพิมพ์เสร็จสมบูรณ์จะถูกเรียกว่า Interrupt Latency นั่นเอง
ภาพจาก : https://takethenotes.com/interrupt-latency/#google_vignette
Interrupts มีประโยชน์หลายประการที่ช่วยเพิ่มประสิทธิภาพการทำงานของระบบคอมพิวเตอร์ ช่วยให้ระบบสามารถตอบสนองต่อเหตุการณ์ หรือสัญญาณจากภายนอกได้ทันที ซึ่งสำคัญมากในงานที่ต้องการการประมวลผลแบบเรียลไทม์ นอกจากนี้ระบบที่ใช้ Interrupt ยังมีประสิทธิภาพสูงกว่าระบบที่ต้องใช้วิธีการตรวจสอบสถานะตลอดเวลา (Polling) เพราะ Interrupt จะให้โปรเซสเซอร์หยุดทำงานจนกว่าเหตุการณ์จะเกิดขึ้น ทำให้ประหยัดพลังงาน และลดการใช้งานของระบบ
ภาพจาก : https://witscad.com/course/computer-architecture/chapter/cpu-interrupts-and-interrupt-handling
เมื่อใช้ Interrupt ยังช่วยให้ สามารถทำงานหลายงานพร้อมกัน (Multitasking) โดยโปรเซสเซอร์สามารถจัดการกับงานหลาย ๆ อย่างพร้อมกัน สุดท้ายการใช้ Interrupt ยังช่วย เพิ่มอัตราการทำงานของระบบ (Throughput) เพราะสามารถให้ระบบประมวลผลไปพร้อม ๆ กับการทำงานอื่น ๆ เช่น การอ่านข้อมูลจากอุปกรณ์ ทำให้ประสิทธิภาพโดยรวมดีขึ้นนั่นเอง
สรุปแล้ว Interrupts ก็คือหัวใจสำคัญที่ช่วยให้ระบบคอมพิวเตอร์ทำงานได้อย่างคล่องตัว และมีประสิทธิภาพ การใช้ Interrupts ไม่เพียงแต่ช่วยลดภาระในการตรวจสอบสถานะที่ไม่จำเป็น แต่ยังทำให้โปรเซสเซอร์สามารถทำงานได้อย่างราบรื่นในทุกสถานการณ์ สิ่งนี้ทำให้การใช้งานระบบคอมพิวเตอร์ในปัจจุบันมีความยืดหยุ่น และมีความสามารถในการจัดการงานได้หลากหลายยิ่งขึ้น จึงไม่แปลกใจที่ Interrupts จะกลายเป็นเครื่องมือที่ขาดไม่ได้อุปกรณ์อิเล็กทรอนิกส์ที่มีประสิทธิภาพสูง และพวกเราก็ใช้งานมันอยู่ในทุก ๆ วันนั่นเอง
|