Download
chapter 5 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Chapter 5 PowerPoint Presentation

Chapter 5

196 Vues Download Presentation
Télécharger la présentation

Chapter 5

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. Chapter 5 การจัดการหน่วยความจำ (Memory Management)

  2. การจัดลำดับชั้นของหน่วยความจำแบ่งได้เป็น 3 กลุ่มคือ • หน่วยความจำภายใน(Internal memory)หน่วยความจำนี้บางครั้งเรียกว่า แคช (Cache memory) ประกอบด้วยรีจิสเตอร์ความเร็วสูง หน่วยความจำนี้ถูกใช้เก็บคำสั่งและข้อมูลที่ต้องการทำงานด้วยความเร็วสูงมาก และเป็นหน่วยความจำที่หน่วยประมวลผลกลางสามารถเข้าถึงได้โดยตรงและรวดเร็ว • หน่วยความจำหลัก(Main memory)หน่วยความจำความเร็วสูง ใช้สำหรับเก็บคำสั่งและข้อมูลระหว่างการทำงาน จะเป็นหน่วยความจำที่หน่วยประมวลผลกลาง สามารถเข้าถึงได้โดยตรงและรวดเร็ว • หน่วยความจำสำรอง(Secondary memory)หน่วยความจำที่มีความเร็วน้อยกว่าหน่วยความจำสองประเภทแรก ใช้สำหรับเก็บข้อมูลที่มีขนาดใหญ่ และยังไม่ต้องการนำมาประมวลผล

  3. การจัดการหน่วยความจำ คืออะไร?? คือ การเข้าถึงข้อมูล การอ่านข้อมูล การเขียนข้อมูลลงหน่วยความจำอย่างชาญฉลาดด้วยวิธีและเทคนิคต่าง ๆ โดยมีวัตถุประสงค์เพื่อให้ระบบใช้เวลาน้อยที่สุดในการอ่านเขียนข้อมูล และได้ข้อมูลที่ถูกต้องตามที่ระบบต้องการ การจัดการหน่วยความจำ มีอยู่ 3 ส่วนหลัก ๆ คือ ส่วนฮาร์ดแวร์, ส่วนระบบปฏิบัติการ และส่วนโปรแกรมประยุกต์

  4. Hardware Memory Management • เป็นเรื่องเกี่ยวกับการจัดการหน่วยความจำในระดับฮาร์ดแวร์ เกี่ยวข้องกับวงจรอิเล็กทรอนิกส์ รายละเอียดแผงวงจร วงจรทำงานอย่างไรเวลาจะเก็บข้อมูล อ่านข้อมูล และตรวจสอบข้อมูล เป็นต้น Operating System Memory Management • เป็นเรื่องเกี่ยวกับการจัดการหน่วยความจำในส่วนของระบบปฏิบัติการ ซึ่งจะเป็นส่วนที่คงที่ ระบบปฏิบัติการจะกันเอาไว้ส่วนหนึ่งเพื่อใช้เก็บตัวเอง ต่างจากส่วนของโปรแกรมประยุกต์ที่เมื่อเลิกใช้พื้นที่ส่วนนั้นก็จะคืนให้ระบบ เพื่อนำไปใช้กับโปรแกรมอื่นต่อไป

  5. Application Memory Management • หน่วยความจำส่วนนี้ จะเป็นหน่วยความจำแบบหมุนเวียน(recycling) โดยโปรแกรมไหนใช้เสร็จก็จะคืนส่วนที่ใช้นั้นให้ระบบนำไปใช้จัดการให้โปรแกรมตัวอื่นต่อไป การจัดการหน่วยความจำในส่วนของโปรแกรมประยุกต์มีหน้าที่หลัก 2 อย่างคือ • การขอพื้นที่(Allocation) • การหมุนเวียนหน่วยความจำ (Recycling)

  6. การขอพื้นที่ (Allocation) • เมื่อโปรแกรมร้องขอพื้นที่ ระบบปฏิบัติการจะต้องจัดหาพื้นที่ที่เพียงพอต่อคำร้องขอ และจัดส่งตำแหน่งของพื้นที่นั้นไปสู่ตัวโปรแกรม เพื่อที่ตัวโปรแกรมจะได้รู้ว่าต้องนำงานไปเก็บไว้ที่ตำแหน่งใด ในการจัดการหน่วยความจำ จะมีส่วนที่ใช้จองพื้นที่ เราเรียกส่วนนี้ว่า Allocator

  7. การหมุนเวียนหน่วยความจำ (Recycling) เมื่อโปรแกรมประยุกต์ปิดลง พื้นที่ที่โปรแกรมประยุกต์ใช้อยู่ระบบต้องเก็บกลับคืนมา เพื่อนำกลับมาใช้ใหม่ การหมุนเวียนหน่วยความจำทำได้ 2 วิธีคือ • ทำใช้เอง (Manual memory management)เป็นวิธีที่นักพัฒนาโปรแกรมเขียนคำสั่งในการคืนหน่วยความจำฝังไว้ในตัวโปรแกรม และเมื่อเลิกใช้โปรแกรม โปรแกรมก็จะนำพื้นที่มอบคืนให้แก่ระบบเอง(ระบบไม่ต้องตามเก็บ)

  8. การหมุนเวียนหน่วยความจำ (Recycling)..ต่อ • ระบบทำ (Automatic memory management)เป็นวิธีที่ระบบจะมีตัวจัดการพื้นที่ (บางครั้งจะเรียกว่าตัวเก็บขยะGarbage collection) ตัวจัดการนี้จะมองหาพื้นที่ที่จองไว้ แต่ไม่มีโปรแกรมเข้ามาใช้ ตัวจัดการพื้นที่จะทำการเก็บพื้นที่เหล่านั้นคืนสู่ระบบ

  9. ปัญหาของการจัดการหน่วยความจำปัญหาของการจัดการหน่วยความจำ • Premature Freeเป็นปัญหาที่เกิดจากโปรแกรมคืนพื้นที่หน่วยความจำไปแล้ว แต่ต้องการใช้พื้นที่นั้นอีก ปัญหานี้เกิดจากการใช้ Manual memory managementในการจัดการหน่วยความจำ ซึ่งบางครั้งผู้พัฒนาโปรแกรมอาจสั่งผิดพลาด สั่งยกเลิกพื้นที่ไปก่อน แล้วจึงสั่งคำสั่งในการเข้าใช้พื้นที่ ทำให้เกิดปัญหาข้อมูลไม่ถูกต้อง หาข้อมูลไม่พบ • Double Freeปัญหาที่เกิดจากการคืนพื้นที่หน่วยความจำซ้ำ อาจมีการสั่งคืนพื้นที่ซ้ำซ้อน กรณีคืนพื้นที่ในครั้งแรกยังไม่มีปัญหา แต่เมื่อพื้นที่นั้นถูกนำไปใช้กับโปรแกรมอื่น และต่อมาถูกโปรแกรมเดิมคืนพื้นที่ซ้ำ อาจทำให้ระบบเกิดปัญหาในการทำงานได้ • Memory Leakเป็นปัญหาที่เกิดจากโปรแกรมทำงานผิดพลาด จองพื้นที่ไปเรื่อย ๆ ซ้ำๆ แต่ไม่ยอมคืนพื้นที่กลับสู่ระบบ สุดท้ายทำให้หน่วยความจำหมด

  10. P3 P3 P0 P1 P2 @@@@@@ @ @@@@ @@ @@@ ปัญหาของการจัดการหน่วยความจำ • External Fragmentationเป็นปัญหาที่เกิดจากตัวAllocatorไม่เก่ง เมื่อทำงานในการแจกพื้นที่และตามเก็บพื้นที่ไปสักช่วงเวลาหนึ่ง จะพบว่า พื้นที่ว่างถูกพื้นที่ใช้งานแบ่ง ทำให้พื้นที่ว่างต่อเนื่องยาว ๆ ไม่มีให้ใช้ การที่ระบบมีพื้นที่ว่างพอ แต่ไม่สามารถนำมาใช้งานได้ เพราะพื้นที่ว่างถูกพื้นที่ใช้งานแบ่งเป็นพื้นที่ย่อย ๆ • Internal Fragmentationปัญหาที่เกิดจากการจองพื้นที่หน่วยความจำมากกว่าขนาดข้อมูล พื้นที่ที่จองเกินนั้นจะเกิดเป็นช่องว่างของพื้นที่สูญเปล่าเพราะถูกจองไว้ แต่ไม่ได้ใช้ เป็นปัญหาที่เกิดขึ้นภายในพื้นที่ที่จองไว้

  11. OPQRST ABCDEF UVWXYZ HIJKLMN ปัญหาของการจัดการหน่วยความจำ • Poor locality of Referenceเป็นปัญหาที่เกิดจากการเรียงพื้นที่ไม่ต่อเนื่อง บางครั้งพื้นที่ย่อยหลาย ๆ พื้นที่มีการเก็บข้อมูลที่ต่อเนื่อง ถ้าระบบจัดเก็บพื้นที่เหล่านั้นห่างกัน หรือไม่เป็นไปตามลำดับ จะทำให้การอ่านเขียนมีประสิทธิภาพต่ำ เป็นปัญหาที่ทำให้ระบบโดยรวมทำงานช้าได้

  12. 1005 Physical address 0 1000 P0 0 5 Virtual address การจัดสรรพื้นที่ (Memory Allocation) • Virtual addressคือ ตำแหน่งเสมือนที่อ้างอิงโดยโปรแกรม • Physical addressคือ ตำแหน่งจริงที่อ้างอิงโดยหน่วยความจำ เช่น Program P0 อ้างอิงตำแหน่งที่ 5 (Virtual address = 5) แต่ในหน่วยความจำจะเป็นตำแหน่งที่ 1005 (Physical address = 1005) ดังภาพ

  13. การจัดสรรพื้นที่ (Memory Allocation) • Memory Management Unit : MMUคือส่วนของฮาร์ดแวร์ที่รับผิดชอบในการจัดการหน่วยความจำแทนซีพียู โดยหน้าที่หลัก ๆ ของ MMU จะรับ Virtual address จากซีพียู และแปลงเป็น Physical address เพื่ออ้างอิงตำแหน่งจริงจากหน่วยความจำ ทำการป้องกันข้อมูล(Memory Protection)ไม่ให้โปรแกรมไม่หวังดีเข้าถึงได้ ทำการจัดการหน่วยความจำแคช(Cache control) ดูแลการจัดส่งข้อมูล (Bus arbitration) อย่างถูกต้องครบถ้วนและปลอดภัย

  14. 0 5 10 20 5 P0 10 P1 20 P2 Null Start การเชื่อมโยงพื้นที่ว่าง (Free Lists) • เป็นรูปแบบในการจัดสรรพื้นที่หน่วยความจำ ที่มีรูปแบบที่ง่ายที่สุด เข้าใจง่ายที่สุด ซับซ้อนน้อยที่สุด ฟรีลิสต์ คือ การเชื่อมพื้นที่ว่างให้เป็นแถวต่อเนื่องกัน โดยใช้การลิงค์ (linked list)ที่ตำแหน่งแรกของทุกพื้นที่ว่างจะเก็บตำแหน่งของพื้นที่ว่างถัดไปเสมอ ดังภาพ จากภาพ ตำแหน่งแรกของพื้นที่ว่างที่ 1 จะเก็บค่า 5 เป็นค่าตำแหน่งแรกของพื้นที่ว่างที่ 2 และตำแหน่งแรกของพื้นที่ว่างที่ 2 เก็บค่าตำแหน่งของพื้นที่ว่างถัด ๆ ไปเรื่อย เชื่อมต่อกันเป็นลูกโซ่ โดยระบบจะค้นหาพื้นที่ว่างได้ โดยใช้การไล่ตามการเชื่อมโยง เมื่อมีการคืนพื้นที่ เกิดพื้นที่ว่างใหม่ ระบบจะทำการเชื่อมโยงพื้นที่ว่างนั้นเข้ากับแถวการเชื่อมโยงเดิม และเมื่อมีการร้องขอพื้นที่เพิ่ม ระบบจะไล่หาพื้นที่ตามการเชื่อมโยงไปเรื่อย ๆ จนกว่าจะพบพื้นที่ว่างที่เพียงพอกับความต้องการจึงหยุดค้นหา

  15. วิธีการเลือกพื้นที่ในฟรีลิสต์ มี 3วิธี • First-Fit เป็นการเลือกพื้นที่แรกที่เจอ วิธีนี้จะหาพื้นที่ได้เร็วที่สุด โดยระบบจะไล่ตามการเชื่อมโยงไปเรื่อย ๆ จนพบพื้นที่ว่างที่ใหญ่เพียงพอก็หยุดและใช้พื้นที่นั้นเลย • Best-Fit เป็นการเลือกพื้นที่ที่มีขนาดพอดีกับความต้องการมากที่สุด วิธีนี้ระบบต้องไล่ตามการเชื่อมโยง 1 รอบก่อนจึงจะสามารถตัดสินใจเลือกพื้นที่เหมาะสมกับความต้องการมากที่สุดได้ วิธีนี้จะใช้เวลามากกว่าแบบ First-Fit เพราะต้องตรวจสอบพื้นที่ทั้งหมดในระบบให้ครบเสียก่อน จึงจะสามารถเลือกพื้นที่ได้ แต่จะทำให้ external fragmentation มีขนาดเล็กที่สุด • Worst-Fit ตรงข้ามกับ Best-Fit คือเลือกพื้นที่ที่มีขนาดใหญ่กว่าความต้องการมากที่สุด วิธีนี้จะทำให้ external fragmentation มีขนาดใหญ่พอที่จะสามารถนำกลับมาใช้ได้

  16. P4 P0 P1 P2 First-Fit P4 P0 P1 P2 Best-Fit P4 P0 P1 P2 Worst-Fit เปรียบเทียบการเลือกพื้นที่ด้วยวิธีต่าง ๆ

  17. ปัญหาExternal Fragmentation คือ การที่พื้นที่ว่างถูกแตกเป็นส่วนย่อย ๆ มากจนเกินไป จนไม่สามารถนำมาใช้งานได้ P1 P2 P3 P5 P4 จากภาพจะพบว่าพื้นที่ว่างเริ่มมีการแตกเป็นส่วน (Fragmentation)เมื่อมีการคืนพื้นที่และมีการนำพื้นที่มาใช้ต่อพื้นที่ว่างจะถูกหั่นเป็นส่วน ๆ มากยิ่งขึ้น การเกิด External fragmentationจะมีผลกระทบต่อระบบ ทำให้ไม่สามารถใช้งานทรัพยากรได้อย่างเต็มที่ บางโอกาสที่ควรใช้ได้ กลับไม่สามารถใช้ได้ ทั้งที่มีทรัพยากรเหลือพอ

  18. การแก้ปัญหาExternal Fragmentation • ทำได้โดยย้ายตำแหน่งของพื้นที่ใช้งานให้เลื่อนมาติดกัน ซึ่งเราเรียกว่า Compactionแต่การทำเช่นนี้ต้องแลกด้วย Cost • Costคือ ค่าใช้จ่ายที่ระบบต้องเสียไปในการทำงาน เช่น เวลา พลังงาน ประสิทธิภาพ ซึ่งทั้งหมดนี้จะมีผลต่องานที่ทำอยู่ • Compactionคือการกระชับหน่วยความจำ เพื่อให้พื้นที่ว่างรวมกันเป็นผืนเดียว ซึ่งสามารถกระชับได้หลากหลายหนทาง และแต่ละหนทางก็จะมีค่าใช้จ่ายแตกต่างกัน

  19. ตัวอย่างการกระชับหน่วยความจำแบบต่าง ๆ 1800k 1200k 1600k 0 200k 300k 700k 900k P1 P2 P3 P4 Before Move P3+P4 600k 1800k 0 200k 300k 500k 900k After (a) P1 P2 P3 P4 900 k Move 400k 1800k 0 200k 300k 700k 900k After (b) P3 P1 P2 P4 900 k Move 200k 1800k 1200k 1600k 0 200k 300k After (c) 900 k P4 P3 P1 P2

  20. การกระชับหน่วยความจำที่ดีการกระชับหน่วยความจำที่ดี • จากภาพที่ผ่านมา ระบบที่ดีต้องเลือกรูปแบบที่กระชับที่สุด เสียค่าใช้จ่ายน้อยที่สุด จึงเลือก แบบ Cเป็นรูปแบบกระชับหน่วยความจำที่ดีที่สุด • ในการกระชับหน่วยความจำเพื่อแก้ปัญหา External fragmentationของพื้นที่ว่าง • สรุปข้อดี-ข้อเสียของฟรีลิสต์ ข้อดีคือ ระบบไม่ซับซ้อน การออกแบบสร้างระบบทำได้ง่าย ข้อเสีย คือ เกิด external fragmentationและแก้ไขปัญหานี้ทำได้ยากด้วย

  21. การแบ่งพื้นที่เป็นหน้า (Paging) เพจจิ้ง คือ การแบ่งหน่วยความจำเป็นหน้า ๆ ขนาดเท่ากัน หลักการของเพจจิ้ง  หน่วยความจำจะถูกแบ่งออกเป็นพื้นที่เท่า ๆ กัน เรียงต่อกันไปเรื่อย ๆ ไม่มีช่องว่าง จนหมดพื้นที่หน่วยความจำ  การจองหน่วยความจำจะจองเป็นตัวเลขลงตัวเสมอ เช่น ข้อมูลขนาด 3 หน้าครึ่ง จะจองพื้นที่ 4 หน้าเป็นต้น  การรับ Virtual address จากซีพียู และแปลงเป็น Physical address เพื่ออ้างอิงตำแหน่งจริงจากหน่วยความจำ จะเป็นหน้าที่ของ Memory Management Unit เพื่อช่วยลดบทบาทการทำงานของซีพียู

  22. 7 7 1 3 การทำงานของPaging • Paging สามารถใช้จำนวนหน้าที่ไม่ติดกันได้ และในการจองพื้นที่ก็จะไม่เหลือพื้นที่ว่างคั่นไว้ จึงทำให้ไม่เกิดปัญหา external fragmentation Frame Number Virtual Address Physical address Page Number Page Table

  23. การทำงานของPaging • Page Tableคือ ตารางที่ใช้จับคู่ตัวเลข Page Number และ Frame Number ซึ่งจะเก็บไว้ในหน่วยความจำ • Page Numberคือ ตัวเลขหน้า เป็นตัวเลขเสมือน (Virtual Address) ที่ใช้อ้างอิงตำแหน่งในโปรแกรม • Frame Numberคือ ตัวเลขเฟรม เป็นตัวเลขจริง (Physical Address) ที่ใช้อ้างอิงตำแหน่งในหน่วยความจำ

  24. การทำงานของPaging • จากภาพโปรแกรม a ใช้พื้นที่ 3 หน้า (Pa0,Pa1,Pa2) โปรแกรม b ใช้พื้นที่ 1 หน้า (Pb0) และโปรแกรม c ใช้พื้นที่ 2 หน้า (Pc0,Pc1) • เริ่มต้นเมื่อมีการอ้างอิงตำแหน่ง ซีพียูจะส่ง Virtual Address ให้ MMU จากนั้น MMU จะแบ่งตัวเลขมา 2 ชุด คือ ตัวเลขหน้า(Page Number) และตัวเลขบรรทัด(Page Offset) จากภาพคือ หน้าที่ 1 บรรทัดที่ 7 • ในส่วนของตัวเลขหน้า MMU จะนำไปจับคู่ที่ตาราง Page Table ที่อยู่ในหน่วยความจำ เมื่อพบจะได้ตัวเลขเฟรม (Frame Number) ตัวเลขเฟรมที่ได้ MMU จะนำมารวมกับตัวเลขบรรทัดเดิม ได้ผลลัพธ์เป็น Physical Address ที่ใช้ระบุตำแหน่งในหน่วยความจำ จากภาพคือ เฟมที่ 3 บรรทัดที่ 7 เมื่อได้ตำแหน่งก็นำข้อมูลในตำแหน่งนั้นส่งให้ซีพียู

  25. Paging และการแก้ไขปัญหา External Fragmentation • การจองพื้นที่ในเพจจิ้งจะจองเป็น nPage เสมอ โดยค่า n จะเป็นจำนวนเต็ม และ Page คือปริมาณข้อมูลใน 1 หน้ากระดาษ • ตัวอย่างเช่น เรากำหนด ให้ 1 Page เก็บข้อมูล 1024 ไบต์ ดั้งนั้นถ้าเรามีข้อมูล 9555 ไบต์เราจะต้องจองพื้นที่เท่ากับ 10 Page • การจองลักษณะนื้จะทำให้ปัญหาExternal Fragmentationไม่เกิด เพราะการจองพื้นที่และคืนพื้นที่จะใช้ในอัตราส่วนเดียวกัน เช่น จอง 3 Page เมื่อใช้เสร็จคืนพื้นที่ ต่อมา 3Page นั้นถูกนำไปใช้ต่อ 2 Page เหลือช่องว่าง 1 Page เราไม่นับช่องว่างนี้เป็น External fragmentation เพราะช่องว่างนี้สามารถนำมาใช้งานต่อได้ (ช่องว่างที่เล็กที่สุดในเพจจิ้งจะมีขนาดเท่ากับ 1Page แต่ในฟรีลิสต์ช่องว่างสามารถเล็กกว่านั้นได้อีก บางกรณีอาจเล็กเพียงแค่ 5-6 ไบต์เท่านั้น)

  26. ปัญหา Internal Fragmentation แม้เพจจิ้งจะช่วยแก้ปัญหา External Fragmentation แต่ก็จะเกิดปัญหาใหม่ขึ้นมา คือ Internal Fragmentation และการมีตาราง Page Table • Internal Fragmentation คือการใช้งานพื้นที่ไม่คุ้มค่า จากหลักการของเพจจิ้ง จะมีน้อยครั้งมากที่ขนาดของข้อมูลกับขนาดหน้าจะเท่ากันพอดี ส่วนใหญ่จะเหลื่อม ทำให้ต้องเสียหน้าเพิ่มขึ้นอีกหน้า เกิดช่องว่างไม่ได้ใช้ภายในพื้นที่ที่จอง ยกตัวอย่างเช่น ใน1Page เรากำหนดให้เก็บข้อมูลได้ 1024 ไบต์ ตัวข้อมูลมี 9555ไบต์ เพราะฉะนั้นต้องจอง 10Page แต่ในความเป็นจริง 10Page คือพื้นที่เท่ากับ 10240 ไบต์ เกิด Internal Fragmentation ขนาด 685 ไบต์ ปัญหา Internal Fragmentation แสดงการเก็บข้อมูลไม่เต็มหน้า เกิดพื้นที่สูญเปล่า

  27. ปัญหา Internal Fragmentation ในการใช้งานจริง โดยเฉลี่ยแล้วการจองพื้นที่แต่ละครั้งจะเสียพื้นที่ สูญเปล่า (wasted spaces) ไปประมาณครึ่งหนึ่งเสมอ ดังนั้นจึงต้องเลือกขนาดหน้าให้เล็กที่สุดเพื่อลดการสูญเสียพื้นที่เปล่า แต่ไม่ควรเลือกเล็กจนเกินไป เพราะถ้าแบ่งหน้าถี่ การจอง 1 ครั้งต้องใช้จำนวนหน้าเพิ่ม ข้อมูลในตาราง Page table ก็มากแถวตาม ถ้าตารางมีข้อมูลมาก ขนาดใหญ่ การค้นหาข้อมูลเพื่อจับคู่ก็จะช้าตามไปด้วย

  28. ปัญหา Page Table Page Table เป็นหัวใจหลักในการทำงานของเพจจิ้ง การเพิ่มตารางทำให้ระบบต้องมีตัวจัดการตารางที่ดี เพราะถ้าไม่ดีอาจกลายเป็นตารางปัญหาของระบบก็เป็นได้ ในระบบเพจจิ้งมีการนำตาราง Page Table มาใช้ การทำงานของระบบจะช้าลง เพราะในการทำงานแต่ละครั้งระบบต้องอ่านหน่วยความจำสองหน หนแรกเพื่อหาตำแหน่งเฟรม หนที่สองเพื่อทำงานกับข้อมูลที่ต้องการในเฟรมนั้น data Frame number Page number

  29. ปัญหา Page Table เมื่อมีการอ่านหน่วยความจำครั้งแรก จะเกิดอะไรขึ้น? เมื่อ MMU นำค่าเพจ(Page Number) มาเทียบในตาราง Page table การเปรียบเทียบจะเริ่มตั้งแต่ข้อมูลบรรทัดที่ 1 ไล่ไปเรื่อย ๆ จนพบเลขหน้าที่ต้องการเปรียบเทียบ เราจะเรียกว่า liner search (หรือsequential search) มีความสะดวกในการออกแบบสร้างระบบ แต่ทำงานช้าเมื่อนำมาใช้กับข้อมูลปริมาณมาก Page number Frame number Page Table

  30. สรุปข้อดี-ข้อเสียของเพจจิ้งสรุปข้อดี-ข้อเสียของเพจจิ้ง • ข้อดี – ช่วยแก้ปัญหา external fragmentation • ข้อเสีย – เกิดปัญหา internal fragmentation การอ้างอิงตำแหน่ง ทุกครั้งจะต้องอ่านหน่วยความจำ 2 ครั้งเสมอ เพิ่มค่าใช้จ่ายระบบ เพราะต้องใช้ฮาร์ดแวร์ (MMU)ช่วย

  31. Homework • Manual Memory Managementและ Automatic Memory Management ต่างกันอย่างไรจงอธิบาย • ปัญหาของการจัดการหน่วยความจำ 6 ประการมีอะไรบ้างจงอธิบาย • จงอธิบายคำศัพท์ต่อไปนี้ • Virtual address • Physical address • Memory management Unit

  32. Homework 4)Given five memory partitions of 100 KB, 500 KB, 200 KB, 300 KB, and 600 KB (inorder), - How would each of the first-fit, best-fit, and worst-fit algorithms place processes of 212 KB, 417 KB, 112 KB, and426 KB (inorder)? - Which algorithm makes the most efficient use of memory?

  33. ขอบเขตของ address และ Virtual memory ในระบบคอมพิวเตอร์แบบ 32 บิต และ 64 บิต ตำแหน่งที่อ้างอิงได้ที่เป็นตำแหน่งของ Virtual address หรือประมาณ 4G(4พันล้านตำแหน่ง) ส่วนขอบเขตของ Physical address คือ จำนวนหน่วยความจำที่มีในเครื่องสำหรับเครื่องทั่วไปจะมีหน่วยความจำสูงสุดได้ 2G (2 พันล้านตำแหน่ง) หรือต่ำกว่านั้น เช่น 256 M (2.5 ร้อยล้านตำแหน่ง) ดังนั้น ส่วนต่างระหว่าง Virtual address และ Physical address จะเห็นว่าVirtual address มีตำแหน่งมากกว่า ถ้าการทำงานของคอมพิวเตอร์มีการใช้จำนวนเพจมากกว่าเฟรม ระบบจะทำงานอย่างไร ในกรณีที่มีการทำงานหลายโปรแกรมพร้อมกัน

  34. ขอบเขตของ address และ Virtual memory โอกาสที่จำนวนเพจที่ต้องการใช้จะมีมากกว่าจำนวนเฟรมที่มีในเครื่อง มีความเป็นไปได้สูง ในกรณีนี้ระบบจะนำข้อมูลในเฟรมบางส่วนเก็บลงฮาร์ดดิสก์ ซึ่งข้อมูลเหล่านั้นจะเก็บลงฮาร์ดดิสก์ในส่วนที่กันเอาไว้เพื่อใช้เป็น Virtual memory เราเรียกการทำเช่นนี้ว่า การย้ายออก (Swap out)

  35. ขอบเขตของ address และ Virtual memory

  36. ขอบเขตของ address และ Virtual memory ส่วนในตาราง Page table ก็ต้องมีบิตเพื่อใช้ในการตรวจสอบว่า ข้อมูลใดอยู่ในหน่วยความจำหลัก ข้อมูลใดถูกย้ายไปเก็บในหน่วยความจำเสมือน ถ้าข้อมูลในบิตเป็น Valid (ใช้ได้) แสดงว่า ข้อมูลในเพจนั้นเก็บอยู่ในหน่วยความจำหลัก แต่ถ้าข้อมูลใช้ไม่ได้ (Invalid) แสดงว่าข้อมูลในเพจนั้นเก็บอยู่ในหน่วยความจำเสมือน ระบบต้องทำการดึงข้อมูลนั้นกลับมาเก็บในหน่วยความจำหลัก การดึงข้อมูลจากหน่วยความจำเสมือนมาเก็บในหน่วยความจำหลักเราเรียกว่า การย้ายเข้า (swap in) แต่ถ้าหน่วยความจำเต็ม ระบบอาจต้องเอาข้อมูลอื่นที่ไม่ใช้ไปเก็บในหน่วยความจำเสมือนก่อน

  37. ขอบเขตของ address และ Virtual memory

  38. ขอบเขตของ address และ Virtual memory การที่ระบบเรียกใช้เพจที่ใช้ไม่ได้(invalid) เราเรียกว่า Page Fault เมื่อเกิด Page Fault ขึ้นกระบวนการที่ถูกเรียกเพจหน้านั้นจะถูกยกเลิกไป ระบบก็จะนำข้อมูลเพจนั้นกลับเข้าสู่หน่วยความจำหลัก (swap in) จากนั้นก็ทำการปรับปรุงตารางจาก invalid เป็น valid สุดท้ายส่งสัญญาณไปให้ระบบเพื่อเริ่มทำกระบวนการนั้นใหม่อีกครั้ง

  39. Page Fault 1 ระบบอ้างอิงเลขเพจที่เป็น invalid 2 ส่งสัญญาณขอให้ระบบยกเลิกกระบวนการนั้น 3 ค้นหาเพจที่ต้องการในหน่วยควาจำเสมือน 4 Swap in หน้านั้นออกมาเก็บในหน่วยความจำ 5 ปรับปรุงตารางเพจเป็น valid 6 ส่งสัญญาณพร้อมให้ระบบเริ่มต้นกระบวนการใหม่

  40. Page Fault การที่มีหน่วยความจำเสมือน ทำให้ระบบสามารถรันโปรแกรมต่าง ๆ ได้มากขึ้น เครื่องมีพื้นที่หน่วยความจำรวมเพิ่มขึ้น ทำงานได้หลากหลายพร้อม ๆ กันได้มากขึ้น แต่การทำเช่นนี้มีข้อเสีย คือ เมื่อระบบสามารถรองรับเพจได้มากขึ้น จำนวนข้อมูลในตารางเพจก็จะมีมากขึ้นตาม ถ้ามีข้อมูล 1 เพจ ต้องใช้ข้อมูล 1 แถวในตาราง Page table เพื่อมาใช้อ้างอิง เพราะฉะนั้นในตารางจึงมีความเป็นไปได้ที่จะมีจำนวนแถวสูงสุดถึง 1 ล้านแถวในตาราง ซึ่งถ้าเป็นเช่นนั้นการทำ linear search เพื่อหาข้อมูลจะเป็นเรื่องที่เป็นไปได้ยาก

  41. Page Directory การแก้ปัญหานี้ทำได้โดยแบ่ง Page table เป็นหลาย ๆ ชั้น หรือที่เรียกว่า Page directory หรือการสร้างตารางแบบย้อนกลับ Inverted page table หรือการใช้อุปกรณ์ฮาร์ดแวร์ช่วยเหลือ TLB : Translation Lookaside Buffer) บางครั้งเรียกว่า Multilevel page table เทคนิคนี้คือการแบ่งตาราง เป็นตารางย่อยซ้อนกันหลายชั้น คล้ายการเก็บไฟล์ในไดเร็กทอรี่เป็นชั้น ๆ ซึ่งปกติเวลา CPU ส่ง Virtual address ให้ MMU ตัว MMU จะแบ่ง Virtual address เป็น 2 ส่วน คือ เลขเพจและเลขบรรทัด (Page and offset)เช่น คอมพิวเตอร์แบบ 14 บิต Virtual address จะแบ่ง 4 บิตแรก เป็นเลขเพจและ 10 บิตหลังเป็น เลขบรรทัดเช่น Page= 4 bit , Offset = 10 bit

  42. Page Directory สมมติซีพียูอ้างอิงตำแหน่งที่ 10010001000010สี่บิตแรก คือ 9 , สิบบิตหลังคือ 66 MMU จะนำเลขเพจ 9 ไปหาเลขเฟรมในตาราง Page table สมมติว่าได้ค่าเลขเฟรมเป็น 3 เอา 3กับ 66มาต่อกัน ดังนั้นค่าตำแหน่งจริงจะเป็น 00110001000010 Start 0 9 Linear Search

  43. Page Directory แต่การนำ Page Directory มาใช้ Virtual address จะถูกแบ่งออกมากกว่านั้น เช่น แบ่งเป็น ส่วนคือ เลขตาราง เลขหน้า เลขบรรทัด (table, page, offset) เช่น Table Page Offset 2 bit 2 bit 10 bit สมมติกรณีเดิมถ้าซีพียู อ้างอิงตำแหน่งที่ 10010001000010 การค้นหาจะหาตามลำดับ โดย 2 บิตแรก จะเป็นค่า 2 (10) นำค่า 2 ไปค้นหาในตาราง Main page table เพื่อหาตำแหน่ง sub page table จากนั้นนำ 2 บิตต่อไปคือ 1(01) ไปค้นหาในตาราง sub page table เพื่อหาเลขเฟรม เมื่อได้เลขเฟรมก็นำมารวมกับเลขบรรทัดได้ค่าตำแหน่งอ้างอิงจริงขึ้นมา

  44. Start 0 Page Table Linear Search 9 Sub page table 0 Main page table Start 0 Sub page table 1 2 0 1 Linear Search Page Directory Linear Search Sub page table 3

  45. Page Directory จากตัวอย่าง เปรียบเทียบ ตัวอย่างแรกจะต้องทำการเปรียบเทียบค่า 10 ครั้งเพื่อหาค่าเฟรมที่ต้องการ แต่การใช้ Page Directory ลดการเปรียบเทียบเหลือเพียง 5 ครั้ง (3 ครั้งในตาราง Main 2 ครั้งในตาราง Sub) การทำเช่นนี้ช่วยลดระยะเวลาในการค้นหาข้อมูลในตาราง Page table แบบตารางเดี่ยวได้ แต่มีข้อเสียคือ การอ่านข้อมูลจากหน่วยความจำจะเป็น 3 ครั้ง และถ้าแบ่งชั้นมากขึ้นการเข้าอ่านข้อมูลในหน่วยความจำก็จะมากครั้งตาม

  46. Inverted Page table รูปแบบการลดตาราง Page table อีกรูปแบบหนึ่งต่างจากแบบ Page directory ที่ทำการลดตารางโดยใช้การแบ่งเป็นตารางย่อย แต่ในกรณีของ Inverted Page Table : IPT จะใช้แค่ตารางเดียวจึงไม่มีการอ่านข้อมูลจากหน่วยความจำเกิน 2 ครั้งต่อการอ้างอิงตำแหน่ง 1 ครั้ง IPT จะสร้างตารางอ้างอิงจากเลขเฟรม แทนที่การสร้างตารางอ้างอิงจากเลขเพจแบบเดิม ถ้าในเครื่องมีหน่วยความจำที่เมื่อแบ่งเฟรมแล้วได้ 6.5 หมื่นเฟรม ตารางแถวสูงสุดจะมีไม่เกิน 6.5 หมื่นแถวเช่นกัน นอกจากลดตารางแล้ว ภายใน IPT แต่ละแถวจะมีการลิงค์หน้าเพจไว้ด้วย ในความเป็นจริง จำนวนเพจจะมากกว่าจำนวนเฟรม ฉะนั้นในแต่ละแถวจะลิงค์ข้อมูลได้มากกว่า 1 เพจขึ้นไป

  47. pagea pagek pageo null pageb null pagec null paged null pagel null pagee pagef null pageg pagem null pageh null pagei pagen pagep null pagej null Inverted Page Table การค้นหาข้อมูล ถ้าเป็นตารางแบบเดิม แต่ละแถว คือเพจ แต่ละหน้า เราสามารถใช้เลขเพจไล่ตามแถวไปเรื่อย ๆ ได้ แต่ถ้าเป็นตาราง IPT แถวแต่ละแถวคือเลขเฟรม เราไม่สามารถนำเลขเพจมาเทียบกับเลขเฟรมได้โดยตรง แต่เราจะใช้วิธี Hash เข้ามาช่วย

  48. Hash คือการคำนวณเพื่อให้ผลลัพธ์ออกมาอยู่ในขอบเขตที่เราต้องการ หรือจำกัดได้ เช่น สูตรคำนวณ Hash หรือเรียกว่า Hash Function คือ n mod sโดย n คือ ค่าจำนวนเต็มบวก ผลลัพธ์คือค่าเศษที่อยู่ในขอบเขต การทำเช่นนี้เรียกว่า การทำ Hash ขอบเขตในการทำ Hash คือ ไม่เกินกว่าจำนวนเฟรมที่มีอยู่ในระบบ ในกรณีที่มีการใช้จำนวนเพจมากกว่าจำนวนเฟรม เพจส่วนเกินจะถูกทำการ Hash ให้ได้ผลลัพธ์อยู่ในขอบเขตเฟรมที่มีอยู่ และเพจนั้นจะต่อท้ายแถวของค่าเฟรมที่คำนวณได้ เช่น ระบบมี 5 เฟรม สูตร n mod 5 โดย n คือเลขเพจ ดังนั้นเพจที่ 0 และเพจที่ 5 จะอยู่ด้วยกันในช่องแรกของตาราง ในรูปแบบของลิงค์ที่เชื่อมโยงถึงกัน และเพจที่ 2,7 อยู่ด้วยกันในแถวที่ 3 ของตาราง

  49. Hash Frame number 0 1 2 3 4 page0 page5 n page1 n page2 page7 n page3 n page4 n การค้นหาข้อมูลใช้หลักการเดียวกันคือ นำเลขเพจมาผ่านการทำ Hash โดยค่าที่ได้จากการทำ Hash คือเลขเฟรมที่เพจนั้นอยู่ เมื่อหาแถวของเฟรมนั้นเจอแล้ว ก็ไล่ตามลิงค์เชื่อมโยงจนพบข้อมูลที่เราต้องการ

  50. Hash Frame number 0 1 2 3 4 Frame number 0 1 2 3 4 Page number Hash page0 V page5 i null page0 page1 v null page1 page2 I page7 v null page7 page3 v null page3 page4 v null page4 การค้นหาข้อมูลใช้หลักการเดียวกันคือ นำเลขเพจมาผ่านการทำ Hash โดยค่าที่ได้จากการทำ Hash คือเลขเฟรมที่เพจนั้นอยู่ เมื่อหาแถวของเฟรมนั้นเจอแล้ว ก็ไล่ตามลิงค์เชื่อมโยงจนพบข้อมูลที่เราต้องการ เมื่อพบข้อมูลเพจที่ต้องการแล้ว ต้องตรวจสอบต่อไปว่า Valid bit ของเพจนั้นเป็นอย่างไร ถ้าเป็น Invalid ต้องนำข้อมูลเพจนั้นกลับไปใส่ในหน่วยความจำตำแหน่งเฟรมที่ระบุก่อน แต่ถ้าเป็น Valid ก็ทำการดึงข้อมูลของเฟรมนั้นในตำแหน่ง Offset ที่ต้องการออกมาได้เลย