Computer OS Architecture
Last updated
Last updated
Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University
จากรูปข้างล่างเป็นการอธิบายความเกี่ยวข้องกันขององค์ประกอบต่างๆของแต่ละระบบย่อยภายในคอมพิวเตอร์ ซึ่งได้แก่
หน่วยประมวลผลกลาง (Central Processing Unit - CPU)
หน่วยความจำหลัก (Main Memory)
อุปกรณ์อินพุทและเอาท์พุท (I/O Devices)
หน่วยเชื่อมต่อระหว่างระบบ (System Interconnection)
ในปัจจุบันคอมพิวเตอร์ส่วนใหญ่จะใช้หน่วยประมวลผลกลางมากกว่าหนึ่งตัว (multiple processors) ซึ่งเปลี่ยนแปลงมากจากสมัยก่อนที่มีเพียงตัวเดียว แต่อย่างไรก็ตามส่วนที่มีองค์ประกอบซับซ้อนมากที่สุดก็คงหนีไม่พ้นตัวหน่วยประมวลผลกลาง (CPU) ที่ประกอบไปด้วยหน่วยภายในหลักๆดังแสดงในรูปข้างล่าง โดยมีรายละเอียดดังนี้
หน่วยควบคุม (Control Unit - CU) ทำหน้าที่ควบคุมการทำงานต่างๆของ CPU และแม้กระทั่งของเครื่องคอมพิวเตอร์เอง
หน่วยคำนวณและตรรกะ (Arithmetic and Logic Unit - ALU) ทำหน้าที่หลักในการประมวลผลข้อมูลต่างๆ
รีจิสเตอร์ (Register) ทำหน้าที่เป็นตัวเก็บค่าภายใน CPU
ส่วนสื่อสารภายใน CPU (CPU Interconnection) ทำหน้าที่เป็นตัวเชื่อมโยงการสื่อสารระหว่างหน่วยต่างๆภายใน CPU
การทำงานภายในคอมพิวเตอร์ 80x86 จะติดต่อกับหน่วยความจำโดยผ่าน bus controller ดังที่ได้แสดงในรูปข้างล่าง โดย bus controller นี้จะทำการแปลความหมายของสัญญาณของหน่วยประมวลผลกลางและสร้างสัญญาณของหน่วยความจำที่ต้องการทั้งสองเส้น output หลักนี้จะต่างกันตรงที่จะเป็นขบวนการอ่านหรือขบวนการเขียนและแตกต่างกันตรงที่เป็นการเข้าถึงหน่วยความจำแบบตรงหรือ แบบ isolated
ข้อมูลที่จะโอนย้ายทุกตัวจะต้องมีแหล่งส่งข้อมูล และแหล่งรับข้อมูลเสมอ ซึ่งในขบวนการต่าง ๆ จะมีหลักสำคัญอยู่ว่า ข้อมูลนั้นเป็นแอดเดรส หรือดาต้า, จะส่งไปยังจุดไหน เช่นส่งไปยังหน่วยความจำ หรืออุปกรณ์ I/O และจะส่งเมื่อไหร่ ขบวนการเหล่านี้ในขบวนการทั่ว ๆ ไปจะต้องมีสัญญาณในการตรวจสอบอุปกรณ์พร้อมที่จะส่งหรือรับข้อมูล หรือยังก่อนเสมอ ซึ่งจุดส่งข้อมูลและจุดรับข้อมูลจะต้องมีสัญญาณตรวจสอบความพร้อมเสมอเพื่อให้ข้อมูลมีการใช้งานอย่างเป็นระเบียบ เช่น ส่งจากซีพียูไปยังอุปกรณ์รอบข้าง เป็นต้น ซึ่งจุดรับส่งคู่หนึ่ง ๆ อาจจะเป็นระหว่างซีพียูด้วยกัน, ซีพียูกับหน่วยความจำ, ซีพียูกับอุปกรณ์รอบข้าง, ระหว่างอุปกรณ์รอบข้างด้วยกัน, หรือระหว่างหน่วยความจำกับอุปกรณ์รอบข้าง ก็ได้ โดยข้อมูลที่โอนย้ายไปมานั้นจะอยู่ในลักษณะของเลขฐานสอง เช่น 0011010 เลขแต่ละตัวแทนด้วย 1 บิท (bit) อาจจะเป็น 8 บิท หรือ 16 บิท ก็ขึ้นอยู่กับระบบนั้น ๆ
Oparating System (OS) หรือระบบปฏิบัติการนั้นเป็นตัวช่วยจัดการ การติดต่อระหว่างผู้ใช้และฮาร์ดแวร์รวมถึงการจัดสรรทรัพยากร ไม่ให้ฮาร์ดแวร์รับภาระหนักเกินไป ดังนั้นถ้าเราเลือก OS ที่ดีประสิทธิภาพการทำงานของคอมพิวเตอร์ก็จะดียิ่งขึ้น
BIOS : Basic Input/Output เป็น ควบคุมการติดต่อเบื้องต้นอุปกรณ์คอมพิวเตอร์กับคอมพิวเตอร์
Operating System คือ ระบบปฏิบัติการที่เป็น สื่อกลาง ระหว่างคนกับคอมพิวเตอร์
Operating System commands คือ คำสั่งเฉพาะที่ใช้ระบบปฏิบัติการ
Appication programs คือ โปรแกรมทั่วไปที่อยูบนระบบปฏิบัติการ
BIOS หรือที่ย่อมาจาก Basic Input/Output System จะมีการสื่อสารกันโดยตรงกับอุปกรณ์ที่ติดต่อกับคอมพิวเตอร์ BIOS จะประกอบด้วยกลุ่มของโปรแกรมที่ใช้ในการติดต่อกับอุปกรณ์ อย่างเช่น คีย์บอร์ด จอภาพ เครื่องพิมพ์ พอร์ตอนุกรมและฮาร์ดดิสก์ ซึ่งโปรแกรมเหล่านี้จะอนุญาตให้ผู้ใช้งานสามารถเขียนฟังก์ชั่นเพื่อเรียกใช้งานได้โดยไม่ต้องกังวลว่าจะต้องควบคุมอุปกรณ์นั้นอย่างไรหรือทราบชนิดของอุปกรณ์ที่ต้องการจะใช้งาน ถ้าปราศจาก BIOS แล้วระบบภายในคอมพิวเตอร์ก็จะมีแค่สายไฟฟ้าที่ต่อระโยงระยางไปมาและอุปกรณ์อิเล็กทรอนิกส์
BIOS จะประกอบด้วยส่วนหลักๆ อยู่ 2 ส่วน ได้แก่ ส่วนที่หนึ่งคือหน่วยความจำแบบถาวร (ROM BIOS) ที่ใช้เก็บฟังก์ชั่นที่เกี่ยวกับการเริ่มทำงานของคอมพิวเตอร์ (Boot) และบรรจุโปรแกรมที่ใช้สื่อสารกับอุปกรณ์ภายในคอมพิวเตอร์เองและในส่วนที่สองเป็นหน่วยความจำแบบไม่ถาวร (Non-permanent) จะใช้เก็บระบบปฏิบัติการ
ซึ่งระบบปฏิบัติการจะอนุญาตให้ผู้ใช้สามารถที่จะเรียกใช้งานอุปกรณ์ได้อย่างง่ายดายยิ่งขึ้น ระบบปฏิบัติการจะคอยรับคำสั่งจากคีย์บอร์ดและแสดงผลลัพธ์ออกทางจอภาพ ในระบบการจัดการกับ Disk หรือที่เรียกว่า DOS (Disk Operating System) จะมีการรวบรวมคำสั่งที่สำคัญที่จะทำการติดต่อกับตัวควบคุม (Controller) ที่จะเข้าเรียกใช้งาน Disk Drive ภาษาบนระบบปฏิบัติการ DOS จะประกอบด้วยกลุ่มของคำสั่งที่ถูกป้อนจากผู้ใช้และผ่านการแปรความ (Interpret) เพื่อที่จะดำเนินการกับงานที่จัดการกับแฟ้มข้อมูลเหล่านั้นซึ่งขั้นตอนเหล่านี้ ระบบปฏิบัติการจะเป็นตัวที่ทำหน้าที่ติดต่อเรียกใช้งานกับ BIOS เองโดยตรง หน้าที่หลักของระบบปฏิบัติการ DOS ก็คือใช้ในการรันโปรแกรมคัดลอกและลบแฟ้มข้อมูล สร้างไดเรกทอรีเคลื่อนย้ายแฟ้มข้อมูลและแสดงรายชื่อแฟ้มข้อมูลความสัมพันธ์ระหว่างอุปกรณ์, BIOS, DOS และ โปรแกรมประยุกต์ดังแสดงในรูปด้านบน
เมื่อ I/O เริ่มทำงาน CPU จะ load register ที่จำเป็นมาไว้ใน device controller ซึ่ง device controller จะทำการตรวจสอบ register เหล่านั้น เพื่อกำหนดว่าจะทำงานอะไร เช่น ถ้าพบร้องขอให้อ่านข้อมูล controller จะเริ่มโอนย้ายข้อมูลจาก device ไปไว้ที่ local buffer เมื่อโอนย้ายข้อมูลเสร็จ device controller จะบอก CPU ว่าทำงานเสร็จแล้ว การติดต่อสื่อสารนี้จะสำเร็จได้โดยสัญญาณขัดจังหวะ
Synchronous I/O
เมื่อการรับส่งข้อมูลเริ่มขึ้นการจะโยกย้ายการควบคุมให้กับโปรแกรมของผู้ใช้จะทำได้หลังจากเสร็จสิ้นการรับส่งข้อมูลเท่านั้นในการรอรับส่งข้อมูลเสร็จ มี 2 วิธี
1. คอมพิวเตอร์บางเครื่องมีชุดคำสั่ง wait พิเศษซึ่งปล่อยให้ CPU ว่างจนกระทั่งเกิดสัญญาณขัดจังหวะถัดไป
2. เครื่องจักรที่ไม่มีชุดคำสั่งดังกล่าวอาจจะมี wait loop
loop
นี้จะวนรอบไปเรื่อย ๆ จนกระทั่งเกิดสัญญาณขัดจังหวะก็จะโอนย้ายการควบคุมไปส่วนอื่น ๆ ของระบบปฏิบัติการ ถ้า CPU ต้องรอให้รับส่งข้อมูลเสร็จงานก่อนเสมอแสดงว่าต้องมีการร้องขอของ I/O อยู่หนึ่งตัวที่เด่นอยู่ตลอดเวลาดังนั้นเมื่อเกิดสัญญาณการขัดจังหวะการรับส่งข้อมูล ระบบปฏิบัติการจะรู้ทันทีว่าอุปกรณ์กำลังถูกขัดจังหวะ แต่ไม่สามารถประมวลผล I/O device หลาย ๆ ตัวพร้อมกันได้ ตัวอย่างของระบบนี้คือ ระบบปฏิบัติการ MS-DOS เวลาสั่งพิมพ์ ต้องรอเสร็จงานก่อนถึงจะทำงานต่อไปได้
Asynchronous I/O
เมื่อการรับส่งข้อมูลเริ่มขึ้นการโยกย้ายการควบคุมให้กับโปรแกรมของผู้ใช้ทำได้โดยไม่ต้องรอให้การรับส่งข้อมูลเสร็จ
System call (คำสั่งของขอระบบปฏิบัติการ) อนุญาตให้โปรแกรมของผู้ใช้รอคอยให้รับส่งข้อมูลเสร็จ
ตารางที่ระบบปฏิบัติการใช้เก็บบันทึกของอุปกรณ์รับส่งข้อมูลแต่ละตัว คือ device-status table ซึ่งใช้แสดงชนิดของอุปกรณ์ ที่อยู่(address) และ สถานภาพ(state) (ว่าง , กำลังทำงาน หรือเสีย)
เมื่อเกิดสัญญาณขัดจังหวะระบบปฏิบัติการจะตรวจสอบดูว่าสัญญาณขัดจังหวะมาจากอุปกรณ์รับส่งข้อมูลตัวไหน แล้วชี้ไปยังตารางของอุปกรณ์รับส่งข้อมูลนั้นเพื่อตรวจสอบสถานะของอุปกรณ์นั้น เพื่อปรับปรุงค่าในตารางให้ถูกต้องตามสัญญาณขัดจังหวะนั้น ถ้ามีคิวของอุปกรณ์อยู่ ระบบปฏิบัติการก็จะทำงานตามการร้องขอถัดไป เมื่อเสร็จก็จะคืนการควบคุมไปทำงานเดิมที่ถูกขัดจังหวะ เช่น โปรแกรมกำลังรอผลลัพธ์จากอุปกรณ์รับส่งข้อมูลอยู่ก็จะทำงานต่อไปได้เลย ข้อดีของ asynchronous I/O คือ การเพิ่มประสิทธิภาพของระบบ ตัวอย่างของระบบนี้ เช่น Windows เวลากำลังพิมพ์งาน เราจะทำการยกเลิกงานที่พิมพ์อยู่ทันทีได้
เทคนิคหลักๆ 2 แบบ ที่ใช้กันในการสื่อสารข้อมูลคือ การโพล I/O (Polled I/O) และการอินเตอร์รัพท์ I/O โดยมีรายละเอียดดังนี้
ในระบบไมโครคอมพิวเตอร์ การโพลบางครั้งใช้ในการส่งผ่านข้อมูลระหว่างเทอร์มินัลกับซีพียู แต่ในกรณีที่ข้อมูล (ในลักษณะเป็นไบท์) ที่ส่งจากคีย์บอร์ดเข้าไปยังซีพียู การไหลของข้อมูลไม่สม่ำเสมอและซีพียูไม่สามารถทำนายว่าข้อมูลตัวใหม่จะมาถึงเมื่อใด ซึ่งจุดบกพร่องของการโพลแต่สามารถแก้ไขได้โดยให้ทำการตรวจสอบคีย์บอร์ดว่ามีข้อมูลส่งเข้ามาหรือไม่ โดยจะทำการตรวจสอบตลอดเวลาและจะต้องจัดการกับข้อมูลที่รับเข้ามาด้วยความเร็วที่สูงกว่าอัตราเร็วของข้อมูลที่ส่งเข้ามาทางคีย์บอร์ดเพื่อไม่ให้พลาดในการรับข้อมูลได้
สำหรับในกรณีที่ซีพียูส่งสัญญาณการโพลออกไปตรวจสอบแล้วพบว่ามีข้อมูลที่ต้องการส่งเข้ามาในกรณีจะเรียกว่า "Wet Poll" แต่ในกรณีที่โพลไปแล้วไม่มีข้อมูลจะเรียกว่า “Dry Poll” ซึ่งในส่วนนี้จะสูญเปล่าเวลากับซีพียูไปถึง 90 เปอร์เซ็นต์ ต่อมาได้มีการเสนอเทคนิคใหม่เพื่อหลีกเลี่ยงการสูญเปล่าของเวลาที่เรียกว่าเทคนิคการโพลแบบ Round Robin
ในขบวนการอินเตอร์รัพท์ อุปกรณ์รอบข้างทุกชิ้นจะต้องปฏิบัติงานอยู่เสมอแล้วทำการส่งสัญญาณไปให้แก่ซีพียูซึ่งตัวมันเองพร้อมที่จะส่ง/รับข้อมูลได้แล้ว ซึ่งถ้าเราจะเปรียบเทียบระหว่างกระบวนการโพลกับการอินเตอร์รัพท์ สมมติตัวอย่างการรับโทรศัพท์เช่นในกรณีมีคนรอรับโทรศัพท์อยู่ ถ้าใช้วิธีการโพลลิ่งก็จะต้องคอยยกหูโทรศัพท์ถามว่ามีใครกำลังโทรศัพท์มาหาหรือไม่แบบอยู่ตลอดเวลา ดังนั้นจึงไม่จำเป็นต้องตั้งเสียงเรียกเข้าโทรศัพท์อยู่ตลอดเวลา แต่ถ้าเป็นวิธีการของการอินเตอร์รัพท์โทรศัพท์ของเราจะต้องมีการตั้งเสียงเรียกเช้าไว้ และคอยจนกว่าจะมีใครโทรศัพท์มาหา โดยมีเสียงเรียกเข้าดังขึ้น ผู้รับก็รู้ได้ทันทีว่ามีคนโทรศัพท์มา แล้วจึงค่อยยกหูโทรศัพท์ขึ้นมา
ดังนั้นในลักษณะเดียวกันถ้าเราเปรียบโทรศัพท์เหมือนกับอุปกรณ์รอบข้าง ระบบโทรศัพท์จะต้องทำงานอยู่ตลอดเวลาเพื่อคอยรับสัญญาณเรียกแล้วสร้างเสียงกริ่งเตือนออกมา (เปรียบกับการอินเตอร์รัพท์) สาเหตุให้เกิดอิน-เทอร์รัพท์ ตัวอย่างเช่น โปรแกรมทำงานผิดพลาด (เกิดการ Overflow, Divide by zero), ตัว Timer ซึ่งเกิดจาก ซีพียูเอง, ตัว I/O Controller ส่งสัญญาณแจ้งการทำงานเสร็จสิ้นหรือเกิดผิดพลาด และ เกิดการทำงานผิดพลาดของอุปกรณ์ (Hardware failure) เช่น Power supply เสีย เป็นต้น การที่จะสร้าง Interrupt นั้นสามารถทำได้โดยใช้ Hardware และ Software ดังรูปข้างล่าง ถ้าอุปกรณ์ต้องการที่จะอินเตอร์รัพท์กับซีพียูอุปกรณ์จะทำการแจ้งไปยัง อุปกรณ์ที่เรียกว่า PIC (Programmable Interrupt Controller) ซึ่งตัว PIC จะเป็นตัวจัดการควบคุมว่าจะให้มีการติดต่อกับซีพียูหรือไม่ ถ้า PIC อนุญาตให้อุปกรณ์ติดต่อกับซีพียูได้ก็จะทำการเรียกไปยัง ISR (Interrupt Service Routine) ดังนั้น ISR ก็จะมีการติดต่อเกิดขึ้นกับอุปกรณ์ และ ดำเนินการกับข้อมูลเหล่านั้น ซึ่งเมื่อสิ้นสุดขบวนการ อินเตอร์รัพท์แล้วซีพียูก็จะกลับไปทำงานก่อนหน้านี้ต่อไป
Software Interrupt เกิดขึ้นจากตัวโปรแกรมเองทำการร้องขอ (Request) ไปยัง ISR ตัวอย่างที่เห็นกันทั่วๆไป อย่างเช่น การอ่านค่าปุ่ม จาก คีย์บอร์ด การแสดงผลตัวอักษรบนจอภาพ และการอ่านวันเวลาปัจจุบัน เป็นต้น
Interrupt Vector เป็นตำแหน่งที่อยู่ ที่จะบอกให้ตัวจัดการ interrupt (Interrupt Handler) ทราบตำแหน่งใน ISR ซึ่งสัญญาณ interrupt (INT) จะถูกกำหนดเป็นหมายเลขตั้งแต่ 0 ถึง 255 และจะถูกเก็บอยู่ในหน่วยความจำส่วนที่ต่ำกว่า 1024 byte อย่างเช่น
ซึ่ง 2 byte แรก (0004) จะเป็น offset และ 2 byte หลัง (0007) จะเป็น Segment Address จากตัวอย่างโปรแกรมภาษาซีที่ 1 สามารถแสดงตำแหน่งในหน่วยความจำของ ISR ซึ่งจากผลการรันโปรแกรมจะได้ผลลัพธ์ตำแหน่งของ ISR สำหรับ INT 0 คือ 0EE5 : 0158 และ INT หมายเลขอื่นๆ ตามลำดับขั้นตอนการตอบสนองต่อการอินเตอร์รัพท์
การทำงานของ CPU เมื่อเกิดการ interrupt มีดังนี้
หยุดการทำงานตรงขณะปัจจุบันไว้ก่อน
บันทึกตำแหน่งของคำสั่งถัดไป รวมทั้งข้อมูลต่างๆที่เกี่ยวข้องไว้ด้วย
กำหนดค่าใน Program Counter (PC) เป็น address ของ interrupt handler routine
ไปทำงาน interrupt handler routine
คืนค่าที่บันทึกไว้ในตอนแรก และกลับไปทำงานตามเดิม
จุดประสงค์ของการอินเตอร์รัพท์ก็คือ การทำให้ซีพียูพักจากการทำงานในโปรแกรมหลักไว้ชั่วคราว แล้วกระโดดไปทำงานในส่วนของโปรแกรมตอบสนองต่อการอินเตอร์รัพท์ (Interrupt Service Routines) และหลังจากเสร็จจากการทำงานในส่วนของโปรแกรมตอบสนองต่อการอินเตอร์รัพท์ แล้วก็จะกระโดดกลับไปทำงานตามโปรแกรมหลักต่อไป การที่ซีพียูจะจดจำตำแหน่งของคำสั่งในโปรแกรมหลักที่ทำค้างไว้ชั่วคราวได้นั้น CPU จะต้องมีการเก็บตำแหน่งเดิมนั้นไว้ที่สแต็คก่อน ซึ่งสามารถสรุปขั้นตอนได้ดังต่อไปนี้
อุปกรณ์ภายนอกส่งสัญญาณ INT เข้ามายังซีพียู
ถ้าซีพียูยอมให้มีการอินเตอร์รัพท์ได้หรือทำคำสั่ง EI (Enable Interrupt) ซีพียูก็จะตอบรับการขออิน-เตอร์รัพท์นั้นด้วย Interrupt Acknowledge Cycle
อุปกรณ์ภายนอกเมื่อรับรู้ว่า ซีพียูยอมให้มีการอินเตอร์รัพท์ได้ก็จะส่งอินเตอร์รัพท์เวกเตอร์เข้ามายังซีพียู
ซีพียูจะนำเอาอินเตอร์รัพท์เวกเตอร์นั้นมาเป็นตัวชี้ตำแหน่งของคำสั่งที่จะต้องกระโดดไปทำ (โดยซีพียูจะต้องเก็บสถานะของตำแหน่งในโปรแกรมหลักขณะนั้นไว้ในสแต็ค)
ซีพียูจะกระโดดไปปฏิบัติตามคำสั่ง ณ ตำแหน่งที่ชี้โดยอินเตอร์รัพท์เวกเตอร์ (เป็นอินเตอร์-รัพท์เซอร์วิสรูทีน)
ก่อนจบการทำงานตามโปรแกรมอินเตอร์รัพท์เซอร์วิสรูทีน ซีพียูก็จะดึงเอาตำแหน่งที่เก็บไว้ในสแต็คกลับมา แล้วกระโดดไปยังตำแหน่งนั้นแล้วทำตามคำสั่งในโปรแกรมหลักต่อไป
ข้อเปรียบเทียบของการอินเตอร์รัพท์กับการโพล
เราได้ทราบรายละเอียดของกระบวนการทั้งสองอย่างจากข้อมูลข้างต้นมาแล้ว ย่อมทราบดีว่าแต่ละกระบวนการข้อดีข้อเสีย ซึ่งก็ขึ้นกับว่าผู้ใช้จะประยุกต์ใช้วิธีไหนให้เกิดประโยชน์สูงสุด
ตาราง 2-1 เปรียบเทียบระหว่างการอินเตอร์รัพท์และการโพลลิ่ง
ประเภท | ข้อดี | ข้อเสีย |
---|---|---|
การโพลลิ่ง
อุปกรณ์ทางฮาร์ดแวร์ที่ใช้เป็นแบบง่าย ๆ
ซอฟท์แวร์ที่จะต้องเขียนขึ้นมาเพื่อใช้ในกระบวนการนี้ไม่ยุ่งยากและสามารถแก้ไขข้อบกพร่องได้ง่าย
1. 90 เปอร์เซ็นต์ของคาบเวลา (T) ถูกใช้ไปในการตรวจสอบพอร์ทต่างๆซึ่งเป็นการสูญเสียอย่างยิ่งถ้าเป็นกรณีของ dry poll ช่วงเวลาการคอยเพื่อที่จะทำการโพลค่อนข้างนาน
การอินเตอร์รัพท์
ซีพียูจะมีการพิจารณาการขออินเตอร์รัพทก็ต่อเมื่อมีสัญญาณการขออิน-เตอร์รัพท์ส่งเข้ามาเท่านั้น ทำให้ไม่ต้องเสียเวลาตรวจสอบไปเช่น ในกรณีเกิด dry poll
2. การตอบสนองต่อการอินเตอร์รัพท์จะเริ่มทันทีหลังจากได้รับสัญญาณอินเตอร์รัพท์รีเควส (Interrupt request) ซึ่งทำให้มีช่วงเวลาล่าช้าสั้น ๆ
1. เวลาที่ต้องใช้ในการตอบสนองต่อการขออินเตอร์รัพท์นานกว่าการโพลเพราะว่าอินเตอร์รัพท์เซอร์วิสรูทีน หรือโปรแกรมตอบสนองต่อการอินเตอร์รัพท์จะต้องมีขั้นตอนการบันทึกสถานะ (status) ของซีพียูก่อนและทำการเอ็กซ์ซีคิวส์คำสั่งต่าง ๆ โดยตรง
2. ต้องใช้อุปกรณ์ทางฮาร์ดแวร์ที่ซับซ้อนขึ้นในกรณีที่อุปกรณ์รอบข้างหลาย ๆ ชิ้นมีการขออินเตอร์รัพท์ พร้อม ๆ กันก็จะต้องมีการใช้เทคนิคของการจัดลำดับความสำคัญ (Priority) ให้แก่อุปกรณ์เหล่านั้นโดยชัดเจน คือจะต้องกำหนดชื่อของอุปกรณ์ต่าง ๆ ก่อน และในการสร้าง Contention resolution สามารถทำได้โดยการเพิ่มเติมอุปกรณ์ฮาร์ดแวร์