Shared Memory และ DSM
Shared Memory คือบล็อกหน่วยความจำที่เข้าถึงได้จากหลายโปรแกรม ใช้สื่อสารและลดการจัดการหน่วยความจำซ้ำ
Distributed Shared Memory (DSM) เป็นการนำแนวคิด Shared Memory ไปใช้ใน ระบบกระจาย (Distributed Systems) ระบบ DSM นำโมเดล Shared Memory ไปใช้ในระบบ Loosely Coupled ที่ไม่มี Shared Memory ทางกายภาพในท้องถิ่น DSM ให้ Virtual Memory Space ที่เข้าถึงได้จากทุกโหนด (Nodes) ในลำดับชั้นกระจาย
ความท้าทายหลักในการนำ DSM ไปใช้
- ติดตามที่อยู่หน่วยความจำ (Location) ของข้อมูลที่เก็บ Remote ใน Shared Memory
- ลด Communication Delays และ Overhead สูงจากการอ้างอิงข้อมูล Remote
- ควบคุมการเข้าถึงพร้อมกัน (Concurrent Access) ของข้อมูลที่แชร์ใน DSM
4 อัลกอริทึมหลัก
- Central Server Algorithm
- Migration Algorithm
- Read Replication Algorithm
- Full Replication Algorithm
1. Central Server Algorithm
ข้อมูลแชร์ทั้งหมด ดูแลโดย Central Server โหนดอื่น ขออ่าน/เขียนข้อมูล ไปที่เซิร์ฟเวอร์ เซิร์ฟเวอร์ให้บริการ คืนค่า/ให้สิทธิ์พร้อม Acknowledgment Messages
Acknowledgment ใช้แสดงสถานะคำขอ ถ้าส่งข้อมูลไป จะส่งหมายเลขลำดับการเข้าถึงเพื่อรักษา Concurrency ถ้าล้มเหลว จะคืน Time-out
ระบบใหญ่อาจมีหลายเซิร์ฟเวอร์ ค้นหาด้วยที่อยู่หรือ Mapping Functions

2. Migration Algorithm
แทน Central Server ให้ บล็อกข้อมูลที่ถูกขอ ย้าย (Migrate) ไปยังระบบที่ขอ เพื่อเข้าถึงและประมวลผลต่อ
ข้อดี: ดีถ้าระบบเข้าถึงบล็อกเดิมหลายครั้ง และรองรับ Virtual Memory
ข้อเสีย:
- มีเพียงโหนดเดียวเข้าถึงข้อมูลแชร์ได้ในเวลาเดียวกัน
- ย้ายทั้งบล็อกไปที่โหนดนั้น
- เสี่ยงต่อ Thrashing จากการย้ายข้อมูลบ่อยครั้ง

3. Read Replication Algorithm
บล็อกข้อมูลถูก Replicate (จำลอง) และ อนุญาตให้อ่าน (Read) ได้ในทุก Copy ถ้าต้องเขียน (Write) จะหยุดการอ่านทั้งหมด จนกว่าจะอัปเดททุก Copy
ข้อดี: ประสิทธิภาพดีขึ้น เพราะอนุญาต Concurrent Access
ข้อเสีย: Write ราคาแพง ต้องอัปเดททุกบล็อกที่แชร์เพื่อ Consistency ต้องติดตามทุก Copy

4. Full Replication Algorithm
ขยายจาก Read Replication อนุญาตให้โหนด Read และ Write พร้อมกัน บนบล็อกแชร์ แต่ควบคุมการเข้าถึงเพื่อ Consistency
รักษา Consistency โดยเก็บลำดับ (Sequence) และหลังการแก้ไขข้อมูล Multicast การเปลี่ยนแปลง ไปทุก Copy
