ซีพียูที่มีความทันสมัยมาตรฐานและใช้งานทั่วไปทั้งหมดทำงานได้ดังนี้:
- ซีพียูรักษาทะเบียนที่ชี้ในพื้นที่ที่อยู่เพื่อการเรียนการสอนต่อไป
- CPU ดึงข้อมูลอะไรก็ตามที่อยู่ในพื้นที่ที่อยู่นั้นและส่วนเพิ่มที่ลงทะเบียน
- หากคำสั่งต้องการข้อมูลเพิ่มเติมเช่นที่อยู่ปลายทางหรือตัวถูกดำเนินการอื่น ๆ ก็จะถูกดึงข้อมูล
- CPU ดำเนินการคำสั่ง
- หากคำสั่งคือการกระโดดโทรกลับส่งคืนจากการขัดจังหวะหรือสาขามันอาจแก้ไขการลงทะเบียนที่ชี้ไปที่คำสั่งต่อไป
- ทำซ้ำ
CPU ดึงข้อมูลอะไรก็ตามที่อยู่ในพื้นที่ที่อยู่นั้นและส่วนเพิ่มที่ลงทะเบียน
สิ่งที่ "สด" ในพื้นที่ที่อยู่?
- ไม่มีอะไร (สามารถคืนค่าเป็นศูนย์สุ่มข้อมูลหรือทำให้ CPU ล็อกได้)
- RAM (RAM บนเมนบอร์ด, RAM จากอุปกรณ์ PCI เช่นอะแดปเตอร์กราฟิก ฯลฯ )
- รอม
- การลงทะเบียนอุปกรณ์ I / O (ซึ่งรวมถึง "อุปกรณ์ I / O ภายใน" เช่น APIC ของ CPU ในตัวเครื่อง)
- CPU สมัยใหม่อนุญาตให้ "cache as RAM" ดังนั้นส่วนหนึ่งของแคช CPU สามารถปรากฏในพื้นที่ที่อยู่
แจ้งให้ทราบ "ฮาร์ดดิสก์" ไม่ได้อยู่ในรายการนั้น ฮาร์ดดิสก์ไม่ได้เชื่อมต่อกับ CPU โดยตรง ข้อมูลเข้าและออกจากฮาร์ดดิสก์ผ่านอุปกรณ์ I / O (อะแดปเตอร์โฮสต์ SATA) ที่เชื่อมต่อกับ CPU
อุปกรณ์ I / O ใช้ DMA เพื่อโหลด / บันทึกข้อมูลไปยัง / จากฮาร์ดดิสก์ ซึ่งหมายความว่าอุปกรณ์ I / O อ่าน / เขียน RAM เองโดยตรงโดยไม่ต้องมีการแทรกแซงของ CPU และยังต้องพึ่งพา RAM ที่อยู่ที่นั่น แต่ถ้าข้อมูลยังไม่ถูกโหลดลงใน RAM โดยอุปกรณ์ I / O CPU จะไม่มีโอกาสเห็น
ดังนั้นคุณจึงไม่สามารถมีคำสั่งดึงข้อมูล CPU ได้โดยตรงจากฮาร์ดดิสก์
เกิดอะไรขึ้นระหว่างความผิดพลาดหน้าคือ:
- CPU พยายามเข้าถึงหน้าหน่วยความจำที่มีการทำเครื่องหมายเป็นสลับในตารางหน้า CPU ภายในเครื่อง (ซึ่งจะปรากฏใน RAM เสมอ)
- การเข้าถึงนี้ทำให้เกิดข้อยกเว้นข้อผิดพลาดของเพจใน CPU
- CPU ตอนนี้อยู่ในโหมดเคอร์เนลดูหน้ากระบวนการอื่นกำลังพยายามเข้าถึง
- เคอร์เนลแจ้งให้ทราบว่ากระบวนการของผู้ใช้กำลังพยายามเข้าถึงหน้าที่สลับเปลี่ยนและเรียกใช้กระบวนการ I / O ปกติเพื่อสลับหน้านั้นกลับจากดิสก์ นี่เป็นกระบวนการเดียวกับที่จะใช้เมื่อทำการโหลด / บันทึกข้อมูลอื่น ๆ จากดิสก์ มันไม่ได้แตกต่างกันเพียงเพราะ CPU เป็นเพจในหน่วยความจำสลับ
- จากนั้นซีพียูจะควบคุมกลับไปยังกระบวนการที่ถูกขัดจังหวะซึ่งดำเนินต่อไปราวกับไม่มีอะไรเกิดขึ้น
ดังนั้นซีพียูจึงจำเป็นต้องได้รับข้อมูลจากดิสก์เพราะหน่วยความจำที่ถูกสลับออกมานั้นไม่แตกต่างกัน