1 / 25

หน่วยความจำเสมือน

หน่วยความจำเสมือน. (virtual memory). Virtual Memory. Virtual Memory คือ หน่วยความจำเสมือนที่ทำหน้าที่คล้าย RAM ( Random Access Memory ) แต่ใช้เนื้อที่ของ Hard Disk แทน แต่ใช้เวลาในการเข้าถึงข้อมูลช้ากว่า

jerry-wolfe
Download Presentation

หน่วยความจำเสมือน

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. หน่วยความจำเสมือน (virtual memory)

  2. Virtual Memory Virtual Memory คือ หน่วยความจำเสมือนที่ทำหน้าที่คล้าย RAM (Random Access Memory) แต่ใช้เนื้อที่ของ Hard Disk แทน แต่ใช้เวลาในการเข้าถึงข้อมูลช้ากว่า หลักการทำงานของหน่วยความจำเสมือนก็คือ “หน่วยความจำของกระบวนการต่างๆจะต้องมีได้อย่างไม่จำกัด” ระบบปฏิบัติการจะต้องจัดสรรให้ได้ตามความต้องการ

  3. ตัวอย่างการทำงานของหน่วยความจำเสมือนตัวอย่างการทำงานของหน่วยความจำเสมือน Process 3 Logical Pages Process 3 Page Table Pageno Loc Process 7 Page Table Pageno Loc 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 Process 7 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12

  4. ตัวอย่างการทำงานของหน่วยความจำเสมือนตัวอย่างการทำงานของหน่วยความจำเสมือน

  5. Process 7 Address 2100 • Process 7 Address 2100 - เริ่มด้วยการหา logical page 2100/1024 = 2 - ช่อง 2 ของprocess 7 ใน page table มีpage number คือ -1 แสดงว่ายังไม่มีได้ใช้งาน เราต้องการเก็บค่าไว้ใน RAM - ดูว่ามีพื้นที่ว่างในตาราง RAM หรือไม่ ถ้ามีพื้นที่ว่างก็ใส่ค่าได้เลย แต่ถ้าไม่มีเราจึงต้องเอาตัวที่อยู่นานที่สุดออก การตรวจสอบเราพบหน้าเก่าแก่ที่สุดคือ RAM หน้า 2 ที่ 10:09 เราจึงแทนที่หน้านั้นด้วยค่าใหม่ หากเราต้องการเก็บค่าใน DASD ก็สามารถเก็บสำรองไว้ได้ - ในตาราง DASD หน้า 0 มีพื้นที่ว่าง ดังนั้นหากเราต้องใช้พื้นนั้น เราต้องใส่ 7 ในช่องว่าง ในตาราง DASD หน้า 0

  6. Process 7 Address 2100 - ตอนนี้เราเปลี่ยนแปลงค่าใน RAM หน้า 2 กับ DASD หน้า 0- เราต้องปรับปรุง Process 7 ใน page table ช่อง1 มี pageno เป็น 0 และเก็บไว้ใน D หรือ DASD - ตอนนี้เราปรับปรุง Process 7 ใน page table ช่อง 2 ที่อยู่ในRAM หน้า 2 หรือ R- สุดท้ายเราต้อง update ช่อง 2 ของ RAM กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้หน้านี้

  7. Process 3 Page Table Pageno Loc Process 7 Page Table Pageno Loc Process 3 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 Process 7 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12

  8. Process 3 Address 100 • Process 3 Address 100 - เริ่มด้วยการหา logical page 100/1024 =0 - ช่อง 0 ของprocess 3 ใน page table มีที่อยู่คือ D แสดงว่าเก็บค่าอยู่ใน DASD เราต้องทำการเปลี่ยนที่อยู่ใหม่โดยให้เก็บค่าไว้ใน RAM - ดูว่ามีพื้นที่ว่างในตาราง RAM หรือไม่ ถ้ามีพื้นที่ว่างก็ใส่ค่าได้เลย แต่ถ้าไม่มีเราจึงต้องเอาตัวที่อยู่นานที่สุดออก การตรวจสอบเราพบหน้าเก่าแก่ที่สุดคือ RAM หน้า 5 ที่ 10:12 เราจึงแทนที่หน้านั้นด้วยค่าใหม่ หากเราต้องการเก็บค่าใน DASD ก็สามารถเก็บสำรองไว้ได้ - ในตาราง DASD หน้า2 มีพื้นที่ว่าง ดังนั้นหากเราต้องใช้พื้นนั้น เราต้องใส่ 3 ในช่องว่าง ในตาราง DASD หน้า2

  9. Process 3 Address 100 -ตอนนี้เราเปลี่ยนแปลงค่าใน RAM หน้า 5 กับ DASD หน้า 2- เราต้องปรับปรุง Process 3 ใน page table ช่อง 10 มี pageno เป็น 2 และเก็บไว้ใน D หรือ DASD- ตอนนี้เราปรับปรุง Process 3 ใน page table ช่อง0 ที่อยู่ในRAM หน้า 5 หรือ R- ตอนนี้เราปรับปรุง Process 3 ใน page table ช่อง 3 ที่อยู่ใน DASD มี่ค่าเป็น -1 - สุดท้ายเราต้อง update ช่อง 5 ของ RAM กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้ในหน้านี้

  10. Process 3 Page Table Pageno Loc Process 7 Page Table Pageno Loc Process 3 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 Process 7 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12

  11. Process 7 Address 4097 • Process 7 Address 4097 - เริ่มด้วยการหา logical page 4097/1024 =0 - ช่อง 4 ของprocess 7 ใน page table มีpage no คือ -1 แสดงว่ายังไม่มีได้ใช้งาน เราต้องการเก็บค่าไว้ใน RAM - ดูว่ามีพื้นที่ว่างในตาราง RAM หรือไม่ ถ้ามีพื้นที่ว่างก็ใส่ค่าได้เลย แต่ถ้าไม่มีเราจึงต้องเอาตัวที่อยู่นานที่สุดออก การตรวจสอบเราพบหน้าเก่าแก่ที่สุดคือ RAM หน้า 3 ที่ 10:14 เราจึงแทนที่หน้านั้นด้วยค่าใหม่ หากเราต้องการเก็บค่าใน DASD ก็สามารถเก็บสำรองไว้ได้ - ในตาราง DASD หน้า 3 มีพื้นที่ว่าง ดังนั้นหากเราต้องใช้พื้นนั้น เราต้องใส่ 3 ในช่องว่าง ในตาราง DASD หน้า 3

  12. Process 7 Address 4097 - ตอนนี้เราเปลี่ยนแปลงค่าใน RAM หน้า 3 กับ DASD หน้า 3- เราต้องปรับปรุง Process 3 ใน page table ช่อง 4 มี pageno เป็น 3 และเก็บไว้ใน D หรือ DASD- ตอนนี้เราปรับปรุง Process 7 ใน page table ช่อง 4 ที่อยู่ในRAM หน้า 3 หรือ R- สุดท้ายเราต้อง update ช่อง 3 ของ RAM กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้หน้านี้ และเปลี่ยน PID เป็น 7

  13. Process 7 Page Table Pageno Loc Process 3 Page Table Pageno Loc Process 3 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 Process 7 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12

  14. Process 3 Address 4100 • Process 3 Address 4100 - เริ่มด้วยการหา logical page 4100/1024 =4 - ช่อง 4 ของ Process 3 ใน page table แสดงหน้าบน DASD แต่เราก็ต้องเก็บค่าไว้ใน RAM ด้วย - ดูว่ามีพื้นที่ว่างในตาราง RAM หรือไม่ ถ้ามีพื้นที่ว่างก็ใส่ค่าได้เลย แต่ถ้าไม่มีเราจึงต้องเอาตัวที่อยู่นานที่สุดออก การตรวจสอบเราพบหน้าเก่าแก่ที่สุดคือ RAM หน้า 0 ที่ 10:15 เราจึงแทนที่หน้านั้นด้วยค่าใหม่ หากเราต้องการเก็บค่าใน DASD ก็สามารถเก็บสำรองไว้ได้ - ในตาราง DASD หน้า 5 มีพื้นที่ว่าง ดังนั้นหากเราต้องใช้พื้นนั้น เราต้องใส่ 7 ในช่องว่าง ในตาราง DASD หน้า 5

  15. Process 3 Address 4100 - ตอนนี้เราเปลี่ยนแปลงค่าใน RAM หน้า 0 กับ DASD หน้า 5- เราต้องปรับปรุง Process 7 ใน page table ช่อง 0 มี pageno เป็น 5 และเก็บไว้ใน D หรือ DASD- ตอนนี้เราปรับปรุง Process 3 ใน page table ช่อง4 ที่อยู่ในRAM หน้า 0 หรือ R- เราต้องทำการอ่านข้อมูลจาก DASD หน้า 3 กับ RAM หน้า 0 - ตอนนี้เราปรับปรุงที่อยู่ใน DASD ช่อง 3 มีค่าเป็น -1 - สุดท้ายเราต้อง update ช่อง 0 ของ RAM กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้ในหน้านี้และเปลี่ยน PID เป็น 3

  16. Process 3 Page Table Pageno Loc Process 7 Page Table Pageno Loc Process 3 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 Process 7 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12

  17. Process 7 Address 200 • Process 7 Address 200 - เริ่มด้วยการหา logical page 200/1024 =0 - ช่อง 0 ของ Process 7 ใน page table แสดงหน้าบน DASD แต่เราก็ต้องเก็บค่าไว้ใน RAM ด้วย - ดูว่ามีพื้นที่ว่างในตาราง RAM หรือไม่ ถ้ามีพื้นที่ว่างก็ใส่ค่าได้เลย แต่ถ้าไม่มีเราจึงต้องเอาตัวที่อยู่นานที่สุดออก การตรวจสอบเราพบหน้าเก่าแก่ที่สุดคือ RAM หน้า 4 ที่ 10:16 เราจึงแทนที่หน้านั้นด้วยค่าใหม่ หากเราต้องการเก็บค่าใน DASD ก็สามารถเก็บสำรองไว้ได้ - ในตาราง DASD หน้า 3 มีพื้นที่ว่าง ดังนั้นหากเราต้องใช้พื้นนั้น เราต้องใส่ 7 ในช่องว่าง ในตาราง DASD หน้า 3

  18. Process 7 Address 200 -ตอนนี้เราเปลี่ยนแปลงค่าใน RAM หน้า 4 กับ DASD หน้า 3 - เราต้องปรับปรุง Process 7 ใน page table ช่อง 9 มี pageno เป็น 3 และเก็บไว้ใน D หรือ DASD- ตอนนี้เราปรับปรุง Process 7 ใน page table ช่อง0 ที่อยู่ในRAM หน้า 4 หรือ R- เราต้องทำการอ่านข้อมูลจาก DASD หน้า 5 กับ RAM หน้า 4 - ตอนนี้เราปรับปรุงที่อยู่ใน DASD ช่อง 5 มีค่าเป็น -1 - สุดท้ายเราต้อง update ช่อง 4 ของ RAM กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้ในหน้านี้

  19. Process 3 Page Table Pageno Loc Process 7 Page Table Pageno Loc Process 3 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 0 1 2 3 4 5 6 7 8 9 10 11 12 Process 7 Logical Pages 0 1 2 3 4 5 6 7 8 9 10 11 12

  20. Process 3 Address 200 • Process 3 address 200 - Logical page เท่ากับ 200/1024 = 0- ช่อง 0 ของ Process 3 ใน page table แสดงหน้าที่เก็บอยู่ใน RAM เพื่อให้เราเรียกใช้งาน

More Related