่ บทที 7 (ต่ อ ) ระบบหน่วยความจำ ระบบหน่วยความจำ เสมือน
46 Slides2.78 MB
่ บทที 7 (ต่ อ ) ระบบหน่วยความจำ ระบบหน่วยความจำ เสมือน (Virtual Memory)
ประเภทของการจัดการหน่วยความจำ
การจัดการหน่วยความจำ
ระบบหน่วยความจำเสมือน (Virtual Memory) การจัดการหน่วยความจำสามารถแบ่ง ออกเป็น 2 ประเภทใหญ่ ๆ – ระบบหน่วยความจำจริง ขนาดของโปรแกรมจะต้องไม่ใหญ่กว่า ขนาดของหน่วยความจำที่มอ ี ยู่ ลบด้วย ขนาดของหน่วยความจำที่เป็นส่วนของ OS – ระบบหน่วยความจำเสมือน ขนาดของโปรแกรมจะมีขนาดเท่าใดก็ได้
ระบบหน่วยความจำเสมือน (Virtual Memory) หน่วยความจำเสมือนมีขนาดใหญ่กว่าหน่วยความจำจริง
แนวคิดของหน่วยความจำเสมือน ผู้เขียนโปรแกรมหรือผู้ใช้จะไม่ถก ู จำกัดในเรื่องของ ขนาดของหน่วยความจำอีกต่อไป OS จะจัดการให้ผู้ใช้สามารถใช้หน่วยความจำได้ ี ยู่ มากกว่าหน่วยความจำจริงที่มอ โปรแกรมทัง ู ใช้งาน ้ โปรแกรมโดยส่วนใหญ่ไม่ได้ถก พร้อมกันทัง ้ หมด ซึ่งการทำงานของโปรแกรมจะเริม ่ ทำงานจากส่วนต้นโปรแกรม แล้วค่อย ๆ เลื่อนลง มาจนกระทั่งถึงท้ายโปรแกรม ในขณะที่โปรแกรมกำลังทำงานอยูท ่ ี่สว่ นต้น โปรแกรม ที่ปลายโปรแกรมก็ยง ั ไม่ถก ู ใช้งาน เมื่อ
แนวคิดของหน่วยความจำเสมือน ต่อ ดังนัน ่ ี่สว่ นต้น ๆ ก็ไม่มี ้ ในช่วงที่โปรแกรมทำงานอยูท ความจำเป็นต้องโหลดเอาส่วนท้าย ๆ โปรแกรมลงไป ในหน่วยความจำให้เปลืองเนื้อที่ เมื่อโปรแกรมทำงานมาจนถึงส่วนที่ยง ั ไม่ได้โหลด เข้าไปในหน่วยความจำ OS จะจัดการดึงเอาส่วนนัน ้ มาจากหน่วยความจำสำรอง โดยที่อาจจะโหลดไปทับส่วนต้น ๆ ของโปรแกรมที่ อยูใ่ นหน่วยความจำ หรือโหลดลงไปในส่วนอื่น ๆ ของหน่วยความจำก็ได้ จากหลักการดังกล่าวเราจึงสามารถรันโปรแกรมที่มี
การแปลงแอดเดรส (Address Mapping) เนื่องจากขนาดของโปรแกรมมีขนาดใหญ่กว่า ขนาดของหน่วยความจำ ดังนัน ้ จึงต้องมีการ อ้างอิงแอดเดรสระหว่างแอดเดรสของหน่วยความ จำจริงกับแอดเดรสของโปรแกรม แอดเดรสจริง (Real Address หรือ Physical Address) หมายถึงแอดเดรสใน หน่วยความจำจริงเท่านัน ้ แอดเดรสเสมือน (Virtual Address หรือ Logical Address) หมายถึงแอดเดรสที่ โปรแกรมอ้างถึง
การแปลงแอดเดรส (Address Mapping) ต่อ ตำแหน่งที่ ต่อเนื่องกัน การแปลงแอดเดรส หน่วยความจำเสมือน หน่วยความจำจริง
การแปลงแอดเดรส (Address Mapping) ต่อ เทคนิคการแปลงแอดเดรสมีอยูห ่ ลายวิธี แต่วธ ิ ท ี ี่ นิยมใช้กันอย่างแพร่หลายคือ Dynamic Address Translation (DAT) วิธก ี ารที่จะจัดการหน่วยความจำจริงให้สามารถ ทำงานโปรแกรมที่มข ี นาดใหญ่ จะใช้หลักการแบ่ง โปรแกรมออกเป็นส่วนย่อย ๆ หลาย ๆ ส่วนเรียกว่า บล็อก (Block) ขนาดของบล็อกแบ่งออกเป็น 2 แบบคือทุกบล็อกมี ขนาดเท่ากัน หรือบล็อกมีขนาดไม่เท่ากัน ดังนัน ้ ระบบหน่วยความจำเสมือนจึงแบ่งได้เป็น 2 แบบ –
การแปลงแอดเดรส (Address Mapping) ต่อ ระบบหน่วยความจำเสมือนจึงแบ่งได้ เป็น 2 แบบ – หน่วยความจำเสมือนระบบหน้า (Paging system) – หน่วยความจำเสมือนระบบเซกเมนต์ (Segment system)
การแปลงส่งแอดเดรส 1. การแปลงส่งแบบตรง (direct mapping) 2. การแปลงส่งแบบสาระ(associative mapping) 3. การแปลงส่งแบบผสมระหว่างสาระและแบบตรง combined associative/direct mapping
หน่วยความจำเสมือนระบบหน้า (Paging system) เป็นการจัดแบ่งโปรแกรมออกเป็นบล็อกที่มข ี นาด เท่า ๆ กันทุกบล็อก โดยจะเรียกบล็อกแต่ละบล็อกว่า หน้า (Page) ตัวอย่างการทำงานในระบบหน้า (Page) – ระบบมีหน่วยความจำขนาด 100 Kbyte 100,000 Byte 105 Byte – ต้องการรันโปรแกรมที่มข ี นาด 1000 Kbyte โปรแกรมขนาด 1,000,000 Byte 106 Byte หน่วยความจำขนาด 1000 KByte 100 Kbyte
หน่วยความจำเสมือนระบบหน้า (Paging system) ต่อ สมมุติ OS แบ่งโปรแกรมออกเป็นหน้าย่อย โดยที่แต่ละหน้า (Page) มีขนาด 1 Kbyte 1,000 Byte 103 Byte ต้องการรันโปรแกรม 1000 Kbyte ดังนัน ้ โปรแกรมจะถูก แอดเดรสเสมือน แบ่งออกเป็น 1000 หน้ า 0(1000 Page) ดังรูป า 00 0 0 0แอดเดรสภายในหน้ หน้าที่ 0000 0 0 9 9 9 Displacement 0 0 1 0 0 0 เลขหน้า หน้าที่ 001 001 999 Page Number 002 000 หน้าที่ 0020 0 2 9 9 9 แอดเดรสเสมือน หน้าที่ หน้าที่ 998 9989 9 8 999 9999 9 9 000 999 000 999 แอดเดรสเริม ่ ต้นของหน้า แอดเดรสสุดท้ายของหน้า
หน่วยความจำเสมือนระบบหน้า (Paging system) ต่อ จากรูปเราสามารถแบ่งแอดเดรสเสมือนออก เป็น 2 ส่วน – ส่วนที่ 1 จะเป็นค่าที่บง ่ บอกหมายเลขหน้า – ส่วนที่ 2 จะเป็นค่าที่บง ่ บอกค่าแอดเดรสภายใน หน้านัน ื เรียกว่า ดิสเพลซเมนต์ ้ ๆ ซึ่งมีช่ อ (Displacement) ตัวอย่างเช่น แอดเดรสเสมือนที่ 243765 มี ความหมายว่าอยูใ่ นหน้าที่ 243 และมีดิสเพลส เมนต์เป็น 765
หน่วยความจำเสมือนระบบหน้า (Paging system) ต่อ สำหรับในหน่วยความจำจริง OS จะแบ่งออกเป็นหน้าย่อย เหมือนกัน โดยที่แต่ละหน้า (Page) มีขนาดเท่ากับหน้าของ หน่วยความจำเสมือนคือ 1 Kbyte 1,000 Byte 103 Byte ดังนัน ก0แบ่ งออกเป็น 100 หน้าา ้ หน่วยความจำจริง0จะถู 0 0 0แอดเดรสภายในหน้ หน้าดัทีง่ รู00 (100 Page) ป 00 01 90 90 90 Displacement เลขหน้า หน้าที่ 01 0 1 9 9 9 Page Number 0 2 000 หน้าที่ 02 0 2 9 9 9 แอดเดรสเสมือน หน้าที่ 98 หน้าที่ 99 9 9 9 9 8 8 9 9 000 999 000 999 แอดเดรสเริม ่ ต้นของหน้า แอดเดรสสุดท้ายของหน้า
หน่วยความจำเสมือนระบบ หน้า(Paging system) ต่อ โปรแกรมของผู้ใช้ไม่วา่ จะมีขนาดใหญ่เท่าใด จะต้อง ถูกเก็บอยูใ่ นหน่วยความจำสำรอง ซึ่งโดยส่วนมาก ได้แก่ ดิสก์ เนื่องจากมีความจุสง ู เมื่อผู้ใช้สง ั ่ รันโปรแกรม OS จะโหลดเอาโปรแกรม จากดิสก์เข้าไปในหน่วยความจำครัง้ ละ 1 หน้า นัน ่ คือ 1 หน้าในโปรแกรมก็จะเข้าไปใช้เนื้อที่ในหน่วย ความจำ 1 หน้าเช่นกัน เมื่อโปรแกรมหนึ่งครอบครองหน้าใดในหน่วยความ จำแล้ว โปรแกรมอื่นจะใช้หน้านัน ้ อีกไม่ได้ โปรแกรมจะครอบครองหน่วยความจำจริงเป็น จำนวนเต็มของหน้า
การแปลงแอดเดรสในระบบหน้า OS จะสร้างตารางไว้สำหรับโปรเซส คือ ตาราง หน้า (Page table) สมมุติวา่ หน่วยความจำเสมือนมีขนาด 1000 หน้า และหน่วยความจำจริงมีขนาด 100 หน้า ตารางหน้าก็จะมีขนาด 1000 ช่อง ได้แก่ชอ ่ งที่ 000-999 – ช่องที่ 000 สำหรับหน้าที่ 000 – ช่องที่ 001 สำหรับหน้าที่ 001 ในตารางหน้าจะมี 3 คอลัมน์
การแปลงแอดเดรสในระบบหน้า ต่อ หมายเลขหน้แอดเดรสในดิ า สก์0/1 แอดเดรสในหน่วยความจำจริง 001 002 003 998 999 Page Table
การแปลงแอดเดรสในระบบหน้า ต่อ คอลัมน์ที่ 1 จะบอกแอดเดรสของหน้านัน ้ ๆ ที่อยูใ่ นดิสก์เพื่อที่จะได้รวู ้ า่ หน้าต่าง ๆ ของ โปรแกรมเก็บไว้ที่หน้าใดของดิสก์ คอลัมน์ที่ 2 จะบอกว่าหน้านัน ้ ๆ อยูใ่ นหน่วย ความจำจริงหรือไม่ – ถ้าค่าเป็น 0 หมายถึง หน้านัน ้ ไม่ได้อยูใ่ นหน่วย ความจำจริง (อยูใ่ นหน่วยความจำสำรอง) – ถ้าค่าเป็น 1 หมายถึง หน้านัน ้ อยูใ่ นหน่วยความ จำจริง คอลัมน์ที่ 3 จะบอกถึงแอดเดรสเริม ่ ต้นของ
การแปลงแอดเดรสในระบบหน้า ต่อ ถ้าต้องการทราบว่าแอดเดรสเสมือ น 123983 ไปอยู่ ณ. ตำแหน่งใดใน หน่วยความจำจริง 1. OS จะนำเอาแอดเดรสเสมือนมาหาค่า หมายเลขหน้าและดิสเพลซเมนต์ ในกรณีนี้ หมายเลขหน้าคือ 123 และดิสเพลซเมนต์คือ 983 2. OS จะตรวจสอบที่ตารางหน้าในช่องที่ 123 3. อ่านค่าคอลัมน์ที่ 2 ในตารางหน้าช่องที่ 123 ว่ามีค่า 1 หรือ 0 ในกรณีนี้มค่ ี าเป็น 1 (แสดง
การแปลงแอดเดรสในระบบหน้า ต่อ ถ้าต้องการทราบว่าแอดเดรสเสมือน 123983 ไป อยู่ ณ. ตำแหน่งใดในหน่วยความจำจริง 4. OS จะอ่านค่าในคอลัมภ์ที่ 3 ของตารางหน้าเพื่อ หาแอดเดรสเริม ่ ต้นของหน้าในหน่วยความจำจริง ซึ่งค่าคอลัมภ์ 3 คือ 54000 5. นำเอาค่าในคอลัมภ์ที่ 3 มารวมกับดิสเพรสเมนต์ จะได้แอดเดรสในหน่วยความจำจริงที่ตรงกับ แอดเดรสเสมือน (ซึ่งค่าคอลัมน์ที่3 คือ 54000 ค่าดิสเพรสเมนต์คือ 983 ค่าที่ได้คือ 54000 9 83 54983 6. ดังนัน ่ ี่ ้ แอดเดรสเสมือน 123983 จะอยูท
การแปลงแอดเดรสในระบบหน้า ต่อ กรณีขอ ้ มูลไม่ได้อยูใ่ นหน่วยความจำจริง (อยูใ่ นหน่วยความ จำสำรอง) 1. OS จะนำเอาแอดเดรสเสมือนมาหาค่าหมายเลขหน้าและดิส เพลซเมนต์ ในกรณีนี้ หมายเลขหน้าคือ 123 และดิสเพลซ เมนต์คือ 983 OS จะตรวจสอบที่ตารางหน้าในช่องที่ 123 2. อ่านค่าคอลัมภ์ที่ 2 ในตารางหน้าช่องที่ 123 ว่ามีค่า 1 หรือ 0 ในกรณีนี้มค่ ี าเป็น 0 (แสดงว่าเก็บอยูใ่ นหน่วยความจำ สำรอง) 3. OS จะอ่านค่าคอลัมน์ที่ 1 ซึ่งเป็นแอดเดรสในดิสก์ ในดิสก์ เป็นจำนวน 1 หน้า (1 Kbyte ) (ค่าแอดเดรสในดิสก์คือ 5146789)
การแปลงแอดเดรสในระบบหน้า ต่อ กรณีขอ ้ มูลไม่ได้อยูใ่ นหน่วยความจำจริง (อยูใ่ น หน่วยความจำสำรอง) 5. นำข้อมูลที่อ่านมาจากดิสก์ไปวางไว้ในหน่วยความจำ จริง 6. OS จะทำการแก้ไขข้อมูลในตารางหน้าช่องที่ 123 โดยเปลี่ยนค่าคอลัมน์ที่ 2 เป็น 1 7. ใส่ค่าหน้าที่หามาได้ของหน่วยความจำจริงบวกกับ ตำแหน่งเริม ่ ต้น (000) ขอดิสเพรสเมนต์ลงใน คอลัมน์ที่ 3 ของตารางหน้า (ค่าแอดเดรสจริง 039 83 (03000 983) ซึ่งตรงกับแอดเดรสเสมือน 123983
แอดเดรสเสมือน 123 983 000 001 12351467890 ไปอ่านข้อมูลในแอดเดรส 5146789 ในดิสก์ ตารางหน้า โหลดลง หน่วยความจำจริง 000 00 001 01 02 12351467891 03000 03000 หน่วยความจำจริง ค่าแอดเดรสจริง 03983 (03000 983) ซึ่งตรงกัตารางหน้ บแอดเดรสา
การแปลงแอดเดรสในระบบหน้า ต่อ กรณีถ้าไม่มห ี น้าว่างในหน่วยความจำจริง OS ต้องเลือกเอาหน้าหนึ่งออกจากหน่วยความจำ จริง หน้าใดจะถูกเลือกออก OS จะมีวธ ิ ก ี ารที่เรียก ว่า การสับเปลี่ยนหน้า (Page Replacement) หน้าที่ถก ู เลือกออก OS จะทำการบันทึก ข้อมูลและสถานะปัจจุบน ั ของหน้านัน ้ กลับลง ในดิสก์ ณ.ตำแหน่งแอดเดรสของดิสก์ตาม
การสับเปลี่ยนหน้า (Page Replacement) เมื่อเกิดความบกพร่องของหน้าในระบบหน้า และหน่วยความจำไม่มห ี น้าใดว่างอยูเ่ ลย ก่อนที OS จะโหลดเอาหน้าใหม่เข้ามาในหน่วย ความจำนัน ้ OS ต้องตัดสินใจก่อนว่าควรจะ เลือกหน้าใดเพื่อที่จะวางหน้าใหม่ทับลงไป สิง ่ ที่ OS ใช้ในการตัดสินใจเลือกหน้าเรียกว่า การสับเปลี่ยนหน้า Page Replacement หรือยุทธวิธก ี ารแทนที่(replacement strategy)
การสับเปลี่ยนหน้า (Page Replacement) การสับเปลี่ยนหน้ามีวธ ิ ก ี าร 5 วิธด ี ังนี้ – การสับเปลี่ยนหน้าแบบสุม ่ (Random) ทุกหน้า มีโอกาสถูกเลือกเท่ากันหมด – การสับเปลี่ยนหน้าแบบมาก่อนออกก่อน (First in First out :FIFO) – การสับเปลี่ยนหน้าแบบหน้าที่ถก ู ใช้น้อยที่สด ุ ออก ก่อน (Not frequently used :NFU) – การสับเปลี่ยนหน้าแบบหน้าใดที่ไม่ถก ู ใช้นานที่สด ุ ออกก่อน (Least recently used :LRU) – การสับเปลี่ยนหน้าแบบหน้าใดไม่ได้ถก ู ใช้งานออก
การแปลงแอดเดรสในระบบ Segment หมายเลขหน้าจากแอดเดรสเสมือนถูกส่งเข้าไป ตรวจสอบในตารางที่เรียกว่า ตารางหน้าแบบ สาระ(associative page table)พร้อมกัน ทุกช่อง จะได้ค่าแอดเดรสเริม ่ ต้นของหน้าในหน่วยความ จำจริงที่เก็บหน้านี้เอาไว้ออกมาทันที แอดเดรสที่ได้นี้ก็จะนำไปบวกดิสเพลซเมนต์ ผลลัพธ์ที่ได้ก็คือแอดเดรสจริงในหน่วยความจำ
ตารางหน้าแบบ สาระ(associative page table)
การแปลงส่งแบบผสมระหว่างแบบสาระ และแบบตรง (combined associative/direct mapping)
หน่วยความจำเสมือนระบบเซกเมน ต์(Segment System) มีลักษณะการทำงานคล้ายกับระบบหน้า (Page System) ต่างกันตรงที่ขนาดของบล็อกไม่ จำเป็นต้องเท่ากัน ตารางเซกเมนต์ (Segment table) จะมี คอลัมน์มากกว่าตารางหน้าอยู่ 1 คอลัมน์ใช้เก็บ ขนาดของเซกเมนต์นัน ้ ไว้ เพื่อให้ OS ทราบว่า แต่ละเซกเมนต์มข ี นาดเท่าใด การอ่านหรือเขียนข้อมูลจากหน่วยความจำ สำรองและการหาเนื้อที่ในหน่วยความจำจริงจะ กระทำตามขนาดของเซกเมนต์ เช่นถ้าเซกเมนต์
หน่วยความจำเสมือนระบบเซกเมน ต์(Segment System) ต่อ หมายเลขหน้า 001 002 003 แอดเดรสในดิสก์ ขนาดเซกเมนต์ 0/1 แอดเดรสในหน่วยความจำจริง 998 999 Segment Table
หน่วยความจำเสมือนระบบผสมหน้าและเซก ระบบจะแบ่งหน่วยความจำออกเป็ น หน้ า ที ่ ม ข ี นาด เมนต์ เท่ากัน ในโปรแกรมของผู้ใช้ จะถูกแบ่งออกเป็นเซกเมน ต์ ภายในเซกเมนต์จะถูกแบ่งออกเป็นหลายๆหน้า ดังนัน ้ ขนาดของเซกเมนต์จะเป็นจำนวนเท่าของ หน้า แต่ละเซกเมนต์ของโปรแกรมไม่จำเป็นต้องอยู่ เรียงกันในหน่วยความจำ แต่ละหน้าในเซกเมนต์เดียวกันก็ไม่จำเป็นต้อง อยูเ่ รียงติดกันใน หน่วยความจำจริง
หน่วยความจำเสมือนระบบผสมหน้าและ เซกเมนต์ การผสมเอาระบบหน้ าและเซกเมนต์เข้าด้วยกัน ทำให้ประสิทธิภาพ การทำงานของระบบดีข้น ึ ระบบผสมนี้ แอดเดรสเสมือนจะแบ่งออกเป็น 3 ส่วน คือ หมายเลขเซกเมนต์ หมายเลขหน้า และดิสเพลซ เมนต์ หมายเลขเซก หมายเลขหน้า ดิสเพลซเมนต์ เมนต์
หน่วยความจำเสมือนระบบผสมหน้า และเซกเมนต์ นำหมายเลขเซกเมนต์ (S)ของแอดเดรสเสมือนไป หาแอดเดรสของตารางหน้าที่เก็บอยูใ่ นตารางเซก เมนต์ เมื่อทราบว่าตารางหน้าอยูท ่ ี่ใดในหน่วยความจำแล้ว ใช้หมายเลขหน้า P เพื่อหาแอดเดรสของหน้า P’ใน หน่วยความจำ นำค่าแอดเดรสนี้บวกกับดิสเพลซเมนต์ก็จะได้ แอดเดรสจริงในหน่วยความจำ
หน่วยความจำเสมือนระบบผสมหน้า และเซกเมนต์
หน่วยความจำเสมือนระบบผสมหน้า และเซกเมนต์ 1. สมมุติวา่ โปรเซสหนึ่งมี 3 เซกเมนต์ (0-2) 2. เซกเมนต์ 0 และ 1 มี 5 หน้า และเซกเมนต์ 2 มี 10 หน้า แต่ละหน้ามีขนาด 100 ไบต์ (00-99) ดังนัน ้ ดิสเพลซเมนต์เป็นเลข 2 หลัก 3. สมมติวา่ ต้องการแปลงแอดเดรสเสมือน 1490 เป็นแอดเดรสจริง 4. หมายเลขเซกเมนต์คือ 1 หมายเลขหน้าคือ 4 ดิสเพลซเมนต์คือ 90
หน่วยความจำเสมือนระบบผสมหน้า และเซกเมนต์ 5. ขัน ้ แรกอ่านค่าที่เก็บไว้ในช่อง 1 ของตารางเซกเมนต์ ได้ ค่า 900 หมายความว่าตารางหน้าของเซกเมนต์ 1 อยูท ่ ี่ แอดเดรส 900 6. ต่อมาตรวจสอบค่าในช่องที่ 4 ของตารางหน้าที่แอดเดรส 900 เพื่อหาดูวา่ หน้า 4 ของเซกเมนต์ 1 เก็บอยูท ่ ี่ใดใน หน่วยความจำ 7. เมื่อได้ค่าแอดเดรสหน้าในหน่วยความจำแล้ว (500)ก็นำ ไปบวกกับดิสเพลซเมนต์ก็จะได้ค่าแอดเดรสจริงในหน่วย ความจำ คือ 590
หน่วยความจำเสมือนระบบผสมหน้า และเซกเมนต์
ี ารเฟตซ์ ยุทธวิธก ยุทธวิธก ี ารเฟตซ์ (Fetch Strategy) หมายถึงการโหลดหน้า หรือเซกเมนต์จากดิสก์เข้าไปในหน่วยความจำ แบ่งออกได้เป็น 2 วิธี คือ – การเฟตซ์แบบต้องการ (demand fetch) OS จะโหลด เฉพาะหน้าหรือเซกเมนต์ ที่ต้องการใช้เท่านัน ้ เข้าไปในหน่วยความ จำ – การเฟตซ์แบบคาดเดา (anticipate fetch) จะมีการคาด เดาว่าหน้าหรือ เซกเมนต์ไหนจะถูกใช้เป็นหน้าหรือเซกเมนต์ต่อไป และจะโหลดหน้าหรือเซกเมนต์นัน ้ เข้าไปไว้ในหน่วยความจำล่วง หน้า (ก่อนเกิดการใช้งานจริง)ทำให้โปรแกรมทำงานได้เร็วขึ้น
ลำดับชัน ้ ของหน่วยความจำ ระบบหน่วยความจำเสมือน สามารถทำให้ผู้ใช้ใช้หน่วยความ จำขนาดใหญ่กว่าหน่วยความจำจริงได้ ก็เพราะอาศัยการเก็บ ข้อมูล(หรือโปรแกรม)ไว้ในหน่วยความจำสำรอง ลักษณะ การเคลื่อนย้ายข้อมูลจะมีการส่งไปมาระหว่างหน่วยความจำ สำรอง กับหน่วยความจำหลัก ลักษณะเช่นนี้เรียกว่าหน่วย ความจำ 2 ระดับ หมายถึงว่าข้อมูลมีการขนย้ายจากหน่วย ความจำประเภทหนึ่งไปยังหน่วยความจำอีกประเภทหนึ่ง CPU RAM STORAGE DEVICE ระดับ 1 2 ระดับ
ลำดับชัน ้ ของหน่วยความจำ มีการพัฒนาหน่วยความจำให้เป็นลำดับขัน ้ มากกว่า 1 หรือ 2 ระดับ หน่วยความจำแคช(cache memory) จึงได้ถก ู พัฒนาขึ้นมาใช้งาน แคชมีความเร็วกว่าหน่วยความจำแรม หลายเท่า แคชจะอยูร่ ะหว่างซีพย ี ูกับหน่วยความจำหลัก เมื่อซีพย ี ูต้องการข้อมูล – ซีพย ี ูกำหนดตำแหน่งของข้อมูลที่ต้องการด้วยแอดเดรส ค่า แอดเดรสนี้จะถูกนำไปตรวจสอบในแคชด้วยความเร็วสูง – ถ้าในแคชมีขอ ้ มูลในตำแหน่งที่บง ่ โดยแอดเดรสซีพย ี ูก็จะได้รบ ั ข้อมูลในแอดเดรสนัน ้ จากแคชทันที – แต่ถ้าไม่มข ี อ ้ มูลนัน ้ จะถูกส่งมาจากหน่วยความจำหลักมาเก็บลง ในแคชก่อนแล้วค่อยส่งไปให้ซพ ี ย ี ู
ลำดับชัน ้ ของหน่วยความจำ การขนย้ายข้อมูลระหว่างแคชกับแรม – มีลักษณะการทำงานเหมือนกับการขนย้ายข้อมูล ระหว่างดิสก์กับแรมในระบบหน่วยความจำเสมือน ความแตกต่างกันระหว่างแคชกับแรม – ในการขนย้ายข้อมูลเป็นไปโดยวงจรทางฮาร์ดแวร์ ไม่มส ี ว่ นเกี่ยวข้องกับโปรแกรมใดๆทัง ้ สิน ้ ้ (รวมทัง OS เองด้วย)ซีพย ี ูบางตัวถูกสร้างขึ้นโดยมีแคช ติดมาด้วย ทำให้การทำงานของซีพย ี ูมค ี วามเร็วสูง ขึ้น
ลำดับชัน ้ ของหน่วยความจำ ระบบหน่วยความจำ 3 ระดับ โดยใช้ Cache CPU Cache Main memory Secondary memory