ความขัดแย้งของโปรแกรมเมื่อทั้งคู่พยายามใช้ทรัพยากรเดียวกัน เมื่อหลายโปรแกรมพยายามที่จะดำเนินการเกี่ยวกับทรัพยากรในเวลาเดียวกันยังมีความเสี่ยงของปัญหาพร้อมกัน ปัญหาที่เกิดขึ้นพร้อมกันเกิดขึ้นเมื่อกระบวนการหนึ่งทำการเปลี่ยนแปลงทรัพยากรและโปรแกรมอื่น ๆ (ซึ่งอยู่ตรงกลางการปรับเปลี่ยนทรัพยากรของตัวเอง) ไม่ได้ตระหนักถึงมันและจึงไม่สามารถรองรับ
นี่คือตัวอย่างของปัญหาการทำงานพร้อมกันของหนังสือข้อความ
ปัญหาสุดท้ายชนะ
ลองนึกภาพคุณกำลังใช้ไดเรกทอรี FTP เพื่อแบ่งปันเอกสารที่คุณและเพื่อนร่วมงานร่วมมือกันทำเอกสาร คุณดาวน์โหลดเอกสารแก้ไขและโพสต์อีกครั้งเช่นเดียวกับเพื่อนร่วมงานของคุณ
- คุณดาวน์โหลดเอกสารและเริ่มชุดการเปลี่ยนแปลงที่ใช้เวลา 1 ชั่วโมง
- เพื่อนร่วมงานของคุณดาวน์โหลดเอกสารในเวลาเดียวกับที่คุณทำ แต่ใช้เวลาเพียงครึ่งชั่วโมงเท่านั้นในการดำเนินการให้เสร็จสมบูรณ์และอัปโหลดการเปลี่ยนแปลงอีกครั้ง
ผลลัพธ์:เมื่อคุณอัปโหลดเอกสารคุณจะเขียนทับการเปลี่ยนแปลงและเอกสารเหล่านั้นจะสูญหาย
ข้อมูลเก่า
ในสถานการณ์เดียวกันเพื่อนร่วมงานของคุณทำการเปลี่ยนแปลงบางอย่างที่คุณต้องการโดยไม่บอกคุณ สำเนาไฟล์ของคุณไม่มีการเปลี่ยนแปลง
ผลลัพธ์:คุณเขียนการเปลี่ยนแปลงเดียวกันในคำที่ต่างกันเล็กน้อยด้วยตัวคุณเองหรือแย่กว่านั้นปิดไฟอีเมลที่น่ารังเกียจเกี่ยวกับการหายไปของมัน
ดูเหมือนว่าจะเป็นสถานการณ์ง่าย ๆ แต่ในกรณีขั้นสูงเช่นฐานข้อมูลแบบเข้าถึงหลายจุดหากคุณเลือกระเบียนที่มิลลิวินาทีเดียวกันที่ใครบางคนกำลังอัปเดตคุณสามารถประสบปัญหาร้ายแรงได้
การคำนวณไม่ดี
คู่สมรสมีบัญชีธนาคารที่ใช้ร่วมกันและบัตรเอทีเอ็ม พวกเขามี 1,000 USD ในบัญชีของพวกเขา ในชีวิตประจำวันของพวกเขาพวกเขาอยู่ฝั่งตรงข้ามของเมืองและทั้งสองเข้าถึง ATM ได้ในเวลาเดียวกัน พวกเขาถอนเงิน 1,000 USD ตู้เอทีเอ็มทั้งสองรู้ว่ายอดคงเหลือคือ 1,000 ดังนั้นพวกเขาจึงอนุญาตให้ถอนได้แล้วเขียนกลับไปที่ฐานข้อมูลกลางว่ายอดคงเหลือใหม่เป็น 0
ผลลัพธ์:ตอนนี้ธนาคารหมดแล้ว 1,000USD และไม่รู้ด้วยซ้ำ
ในตัวอย่างเหล่านี้ทั้งหมดมีหลายฝ่ายที่ดำเนินการกับทรัพยากรที่ใช้ร่วมกัน ณ เวลาเดียวกันหรือในเวลาเดียวกัน ดังนั้นคำว่า "เห็นพ้องด้วย" หรือ "บังเอิญ"
โซลูชั่น
มีสองสามวิธีในการจัดการกับปัญหาประเภทนี้ หนึ่งคือการใช้ซอฟต์แวร์ที่อนุญาโตตุลาการระหว่างหลายฝ่ายเข้าถึงทรัพยากร โปรแกรมผู้ตัดสินเหล่านี้มีสองตัวเลือกขึ้นอยู่กับขอบเขตและความสามารถในการคาดการณ์ของการดำเนินการ:
- ผสานการทำงานอย่างชาญฉลาด
- บล็อก / ล็อกหนึ่งในสองการดำเนินการจนกว่าการดำเนินการแรกที่สังเกตเห็นจะเสร็จสมบูรณ์
นอกจากนี้ยังเป็นไปได้ที่จะบล็อก / ล็อคโดยมีเงื่อนไขว่าทั้งสองโปรแกรมได้รับการออกแบบเพื่อตรวจสอบการตั้งค่าสถานะที่ใช้ร่วมกันระบุสถานะของทรัพยากร โดยทั่วไปต้องใช้การพัฒนาที่กำหนดเอง
คำตอบของคุณ
ในกรณีเฉพาะของคุณทรัพยากรคือไฟล์ในดิสก์ของคุณ ความบังเอิญนั้นมาจากเหตุการณ์ต่าง ๆ เช่นไฟล์อ่าน / เขียนซึ่งจะทำการสแกนแบบ on-access ในทั้งสองโปรแกรม AV
Windows ทำหน้าที่เป็นผู้ชี้ขาดในการแก้ไขปัญหาการทำงานพร้อมกันของระบบไฟล์โดยการล็อคไฟล์เมื่อโปรแกรมเปิดสำหรับการดำเนินการเฉพาะ
ซึ่งหมายความว่าโปรแกรมทั้งสองกำลังแข่งกันเพื่อเข้าถึงไฟล์และใครก็ตามที่ไปถึงที่นั่นก่อนจะได้รับการล็อค ในระดับต่ำผลลัพธ์นี้ทำให้ดิสก์บางส่วนสั่นสะเทือนเนื่องจากทั้งสองโปรแกรมเริ่มต้นกิจกรรม I / O ของตัวเองบังคับให้ฮาร์ดแวร์ทำงานทั้งสองอย่างแยกจากกัน แต่ยังสอดแทรกคำสั่ง IO ทำให้ทั้งสองมีประสิทธิภาพน้อยลงและในที่สุด ของพวกเขาจะเป็นผู้ชนะ อื่น ๆ จะหมุนและรอเพื่อให้สามารถสร้างการล็อกของตนเอง