250 likes | 356 Views
หน่วยความจำเสมือน. (virtual memory). Virtual Memory. Virtual Memory คือ หน่วยความจำเสมือนที่ทำหน้าที่คล้าย RAM ( Random Access Memory ) แต่ใช้เนื้อที่ของ Hard Disk แทน แต่ใช้เวลาในการเข้าถึงข้อมูลช้ากว่า
E N D
หน่วยความจำเสมือน (virtual memory)
Virtual Memory Virtual Memory คือ หน่วยความจำเสมือนที่ทำหน้าที่คล้าย RAM (Random Access Memory) แต่ใช้เนื้อที่ของ Hard Disk แทน แต่ใช้เวลาในการเข้าถึงข้อมูลช้ากว่า หลักการทำงานของหน่วยความจำเสมือนก็คือ “หน่วยความจำของกระบวนการต่างๆจะต้องมีได้อย่างไม่จำกัด” ระบบปฏิบัติการจะต้องจัดสรรให้ได้ตามความต้องการ
ตัวอย่างการทำงานของหน่วยความจำเสมือนตัวอย่างการทำงานของหน่วยความจำเสมือน 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
ตัวอย่างการทำงานของหน่วยความจำเสมือนตัวอย่างการทำงานของหน่วยความจำเสมือน
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
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 กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้หน้านี้
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
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
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 กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้ในหน้านี้
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
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
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
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
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
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
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
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
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 กับปรับปรุงเวลาเนื่องจากเราเพิ่งเข้าใช้ในหน้านี้
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
Process 3 Address 200 • Process 3 address 200 - Logical page เท่ากับ 200/1024 = 0- ช่อง 0 ของ Process 3 ใน page table แสดงหน้าที่เก็บอยู่ใน RAM เพื่อให้เราเรียกใช้งาน