Skip to main content

การแบ่งปันเท็จคืออะไร?

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

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

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

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