อะไรคือความแตกต่างระหว่างขบวนล็อคและการต่อสู้แบบล็อค / เธรด?

Aug 18 2020

จากวิกิพีเดียเกี่ยวกับขบวนล็อค:

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

จากวิกิพีเดียเกี่ยวกับการโต้แย้งการล็อก / เธรด:

ล็อคความขัดแย้ง: สิ่งนี้เกิดขึ้นเมื่อใดก็ตามที่กระบวนการหรือเธรดหนึ่งพยายามที่จะได้รับการล็อกที่จัดขึ้นโดยกระบวนการหรือเธรดอื่น ยิ่งมีการล็อกที่ละเอียดมากขึ้นเท่าใดก็จะมีโอกาสน้อยที่กระบวนการ / เธรดหนึ่งจะร้องขอการล็อกโดยอีกรายการหนึ่ง (ตัวอย่างเช่นล็อกแถวแทนที่จะเป็นทั้งตารางหรือล็อกเซลล์แทนที่จะเป็นทั้งแถว);

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

คำตอบ

1 ajit Sep 03 2020 at 13:30

มีสองวิธีการปิดกั้นที่ใช้ในขั้นตอนวิธีการล็อคเมื่อมีการล็อคไม่ว่างหมุนรอหรือบล็อก (เข้าสู่โหมดสลีปปล่อยโปรเซสเซอร์และรอให้ OS ปลุกเธรดและกำหนดเวลาใหม่) ล็อคขบวนตามที่กล่าวไว้จะเกิดขึ้นเมื่อใช้กลยุทธ์การบล็อกOS หัวข้อตารางการหลักในเวลาหั่นลักษณะ ทุกเธรดจะได้รับตัวประมวลผลสำหรับบางช่วงเวลาที่กำหนดโดยพูด 2 มิลลิวินาที ระบบปฏิบัติการแบบ Round-robin
แฟชั่นกำหนดเวลาเธรดทั้งหมดในคิวสำเร็จรูปทีละคิว ถ้าพูดว่าเธรดหลังจากได้รับกำหนดการและเริ่มดำเนินการให้พูดหลังจาก 100 เราขอล็อก หากการล็อกไม่ว่างเธรดจะไม่สามารถรับการล็อกบล็อกและยกเลิกโปรเซสเซอร์ได้ เธรดเวลาที่เหลือ 1.9ms (2ms-100us) จึงไม่ถูกใช้ แม้ว่าระบบปฏิบัติการจะถูกปลุกให้ทำงานเมื่อไม่มีการล็อกเธรดก็ต้องรอการเปิดในคิวแบบ round-robin จำนวนเธรดที่ใช้งานได้อาจเป็น 100

ล็อกการช่วงชิงทำให้เกิดผลของขบวนรถ