1 / 60

Chapter 4

ANGKANA. Chapter 4. หน่วยความจำ Cache และหน่วยความจำเสมือน. (Cache & Virtual Memory). ANGKANA. หัวข้อการเรียนรู้.

vanida
Download Presentation

Chapter 4

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ANGKANA Chapter 4 หน่วยความจำ Cache และหน่วยความจำเสมือน (Cache & Virtual Memory)

  2. ANGKANA หัวข้อการเรียนรู้  แคช (Cache) การออกแบบหน่วยความจำแคช การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) การจัดการด้านอื่น ๆ ของแคช หน่วยความจำเสมือน (Virtual Memory) การแบ่งออกเป็นหน้า (Paging) การสับเปลี่ยนหน้า (Page Replacement Algorithms)

  3. บทนำ หนึ่งในปัญหาหลาย ๆ ข้อที่ยากต่อการออกแบบระบบคอมพิวเตอร์ คือ การจัดการกับหน่วยความจำ หน่วยความจำของคอมพิวเตอร์ที่มีความหลากหลาย และแตกต่างกันมาก มีหลายชนิด หลายเทคโนโลยี มีความแตกต่างในด้านประสิทธิภาพ และราคา และไม่มีเทคโนโลยีใดเทคโนโลยีหนึ่งที่เป็นคำตอบที่ดีที่สุดของการออกแบบหน่วยคามจำในระบบคอมพิวเตอร์ ด้วยเหตุผลดังกล่าวทำให้การออกแบบหน่วยความจำในระบบคอมพิวเตอร์ที่ดีแบบหนึ่ง คือการแบ่งหน่วยความจำของคอมพิวเตอร์ออกเป็นชั้น ๆ (Hierarchy) โดยสามารถแบ่งออกเป็นหน่วยความจำภายใน (Internal) ที่ซีพียู (CPU) สามารถเข้าถึงข้อมูลได้โดยตรง และหน่วยความจำภายนอก (External) ที่ซีพียูสามารถเข้าถึงได้โดยผ่านไอโอโมดูล (I/O module)

  4. แคช (Cache) แคช (Cache) คือหน่วยความจำขนาดเล็กที่อยู่ใกล้กับไมโครโปรเซสเซอร์ (Core Processor) มากที่สุด เป็นหน่วยความจำที่ไมโครโปรเซสเซอร์สามารถเข้าถึงได้เร็วกว่าหน่วยความจำหลัก (RAM) บนระบบคอมพิวเตอร์ การเพิ่มขนาดแคชทำให้ระบบสามารถเก็บข้อมูลที่โปรเซสเซอร์ต้องใช้ในการประมวลผลได้มากขึ้น ทำให้ใช้เวลาในการค้นหาข้อมูลน้อยลง ซึ่งส่งผลให้ประสิทธิภาพโดยรวมของระบบดีขึ้นด้วย

  5. แคช (Cache) แนวคิดพื้นฐานของการจัดการภายในหน่วยความจำแคช คือการเก็บคำสั่ง หรือข้อมูลที่ถูกเรียกใช้งานบ่อย ๆ ลงในแคช ซึ่งจะทำให้ค่าเฉลี่ยของการเข้าถึงข้อมูลมีค่าใกล้เคียงกับเวลาที่ใช้ในการเข้าถึงข้อมูลในแคช ถึงแม้ว่าแคชจะเป็นเพียงส่วนประกอบย่อยที่มีขนาดเล็กของหน่วยความจำในระบบคอมพิวเตอร์ แต่โปรแกรมหรือข้อมูลที่เรียกใช้งานส่วนใหญ่ก็ถูกเก็บไว้ในส่วนนี้

  6. กระบวนการทำงานของแคชในระบบคอมพิวเตอร์กระบวนการทำงานของแคชในระบบคอมพิวเตอร์

  7. การออกแบบหน่วยความจำแคชการออกแบบหน่วยความจำแคช ประสิทธิภาพการทำงานของแคช วัดได้จาก อัตราการพบข้อมูล หรือ hit ratio เมื่อซีพียูต้องการนำคำสั่งหรือข้อมูลเข้า และพบว่าข้อมูลดังกล่าวถูกเก็บไว้ในแคชแล้วนั้น เราจะเรียกขั้นตอนนี้ว่า “พบ” หรือ hit แต่ถ้าเราไม่พบข้อมูลที่ต้องการในแคช เนื่องจากข้อมูลดังกล่าวอยู่ในหน่วยความจำหลัก เราก็จะเรียกว่า “พลาด” หรือ miss โดยอัตราส่วนของจำนวนที่พบข้อมูล (hit) หารด้วยจำนวนครั้งที่ซีพียูทำการเรียกคำสั่ง หรือข้อมูล (hit บวก miss) ก็คืออัตราการพบข้อมูล หรือ hit ratio นั่นเอง

  8. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) คุณสมบัติ  ต้องมีกลยุทธ์ในการวางข้อมูล (Placement) – ที่ที่เราจะนำบล็อกของข้อมูลวางลงในแคช  ต้องมีกลยุทธ์ในการแทนที่ข้อมูล (Replacement) – บล็อกที่เราจะนำข้อมูลมาแทนที่เมื่อไม่มีการพบข้อมูลที่ต้องการในแคช  ต้องมีนโยบายในการอ่านและเขียนข้อมูล – วิธีจัดการ การอ่านและการเขียนข้อมูลลงในแคช ที่ขึ้นอยู่กับการพบ (hit) และพลาด (miss) ของข้อมูล

  9. การจัดวางหน่วยความจำแคช

  10. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) ชนิดของการเชื่อมโยงมีอยู่ด้วยกัน 3 แบบ ดังนี้ 1. การเชื่อมโยงแบบสัมพันธ์ (Associative mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping) 3. การเชื่อมโยงแบบกลุ่มสัมพันธ์ (Block-set associative mapping)

  11. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) ชนิดของการเชื่อมโยงมีอยู่ด้วยกัน 3 แบบ ดังนี้ • การเชื่อมโยงแบบสัมพันธ์ (Associative mapping) เป็นวิธีการที่เร็ว และยืดหยุ่นที่สุด ของการ จัดการกับหน่วยความจำแคช โดย แคชจะเก็บทั้ง Address และข้อมูล ใน หน่วยความจำ ซึ่งจะทำให้แคชสามารถเก็บ ข้อมูลจากเวิร์ดใดก็ได้จากหน่วยความจำ หลัก

  12. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 1. การเชื่อมโยงแบบสัมพันธ์ (Associative mapping) ถ้าข้อมูลในแคชนั้น ข้อมูลและAddress ดังกล่าวก็จะเข้าไปแทนที่ข้อมูลที่ไม่ต้องการแล้วแต่การตัดสินใจว่าข้อมูลคู่ใดที่จะถูกสับเปลี่ยนออกไปนั้น ขึ้นอยู่กับวิธีการคิด หรืออัลกอลิทึ่มที่ผู้ออกแบบระบบนำมาใช้ วิธีการสับเปลี่ยนแบบง่าย ๆ วิธีหนึ่งก็คือ วิธีการสับเปลี่ยนแบบมาก่อน – ออกก่อน โดยจะนำข้อมูลที่เข้ามานานที่สุดออกไปนั่นเอง หรือที่เราเรียกวิธีการแบบนี้ว่า FIFO (First-In First-Out)

  13. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 1. การเชื่อมโยงแบบสัมพันธ์ (Associative mapping) ข้อเสีย คือ เมื่อมีการอ่านข้อมูลของแคชในแต่ละครั้ง ฟังก์ชั่นนี้จะต้องทำการค้นหา Address ทั้งหมดภายในแคชให้ตรงกับ Address ที่อ้างอิงถึง ซึ่งการอ่านหรือการค้นหา Address แบบลำดับ (Sequential) นี้เป็นสิ่งที่ยอมรับไม่ได้ เพราะว่าเวลาที่ใช้ในการเข้าถึงข้อมูลจะช้ามาก ดังนั้น ข้อมูล Address ที่เก็บในหน่วยความจำแคชนี้จึงควรถูกแยกเก็บไว้ในหน่วยความจำที่เก็บ Address โดยเฉพาะ (content-addressable memory) ซึ่งจะทำให้การค้นหาข้อมูลแบบสัมพันธ์นี้เป็นไปในลักษณะคู่ขนานได้ (Parallel)

  14. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) การเชื่อมโยงแบบสัมพันธ์ (Associative mapping) แสดงการทำงานของแคชแบบสัมพันธ์

  15. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping) ระบบจะต้องเพิ่มโปรแกรมในการสร้างความสัมพันธ์ให้กับทุกบล็อกของข้อมูลในแคช ความสัมพันธ์ของ Address ระหว่างแคชกับหน่วยความจำหลัก

  16. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping) เช่น ถ้ามีหน่วยความจำทั้งหมด 2k เวิร์ด ในแคช และมีหน่วยความจำทั้งหมด 2n เวิร์ด ในหน่วยความจำหลัก Address ของหน่วยความจำหลักทั้งหมด n บิต จะถูกแบ่งออกเป็น 2 ฟิลด์ : จำนวน k บิตแรก เป็นฟิลด์ที่ใช้เป็นอินเด็กซ์ (Index) และ n-k บิตที่เหลือ จะใช้เป็นฟิลด์แท็ก (tag) แคชที่มีการเชื่อมโยงแบบโดยตรงนี้จะใช้ Address ทั้งหมด n บิต ในการเข้าถึงข้อมูลในหน่วยความจำหลัก และ Address จำนวน k บิต เป็นตัวอินเด็กซ์ที่จะเข้าถึงแคช ข้อเสียของวิธีนี้ที่จะทำให้อัตราการพบข้อมูลต่ำลง ก็คือถ้าเกิดบล็อกข้อมูลที่ต้องการมี Address ของ index เหมือนกัน แต่ tag ไม่เหมือนกัน ถูกเรียกใช้งานซ้ำ ๆ กันเป็นจำนวนมาก

  17. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping)

  18. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping) จากรูป อธิบายขั้นตอนการทำงาน  เริ่มต้นที่ข้อมูลที่ตำแหน่ง 00000 นั้นถูกบันทึกในแคช ซึ่งจะทำให้มีฟิลด์ index เท่ากับ 000 และฟิลด์ tag เท่ากับ 00 และข้อมูลเท่ากับ 1220  ถ้าโปรเซสเซอร์ต้องการที่จะเข้าถึงข้อมูลที่ตำแหน่ง 02000 ที่มีฟิลด์ index เป็น 000 ซึ่งจะถูกนำไปใช้ค้นหาในแคช  จากนั้น tag ทั้งสองจะถูกเปรียบเทียบซึ่ง tag ในแคชคือ 00 แต่ Address ที่ต้องการคือ 02 ซึ่งต่างกัน  ดังนั้น จึงต้องทำการเข้าถึงข้อมูลในหน่วยความจำหลัก และพบข้อมูล 5670 ซึ่งจะถูกนำเข้าไปประมวลต่อไปและข้อมูลที่อยู่ในแคชที่ตำแหน่ง 000 ก็จะถูกสับเปลี่ยน tag เป็น 02 และมีข้อมูลใหม่เป็น 5670

  19. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping) การเชื่อมโยงแคชแบบโดยตรงสำหรับบล็อกข้อมูล 8 เวิร์ด

  20. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 2. การเชื่อมโยงแบบโดยตรง (Direct mapping) แคชที่มีการเชื่อมโยงแบบโดยตรงนี้มีข้อดีตรงที่ความง่ายของระบบ แต่ก็มีข้อเสียตรงที่การนำเสนอข้อมูลลงแคชในแต่ละครั้งนั้นสามารถทำได้เพียงบล็อกข้อมูลเดียวจากในกลุ่มใดกลุ่มหนึ่ง

  21. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 3. การเชื่อมโยงแบบกลุ่มสัมพันธ์ (Block-set associative mapping) การเชื่อมโยงแบบกลุ่มสัมพันธ์ ที่จะทำให้แต่ละเวิร์ดที่อยู่ในแคชสามารถบันทึกข้อมูลที่มีฟิลด์ของ index ที่เหมือนกันได้มากกว่า 1 เวิร์ดขึ้นไป โดยข้อมูลจริงของแต่ละเวิร์ดนั้นจะถูกบันทึกพร้อมกับ tag ของมัน และจำนวนของ tag พร้อมข้อมูลในหนึ่งเวิร์ดนั้นจะถูกกำหนดเป็นกลุ่ม

  22. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 3. การเชื่อมโยงแบบกลุ่มสัมพันธ์ (Block-set associative mapping)

  23. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 3. การเชื่อมโยงแบบกลุ่มสัมพันธ์ (Block-set associative mapping) จากรูป อธิบายขั้นตอนการทำงาน  เริ่มต้นที่เวิร์ดของข้อมูลที่ตำแหน่ง 01000 และ 02000 บันทึกเก็บไว้ในแคช ที่มี Address ของ index เท่ากับ 000  เช่นเดียวกันกับข้อมูลที่ตำแหน่ง 02777 และ 00777 ถูกเก็บไว้ในแคชที่มี Address ของ index เท่ากับ 777  เมื่อซีพียูต้องการข้อมูลที่ตำแหน่ง 00777 ก็จะทำการสืบค้นข้อมูล Address 777 ในแคช

  24. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 3. การเชื่อมโยงแบบกลุ่มสัมพันธ์ (Block-set associative mapping) จากรูป อธิบายขั้นตอนการทำงาน (ต่อ)  และฟิลด์ tag ก็จะถูกเปรียบเทียบกับ tag ทั้งสองที่อยู่ในแคช ถ้าไม่พบใน tag แรก ก็จะทำการเปรียบเทียบกับ tag ที่สองต่อไป ซึ่งการสืบค้นนั้นจะทำเหมือนกับการสืบค้นในการเชื่อมโยงแบบสัมพันธ์  ถ้าฟิลด์ของ tag ตรงกัน แสดงว่าสามารถพบข้อมูลดังกล่าวในแคช ก็จะนำข้อมูลในแคชเข้าประมวลผลทันที

  25. การใช้ฟังก์ชั่นในการเชื่อมโยงข้อมูล (Mapping) 3. การเชื่อมโยงแบบกลุ่มสัมพันธ์ (Block-set associative mapping) จากรูป อธิบายขั้นตอนการทำงาน (ต่อ)  แต่ถ้าฟิลด์ tag ไม่ตรงกันก็จะเข้าไปหาในหน่วยความจำหลัก และนำข้อมูลเข้าประมวลผลพร้อมกับสับเปลี่ยนข้อมูลดังกล่าวในแคชด้วย โดยการสับเปลี่ยนข้อมูลนั้นสามารถใช้ได้หลายวิธีด้วยกัน เช่น การสับเปลี่ยนแบบสุ่ม, การสับเปลี่ยนแบบเข้ามาก่อนออกไปก่อน (FIFO) หรือการสับเปลี่ยนเอาเวิร์ดที่ใช้น้อยที่สุดในปัจจุบันออกไปก่อน (LRU : Least Recently Used)

  26. การจัดการด้านอื่น ๆ ของแคช นอกจากวิธีการเชื่อมโยงแบบต่าง ๆ ระหว่างแคชกับหน่วยความจำหลัก ยังมีการจัดการด้านอื่น ๆ ที่สำคัญในการออกแบบแคชอีกด้วย ดังนี้  วิธีการสับเปลี่ยนข้อมูล (Replacement)  วิธีการเขียนข้อมูล (Write Policy)  จำนวนของแคช แคชที่มีหลายลำดับชั้น การใช้งานแคชแบบเก็บข้อมูลรวม กับแบบแยก  การเริ่มต้นใช้งานของแคช

  27. วิธีการสับเปลี่ยนข้อมูล (Replacement) เป็นวิธีการสับเปลี่ยนแบบ การสับเปลี่ยนเข้ามาก่อน ออกก่อน หรือ FIFO ซึ่งจะทำการสับเปลี่ยนบล็อกของข้อมูลที่อยู่ในแคชนานที่สุดออกไปนั่นเอง วิธีการสับเปลี่ยนแบบนี้สามารถทำได้โดยง่ายโดยใช้เทคนิคของบัฟเฟอร์ที่เป็นวงรอบ หรือที่รู้จักในชื่อ round-robin อีกวิธีหนึ่งก็คือ การสับเปลี่ยนนำข้อมูลที่ใช้จำนวนครั้งน้อยที่สุดออกไปก่อน (Least Frequently Used, LFU) การสับเปลี่ยนบล็อกของข้อมูลที่มีจำนวนครั้งของการเรียกใช้งานน้อยที่สุดออกไป ซึ่งสามารถทำได้โดยใช้ตัวนับสำหรับเวิร์ดแต่ละตัว

  28. วิธีการสับเปลี่ยนข้อมูล (Replacement) วิธีสุดท้ายก็คือการสับเปลี่ยนแบบสุ่ม ที่ไม่ขึ้นอยู่กับบันทึกของการใช้งานของบล็อกข้อมูลว่ามากน้อยเพียงใด ซึ่งจากการศึกษาพบว่าการสับเปลี่ยนแบบนี้ไม่ได้ช่วยให้แคชทำงานมีประสิทธิภาพเพิ่มมากขึ้นมากนัก เมื่อเปรียบเทียบกับการนำบันทึกของการใช้งานเป็นปัจจัยในการคัดเลือกบล็อกของข้อมูล

  29. วิธีการเขียนข้อมูล (Write Policy) การป้องกันปัญหา มี 2 วิธี คือ 1. การเขียนทั้งหมด (Write through) คือให้มีการปรับปรุงข้อมูลในหน่วยความจำหลักทุกครั้งที่มีการเขียนข้อมูลเกิดขึ้น พร้อมกับการอัปเดทข้อมูลที่อยู่ในแคช ที่มี Address ที่ตรงกัน 2. การเขียนทีหลัง (Write-back) การปรับเปลี่ยนข้อมูลจะกระทำในแคชเท่านั้น แต่ตำแหน่งของข้อมูลดังกล่าวก็จะถูกบันทึกโดยอาจจะใช้บิตพิเศษที่เรียกว่า flag ทำการกำหนดว่าเมื่อเวิร์ดนั้นถูกนำออกมาจากแคชเมื่อใด ก็จะต้องทำการอัปเดทข้อมูลที่มีอยู่ในหน่วยความจำด้วย โดยทำการบันทึกค่าล่าสุดที่อยู่ในแคชลงไปในหน่วยความจำหลัก

  30. การเริ่มต้นใช้งานของแคชการเริ่มต้นใช้งานของแคช การพิจารณาปัญหาของการเริ่มต้นใช้งานระบบแคชนั้นจะเริ่มต้นใช้งานเมื่อมีกระแสไฟฟ้าเข้าไปเลี้ยงระบบคอมพิวเตอร์ หรือเมื่อหน่วยความจำหลักถูกโหลดโปรแกรมเริ่มต้นมาจากหน่วยความจำอื่น ๆ แคชอาจจะเริ่มต้นด้วยการกำหนดบิตตรวจสอบข้อมูลดังกล่าวเป็น 0 และบิตตรวจสอบข้อมูลจะถูกกำหนดเป็น 1 ก็ต่อเมื่อ มีบล็อกของข้อมูลถูกโหลดเข้ามาจากหน่วยความจำหลัก และเก็บไว้ในเวิร์ดดังกล่าว และมีค่าเป็น 1 ตลอดไปจนกระทั่งแคชถูกเริ่มทำงานใหม่ หรือมีการรีสตาร์ทเครื่องนั่นเอง การนำบิตตรวจสอบความถูกต้องของข้อมูลดังกล่าวมาใช้งานนั้น หมายความว่าเวิร์ดในแคชดังกล่าวจะไม่ถูกสับเปลี่ยน โดยบล็อกของข้อมูลใหม่ ถ้าบิตตรวจสอบความถูกต้องมีค่าเท่ากับ 0 แต่ข้อมูลใหม่ดังกล่าวสามารถเข้าไปแทนที่ข้อมูลนั้นได้ทันทีเพราะเป็นข้อมูลที่ไม่ถูกต้อง

  31. หน่วยความจำเสมือน (Virtual Memory) หน่วยความจำเสมือนนั้นต้องการกระบวนการเชื่อมโยงข้อมูล (mapping) ที่ซับซ้อนเช่นเดียวกับแคช

  32. หน่วยความจำเสมือน (Virtual Memory) หน่วยความจำเสมือน เป็นวิธีการหนึ่งที่สามารถทำให้โปรเซสทำงานได้ ถึงแม้ว่าโปรเซสนั้นจะไม่ได้อยู่ในหน่วยความจำหลักทั้งหมดก็ตาม โดยระบบปฏิบัติการจะทำหน้าที่เก็บบางส่วนของโปรแกรมที่กำลังทำงานไว้ในหน่วยความจำหลัก และเก็บส่วนที่เหลือไว้ในฮาร์ดดิสก์ ข้อดี คือ โปรแกรมของผู้ใช้สามารถมีขนาดใหญ่กว่าหน่วยความจำจริงก็ได้ เพราะวิธีนี้จะสร้างหน่วยความจำทางตรรกะ ให้ดูเสมือนว่ามีหน่วยความจำเป็นแถวขนาดใหญ่ โดยแยกภาพที่ผู้ใช้มองเห็นหน่วยความจำออกจากลักษณะจริงของฮาร์ดแวร์ ทำให้ผู้เขียนโปรแกรม ทำการเขียนโปรแกรมได้อย่างอิสระมากขึ้น ไม่ต้องกังวลถึงขนาดของหน่วยความจำอีกต่อไป

  33. วิธีการ และกระบวนการที่ใช้ในการสร้างหน่วยความจำเสมือน การวางโปรแกรมทับซ้อนกัน (Overlays) ใช้วิธีวางโปรแกรมทับซ้อนกันเป็นกลยุทธ์หนึ่งที่ใช้ในการจัดการกับหน่วยความจำ โดยทำหน้าที่ปรับเปลี่ยนโปรแกรมเพื่อให้ระบบสามารถควบคุมได้ว่าโปรแกรมย่อยใดที่จะอยู่ในหน่วยความจำ และทำหน้าที่เรียกโปรแกรมย่อยอื่นเข้ามาเมื่อต้องการ

  34. วิธีการ และกระบวนการที่ใช้ในการสร้างหน่วยความจำเสมือน แสดงการจัดการโปรแกรมที่ 1 โปรแกรมหลักและ 3 โปรแกรมย่อย (subroutines)

  35. การแบ่งออกเป็นหน้า (Paging) เปรียบเป็นวิธีการวางโปรแกรมทับซ้อนกัน (overlay) อีกรูปแบบหนึ่ง เป็นวิธีที่จัดการแบบอัตโนมัติโดยระบบปฏิบัติการ วิธีการทำงานเริ่มต้นโดยมีการแบ่งพื้นที่และ Address ของหน่วยความจำเสมือนออกเป็นบล็อก ๆ ที่เท่ากัน ที่เราจะเรียกว่า หน้า (Page) และขนาดของหน้านี้ โดยปกติจะมีขนาดเป็นรูปแบบบกกำลังของ 2 เช่น 210= 1024 ไบต์ การแบ่งออกเป็นหน้านี้ทำให้หน่วยความจำจริง (หน่วยความจำหลัก) ดูเหมือนมีขนาดที่ใหญ่ขึ้นเพราะมีการเชื่อมโยงหน่วยความจำหลักเข้ากับบางส่วนของหน่วยความจำเสมือน ซึ่งโดยปกติก็จะเก็บไว้ในดิสก์นั่นเอง

  36. การแบ่งออกเป็นหน้า (Paging) แสดงการเชื่อมโยงระหว่างหน่วยความจำเสมือนกับหน่วยความจำหลัก

  37. การแบ่งออกเป็นหน้า (Paging) แสดงตารางหน้าของหน่วยความจำเสมือน

  38. การแบ่งออกเป็นหน้า (Paging) ตารางหน้า (page table)  Present bit มีขนาด 1 และเป็นตัวแสดงว่าหน้าดังกล่าวอยู่ในหน่วยความจำหลักหรือไม่ 1 คือมีอยู่ในหน่วยความจำหลัก และ 0 คือไม่มีอยู่ในหน่วยความจำหลัก  Disk address จะเป็นตัวชี้หรือพอยเตอร์ (pointer) ไปยังตำแหน่งที่หน้าดังกล่าวถูกเก็บไว้ในดิสก์  Page frame จะกำหนดว่าหน้าเฟรมนี้จะไปอยู่กับเฟรมเลขที่เท่าใดในหน่วยความจำหลัก และสำหรับหน้าที่ไม่ได้อยู่ในหน่วยความจำหลัก ฟิลด์นี้จะเก็บค่าที่ไม่สื่อความหมาย ที่เราจะเขียนค่าเป็น xx

  39. การแบ่งออกเป็นหน้า (Paging) ตารางหน้า (page table) แสดงการแปลง Address หน่วยความจำเสมือนเป็น Address หน่วยความจำหลัก

  40. การแบ่งออกเป็นหน้า (Paging) บัพเฟอร์ค้นหาที่อยู่ (Translation Lookaside Buffer) การทำงานของหน่วยความจำเสมือนจะใช้เวลาในการเข้าถึงหน่วยความจำเป็น 2 เท่า วิธีการป้องกันปัญหาดังกล่าวสามารถทำได้โดยใช้บัพเฟอร์หรือหน่วยความจำพิเศษในการเก็บแถวของตารางหน้า ที่เราเรียกกันว่า บัพเฟอร์ค้นหาที่อยู่ (TLB) โดยบัพเฟอร์นี้จะทำหน้าที่เก็บแถวของตารางหน้าที่เพิ่งเรียกใช้งานเสร็จ

  41. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบมาก่อน - ออกก่อน (First-in First-out Algorithm) วิธีการนี้จะใช้เวลาที่หน้านั้น ๆ ถูกนำเข้ามาในหน่วยความจำหลักเป็นเกณฑ์ในการตัดสินใจ เมื่อต้องการเลือกหน้าบางหน้าออก ก็ให้เลือกจากหน้าที่เข้ามานานที่สุด เพียงแต่สร้างแถวคอยแบบมาก่อน – ออกก่อน (FIFO) สำหรับเก็บหมายเลขหน้าที่อยู่ในหน่วยความจำ

  42. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบมาก่อน - ออกก่อน (First-in First-out Algorithm)

  43. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบมาก่อน - ออกก่อน (First-in First-out Algorithm) ตัวอย่างต่อไปนี้จะแสดงปัญหาที่สามารถเกิดขึ้นกับวิธีคิดแบบมาก่อน – ออกก่อน ถ้าเรามีหน้าของโปรเซสที่จะเข้ามาใช้งานดังนี้ กราฟการผิดหน้าของวิธีสับเปลี่ยนแบบมาก่อน - ออกก่อน

  44. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบมาก่อน - ออกก่อน (First-in First-out Algorithm) เมื่อทดลองหา จำนวนครั้งของการผิดหน้าเทียบกับจำนวนเฟรมที่มีจะได้กราฟดังรูป จะสังเกตได้ว่า เมื่อหน่วยความจำมีเฟรมทั้งหมด 4 เฟรม จะเกิดการผิดหน้าทั้งหมด 10 ครั้ง ซึ่งมากกว่า เมื่อมีทั้งหมด 3 เฟรม ผลลัพธ์ที่ไม่ปกตินี้ เราเรียกว่า ปรากฏการณ์เบลาดี้ (Balady’s anomaly) ซึ่งแสดงให้เห็นว่า วิธีการสับเปลี่ยนหน้าบางแบบ ก็อาจจะทำให้ อัตราการผิดหน้าเพิ่มขึ้นได้ ถึงแม้ว่าเราจะเพิ่มจำนวนเฟรมขึ้นก็ตาม

  45. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบให้โอกาสครั้งที่สอง (Second Chance Page Replacement Algorithm) เราสามารถปรับปรุงวิธีแบบมาก่อน – ออกก่อน (FIFO) ได้โดยการป้องกันการเปลี่ยนหน้าที่ถูกเรียกใช้งานบ่อยออกไป ทำได้โดยการตรวจสอบที่บิต Referenced (R) ของหน้าที่เข้ามานานที่สุด ถ้าบิต R มีค่าเป็น 0 ก็แสดงว่าหน้านั้นเก่าและไม่ได้ถูกเรียกใช้งานเลย ระบบก็สามารถทำการสับเปลี่ยนได้ทันที แต่ถ้าบิต R มีค่าเท่ากับ 1 ก็ให้กำหนดให้บิต R นั้นเป็น 0 และนำหน้านั้นกลับไปเข้าแถวใหม่อีกครั้ง พร้อมกับทำการเปลี่ยนแปลงเวลาของหน้านั้นใหม่เหมือนดังหน้านั้นพึ่งเข้ามาในหน่วยความจำ จากนั้นก็ทำการค้นหาหน้าที่จะถูกสับเปลี่ยนต่อไป

  46. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบให้โอกาสครั้งที่สอง (Second Chance Page Replacement Algorithm)

  47. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบวงรอบนาฬิกา (Clock Page Replacement Algorithm) ให้เราเรียงเฟรมทุกเฟรมเป็นรูปวงกลมให้เหมือนรูปนาฬิกา และมีเข็มนาฬิกาชี้ไปที่หน้าเก่าที่สุด

  48. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบวงรอบนาฬิกา (Clock Page Replacement Algorithm) เมื่อมีการผิดหน้าเกิดขึ้น หน้าที่มีเข็มนาฬิกาชี้อยู่จะถูกตรวจสอบ ถ้าบิต R มีค่าเป็น 0 หน้านั้นก็จะถูกสับเปลี่ยนออกไป และหน้าใหม่ก็จะถูกใส่เข้ามาในตำแหน่งเดิม พร้อมกันนั้น เข็มนาฬิกาก็จะทำการเลื่อนไปด้านหน้า 1 ตำแหน่ง แต่ถ้าบิต R ถูกกำหนดเป็น 1 ก็ให้ลบค่าของบิตนั้นเป็น 0 และเลื่อนเข็มไปหน้าถัดไป วิธีการดังกล่าวจะถูกทำซ้ำจนกว่าเราจะได้หน้าที่มีบิต R เป็น 0 ซึ่งวิธีการนี้จะเหมือนวิธีการแบบให้โอกาสครั้งที่ 2 เลย เพียงแต่แตกต่างกันไปในวิธีการใช้งานเท่านั้น

  49. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบที่ดีที่สุด (Optimal Page Replacement Algorithm) วิธีสับเปลี่ยนหน้าแบบที่ดีที่สุดนี้เราเรียกว่า OPT หรือ MIN ซึ่งมีวิธีการดังนี้คือ ให้เลือกสับเปลี่ยนหน้าที่จะไม่ถูกเรียกใช้งาน และมีระยะเวลารอการเรียกใช้ที่นานที่สุด

  50. การสับเปลี่ยนหน้า (Page Replacement Algorithms) วิธีสับเปลี่ยนแบบที่ดีที่สุด (Optimal Page Replacement Algorithm)

More Related