Transcript ch5
บทที่ 5 ระบบหน่ วยความจาเสมือน (Virtual Memory) ประเภทของการจัดการหน่ วยความจา การจัดการหน่ วยความจา ระบบหน่ วยความจาเสมือน (Virtual Memory) • การจัดการหน่วยความจาสามารถแบ่งออกเป็ น 2 ประเภทใหญ่ ๆ – ระบบหน่ วยความจาจริง ขนาดของโปรแกรมจะต้องไม่ใหญ่กว่าขนาดของ หน่วยความจาที่มีอยู่ ลบด้วยขนาดของหน่วยความจาที่เป็ น ส่ วนของ OS – ระบบหน่ วยความจาเสมือน ขนาดของโปรแกรมจะมีขนาดเท่าใดก็ได้ ระบบหน่ วยความจาเสมือน (Virtual Memory) หน่วยความจาเสมือนมีขนาดใหญ่กว่าหน่วยความจาจริง แนวคิดของหน่ วยความจาเสมือน • ผูเ้ ขียนโปรแกรมหรื อผูใ้ ช้จะไม่ ถูกจากัดในเรื่องของขนาดของหน่ วยความจา อีกต่อไป • OS จะจัดการให้ผใู ้ ช้สามารถใช้หน่ วยความจาได้ มากกว่ าหน่ วยความจาจริง ทีม่ ีอยู่ • โปรแกรมทั้งโปรแกรมโดยส่ วนใหญ่ไม่ได้ถูกใช้งานพร้อมกันทั้งหมด ซึ่ง การทางานของโปรแกรมจะเริ่มทางานจากส่ วนต้ นโปรแกรม แล้วค่ อย ๆ เลือ่ นลงมาจนกระทั่งถึงท้ ายโปรแกรม • ในขณะที่โปรแกรมกาลังทางานอยูท่ ี่ส่วนต้นโปรแกรม ที่ปลายโปรแกรมก็ ยังไม่ถูกใช้งาน เมื่อโปรแกรมทางานมาถึงส่ วนท้าย ๆ โปรแกรม ส่ วนต้น ๆ โปรแกรมก็ไม่ถูกใช้งาน แนวคิดของหน่ วยความจาเสมือน … ต่ อ • ดังนั้นในช่วงที่โปรแกรมทางานอยูท่ ี่ส่วนต้น ๆ ก็ไม่มีความจาเป็ นต้อง โหลดเอาส่ วนท้าย ๆ โปรแกรมลงไปในหน่วยความจาให้เปลืองเนื้อที่ • เมื่อโปรแกรมทางานมาจนถึงส่ วนที่ยงั ไม่ได้โหลดเข้าไปในหน่วยความจา OS จะจัดการดึงเอาส่ วนนั้นมาจากหน่วยความจารอง • โดยที่อาจจะโหลดไปทับส่ วนต้น ๆ ของโปรแกรมที่อยูใ่ นหน่วยความจา หรื อโหลดลงไปในส่ วนอื่น ๆ ของหน่วยความจาก็ได้ • จากหลักการดังกล่าวเราจึงสามารถรันโปรแกรมที่มีขนาดใหญ่กว่า หน่วยความจาที่มีอยูไ่ ด้ การแปลงแอดเดรส (Address Mapping) • เนื่องจากขนาดของโปรแกรมมีขนาดใหญ่กว่าขนาดของหน่วยความจา ดังนั้นจึงต้องมีการอ้างอิงแอดเดรสระหว่างแอดเดรสของหน่วยความจา จริ งกับแอดเดรสของโปรแกรม • แอดเดรสจริง (Real Address หรือ Physical Address) หมายถึง แอดเดรสในหน่วยความจาจริ งเท่านั้น • แอดเดรสเสมือน (Virtual Address หรือ Logical Address) หมายถึง แอดเดรสที่โปรแกรมอ้างถึง • ดังนั้นจึงต้องมีกลไกการแปลงแอดเดรสจากแอดเดรสเสมือนให้เป็ น แอดเดรสจริ ง ณ.ตาแหน่งที่โปรแกรมส่ วนนั้นถูกวางลงไป ซึ่งเราเรี ยกว่า การแปลงส่ งแอดเดรส (Address Mapping) การแปลงแอดเดรส (Address Mapping) … ต่ อ ตาแหน่งที่ ต่อเนื่องกัน การแปลงแอดเดรส หน่วยความจาจริ ง หน่วยความจาเสมือน การแปลงแอดเดรส (Address Mapping) … ต่ อ • เทคนิคการแปลงแอดเดรสมีอยูห่ ลายวิธี แต่วิธีที่นิยมใช้กนั อย่างแพร่ หลาย คือ dynamic address translation (DAT) • วิธีการที่จะจัดการหน่วยความจาจริ งให้สามารถทางานโปรแกรมที่มีขนาด ใหญ่ จะใช้หลักการแบ่งโปรแกรมออกเป็ นส่ วนย่อย ๆ หลาย ๆ ส่ วน เรี ยกว่าบล็อก (Block) • ขนาดของบล็อกแบ่งออกเป็ น 2 แบบคือทุกบล็อกมีขนาดเท่ากัน หรื อ บล็อกมีขนาดไม่เท่ากัน ดังนั้นระบบหน่วยความจาเสมือนจึงแบ่งได้เป็ น 2 แบบ – หน่วยความจาเสมือนระบบหน้า (Paging system) – หน่วยความจาเสมือนระบบเซกเมนต์ (Segment system) การแปลงแอดเดรส (Address Mapping) … ต่ อ • ระบบหน่ วยความจาเสมือนจึงแบ่ งได้ เป็ น 2 แบบ – หน่วยความจาเสมือนระบบหน้า (Paging system) – หน่วยความจาเสมือนระบบเซกเมนต์ (Segment system) การแปลงส่ งแอดเดรส 1. การแปลงส่งแบบตรง (direct mapping) 2. การแปลงส่งแบบสาระ(associative mapping) 3. การแปลงส่งแบบผสมระหว่างสาระและแบบตรง combined associative/direct mapping หน่ วยความจาเสมือนระบบหน้ า (Paging system) • เป็ นการจัดแบ่งโปรแกรมออกเป็ นบล็อกที่มีขนาดเท่า ๆ กันทุกบล็อก โดย จะเรี ยกบล็อกแต่ละบล็อกว่าหน้า (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 หน้า (1000 Page) ดังรู ป แอดเดรสเสมือน 0 0 0 0 0 0 แอดเดรสภายในหน้า หน้าที่ 000 0 0 0 9 9 9 Displacement 0 0 1 0 0 0 เลขหน้า หน้าที่ 001 0 0 1 9 9 9 Page Number 002 000 หน้าที่ 002 0 0 2 9 9 9 แอดเดรสเสมือน หน้าที่ 998 หน้าที่ 999 998 998 999 999 000 999 000 999 แอดเดรสเริ่ มต้นของหน้า แอดเดรสสุ ดท้ายของหน้า หน่ วยความจาเสมือนระบบหน้ า (Paging system) … ต่ อ • จากรู ปเราสามารถแบ่งแอดเดรสเสมือนออกเป็ น 2 ส่ วน – ส่ วนที่ 1 จะเป็ นค่าที่บ่งบอกหมายเลขหน้า – ส่ วนที่ 2 จะเป็ นค่าที่บ่งบอกค่าแอดเดรสภายในหน้านั้น ๆ ซึ่งมีชื่อ เรี ยกว่าดีสเพลซเมนต์ (Displacement) • ตัวอย่างเช่น แอดเดรสเสมือนที่ 243765 มีความหมายว่าอยูใ่ น หน้าที่ 243 และมีดีสเพลสเมนต์เป็ น 765 หมายเลขหน้า ดีี สเพลซเมนต์ แอดเดรสเสมือน หน่ วยความจาเสมือนระบบหน้ า (Paging system) … ต่ อ • สาหรับในหน่วยความจาจริ ง OS จะแบ่งออกเป็ นหน้าย่อยเหมือนกัน โดยทีแ ่ ต่ ละหน้า (Page) มีขนาดเท่ากับหน้าของหน่วยความจาเสมือนคือ 1 Kbyte = 1,000 Byte = 103 Byte • ดังนั้นหน่วยความจาจริงจะถูกแบ่งออกเป็ น 100 หน้า (100 Page) ดังรู ป เลขหน้า Page Number หน้าที่ 02 00 000 00 999 0 1 000 0 1 999 0 2 000 0 2 999 หน้าที่ 98 หน้าที่ 99 9 9 9 9 หน้าที่ 00 หน้าที่ 01 8 8 9 9 000 999 000 999 แอดเดรสภายในหน้า Displacement แอดเดรสเสมือน แอดเดรสเริ่ มต้นของหน้า แอดเดรสสุ ดท้ายของหน้า หน่ วยความจาเสมือนระบบหน้ า(Paging system)… ต่ อ • โปรแกรมของผูใ้ ช้ไม่วา่ จะมีขนาดใหญ่เท่าใด จะต้องถูกเก็บอยูใ่ น หน่วยความจารอง ซึ่งโดยส่ วนมากได้แก่ ดิสก์ เนื่องจากมีความจุสูง • เมื่อผูใ้ ช้สงั่ รันโปรแกรม OS จะโหลดเอาโปรแกรมจากดิสก์เข้าไปใน หน่วยความจาครั้งละ 1 หน้า นัน่ คือ 1 หน้าในโปรแกรมก็จะเข้าไป ใช้เนื้อที่ในหน่วยความจา 1 หน้าเช่นกัน • เมื่อโปรแกรมหนึ่งครอบครองหน้าใดในหน่วยความจาแล้ว โปรแกรมอื่น จะใช้หน้านั้นอีกไม่ได้ • โปรแกรมจะครอบครองหน่วยความจาจริ งเป็ นจานวนเต็มของหน้า • ดังนั้นต้องมีวิธีการแปลงแอดเดรสจากแอดเดรสเสมือนเป็ นแอดเดรสจริ ง การแปลงแอดเดรสในระบบหน้ า • OS จะสร้างตารางไว้สาหรับโปรเซส คือ ตารางหน้า (Page table) • สมมุติวา่ หน่วยความจาเสมือนมีขนาด 1000 หน้า และ หน่วยความจาจริ งมีขนาด 100 หน้า • ตารางหน้าก็จะมีขนาด 1000 ช่อง ได้แก่ช่องที่ 000-999 – ช่องที่ 000 สาหรับหน้าที่ 000 – ช่องที่ 001 สาหรับหน้าที่ 001 • ในตารางหน้าจะมี 3 คอลัมภ์ การแปลงแอดเดรสในระบบหน้ า … ต่ อ หมายเลขหน้า 001 002 003 แอดเดรสในดิสก์ 0/1 แอดเดรสในหน่วยความจาจริ ง 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+983=54983 6. ดังนัน้ แอดเดรสเสมือน 123983 จะอยูท่ ี่ หน้ า 54 ของหน่ วยความจาจริง และมี ค่ าดีสเพรสเมนต์ คือ 983 การแปลงแอดเดรสในระบบหน้ า … ต่ อ กรณีข้อมูลไม่ ได้ อยู่ในหน่ วยความจาจริง (อยู่ในหน่ วยความจาสารอง) 1. OS จะนาเอาแอดเดรสเสมือนมาหาค่าหมายเลขหน้าและดีสเพลซเมนต์ ในกรณี น้ ี หมายเลขหน้าคือ 123 และดีสเพลซเมนต์คือ 983 OS จะตรวจสอบที่ตารางหน้า ในช่องที่ 123 2. อ่านค่าคอลัมภ์ที่ 2 ในตารางหน้าช่องที่ 123 ว่ามีคา่ 1 หรื อ 0 ในกรณีนี ้มีค่าเป็ น 0 (แสดงว่ าเก็บอยู่ในหน่ วยความจาสารอง) 3. OS จะอ่านค่าคอลัมภ์ที่ 1 ซึ่ งเป็ นแอดเดรสในดิสก์ ในดิสก์เป็ นจานวน 1 หน้า (1 Kbyte ) (ค่ าแอดเดรสในดิสก์ คือ 5146789) 4. OS จะไปหาหน้าที่วา่ งในหน่วยความจาจริ ง (หน้ าที่วา่ งคือหน้ าที่ 03000) การแปลงแอดเดรสในระบบหน้ า … ต่ อ กรณีข้อมูลไม่ ได้ อยู่ในหน่ วยความจาจริง (อยู่ในหน่ วยความจาสารอง) 5. นาข้อมูลที่อ่านมาจากดิสก์ไปวางไว้ในหน่วยความจาจริ ง 6. OS จะทาการแก้ไขข้อมูลในตารางหน้าช่องที่ 123 โดยเปลี่ยนค่าคอลัมภ์ที่ 2 เป็ น 1 7. ใส่ ค่าหน้าที่หามาได้ของหน่วยความจาจริ งบวกกับตาแหน่งเริ่ มต้น (000) ของ ดีี สเพรสเมนต์ลงในคอลัมภ์ที่ 3 ของตารางหน้า (ค่าแอดเดรสจริง 03983 (03000+983) ซึง่ ตรงกับแอดเดรสเสมือน 123983 แอดเดรสเสมือน 123 000 001 983 ไปอ่านข้อมูลในแอดเดรส 5146789 ในดิสก์ 123 5146789 0 โหลดลง หน่วยความจาจริ ง 00 01 02 03000 หน่วยความจาจริ ง ตารางหน้า 000 001 123 5146789 1 03000 ค่าแอดเดรสจริ ง 03983 (03000+983) ซึง่ ตรงกับแอดเดรสเสมือน 123983 เปลี่ยนจาก 0 เป็ น 1 โหลดมายังหน่วยความจา ตารางหน้า การแปลงแอดเดรสในระบบหน้ า … ต่ อ • กรณี ถา้ ไม่มีหน้าว่างในหน่วยความจาจริ ง 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) – การสับเปลี่ยนหน้าแบบหน้าใดไม่ได้ถูกใช้งานออกก่อน (Not recently used :NUR) การแปลงแอดเดรสในระบบ Segment • หมายเลขหน้ าจากแอดเดรสเสมือนถูกส่งเข้ าไปตรวจสอบ ในตารางที่เรี ยกว่า ตารางหน้ าแบบสาระ(associative page table)พร้ อมกันทุกช่อง • จะได้ คา่ แอดเดรสเริ่ มต้ นของหน้ าในหน่วยความจาจริ งที่เก็บ หน้ านี ้เอาไว้ ออกมาทันที • แอดเดรสที่ได้ นี ้ก็จะนาไปบวกดีสเพลซเมนต์ผลลัพธ์ที่ได้ ก็ คือแอดเดรสจริ งในหน่วยความจา ตารางหน้ าแบบสาระ(associative page table) การแปลงส่ งแบบผสมระหว่ างแบบสาระและแบบตรง (combined associative/direct mapping) หน่ วยความจาเสมือนระบบเซกเมนต์ (Segment System) • มีลกั ษณะการทางานคล้ายกับระบบหน้า (Page System) ต่างกัน ตรงที่ขนาดของบล็อกไม่จาเป็ นต้องเท่ากัน • ตารางเซกเมนต์ (Segment table) จะมีคอลัมน์มากกว่าตารางหน้า อยู่ 1 คอลัมน์ใช้เก็บขนาดของเซกเมนต์น้ นั ไว้ เพื่อให้ OS ทราบว่า แต่ละเซกเมนต์มีขนาดเท่าใด • การอ่านหรื อเขียนข้อมูลจากหน่วยความจารองและการหาเนื้อที่ใน หน่วยความจาจริ งจะกระทาตามขนาดของเซกเมนต์ เช่นถ้าเซกเมนต์ มีขนาด 5 Kbytes การโหลดจากดิสก์ตอ้ งโหลดข้อมูลขึ้นมา 5 Kbytes ในขณะเดียวกันก็ตอ้ งหาเนื้อที่วา่ งในหน่วยความจาที่มีขนาด 5 Kbytes ด้วยเช่นกัน หน่ วยความจาเสมือนระบบเซกเมนต์ (Segment System)…ต่ อ หมายเลขหน้า แอดเดรสในดิสก์ 0/1ขนาดเซกเมนต์ 001 002 003 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 ระดับ 1 STORAGE DEVICE ระดับ 2 ลาดับชัน้ ของหน่ วยความจา • มีการพัฒนาหน่วยความจาให้ เป็ นลาดับขันมากกว่ ้ า 1 หรื อ 2 ระดับ • หน่ วยความจาแคช(cache memory) จึงได้ ถกู พัฒนาขึ ้นมาใช้ งาน แคชมี ความเร็วกว่าหน่วยความจาแรมหลายเท่า แคชจะอยูร่ ะหว่างซีพียกู บั หน่วยความจาหลัก • เมื่อซีพียูต้องการข้ อมูล – ซีพียกู าหนดตาแหน่งของข้ อมูลที่ต้องการด้ วยแอดเดรส ค่าแอดเดรสนี ้จะถูกนาไป ตรวจสอบในแคชด้ วยความเร็วสูง – ถ้ าในแคชมีข้อมูลในตาแหน่งที่บง่ โดยแอดเดรสซีพียกู ็จะได้ รับข้ อมูลในแอดเดรสนัน้ จากแคชทันที – แต่ถ้าไม่มีข้อมูลนันจะถู ้ กส่งมาจากหน่วยความจาหลักมาเก็บลงในแคชก่อนแล้ ว ค่อยส่งไปให้ ซีพียู ลาดับชัน้ ของหน่ วยความจา • การขนย้ ายข้ อมูลระหว่ างแคชกับแรม – มีลกั ษณะการทางานเหมือนกับการขนย้ ายข้ อมูลระหว่างดิสก์กบั แรมในระบบหน่วยความจาเสมือน • ความแตกต่ างกันระหว่ างแคชกับแรม – ในการขนย้ ายข้ อมูลเป็ นไปโดยวงจรทางฮาร์ ดแวร์ ไม่มีสว่ น เกี่ยวข้ องกับโปรแกรมใดๆทังสิ ้ ้น(รวมทัง้ OS เองด้ วย)ซีพียบู างตัว ถูกสร้ างขึ ้นโดยมีแคชติดมาด้ วย ทาให้ การทางานของซีพียมู ี ความเร็วสูงขึ ้น ลาดับชั้นของหน่ วยความจา • ระบบหน่วยความจา 3 ระดับ โดยใช้ Cache CPU Cache Main memory Secondary memory แบบทดสอบ 1. การจัดการหน่วยความจาเสมือนกับหน่วยความจาหลัก แตกต่างกันอย่างไร 2. จงเปรี ยบเทียบการทาหน่วยความจาเสมือนระบบหน้ า และหน่วยความจาเสมือนระบบเซกเมนต์ 3. นักศึกษาคิดว่าทาไมจึงต้ องทาหน่วยความจาเสมือน 4. หน่วยความจา cache มีประโยชน์อย่างไร แบบทดสอบ 5. ระบบการแบ่งหน่วยความจาเสมือนระบบ page กับ ระบบ Segment แตกต่างกันอย่างไร 6. การแปลงส่งแอดเดรส address Mapping คืออะไร 7. การสับเปลี่ยนหน้ ามีกี่แบบอะไรบ้ าง 8. ระบบหน่วยความจาแบบ 2 ระดับกับ 3 ระดับ แตกต่างกันอย่างไร 9. แอดเดรสเสมือนที่ 123456 มีความหมายอย่างไร 10. จงอธิบายภาพต่อไปนี ้ แอดเดรสเสมือน 678 333 000 001 333 โหลดลง หน่วยความจาจริ ง 00 01 02 99000 หน่วยความจาจริ ง 1234567 0 ตารางหน้า 000 001 123 1234567 1 99000 ตารางหน้า