ทำไมจำนวนฉันทามติสำหรับการทดสอบและตั้ง 2


17

ตามที่วิกิพีเดีย ,

การดำเนินการทดสอบและตั้งค่าสามารถแก้ไขปัญหาฉันทามติที่ปราศจากการรอคอยสำหรับกระบวนการที่เกิดขึ้นพร้อมกันไม่เกินสองกระบวนการ

ทำไมมันไม่สามารถแก้ปัญหามากกว่าสองกระบวนการได้?

คำตอบ:


17

เพียงเพื่อให้แน่ใจว่าเราอยู่ในหน้าเดียวกันก่อนอื่นให้เราพิจารณาคำจำกัดความทั้งสามนี้:

คำนิยาม Test-and-set เป็นคำสั่งอ่าน - แก้ไข - เขียนในการลงทะเบียนแบบไบนารีบางส่วน (สมมติว่า 0 และ 1 เป็นค่าที่เป็นไปได้) โดยที่เธรดได้รับค่าเก่าและเขียน 1

คำนิยาม ฉันทามติถึงระหว่างหัวข้อ IFF ทั้งหมดnหัวข้อตัดสินใจเกี่ยวกับค่าเดียวกัน (ความต้องการความมั่นคง) และหัวข้อทั้งหมดที่จะตัดสินใจเกี่ยวกับค่าที่ได้รับการเสนอจริงโดยหนึ่งในหัวข้อ (ความต้องการความถูกต้องบริการ)nn

defintion โปรโตคอลฉันทามตินั้นปราศจากการรอถ้าทุกวิธีการโทรเสร็จสิ้นในจำนวนขั้นตอน

ตอนนี้ทำตามภาพร่างหลักฐานที่สอง

การอ้างสิทธิ์ 1.จำนวนฉันทามติของการทดสอบและการตั้งค่าอย่างน้อย 2 หลักฐาน สมมติว่าเรามีสองเธรด 0 และ 1 ที่จำเป็นต้องได้รับฉันทามติ เราสามารถทำได้โดยให้แต่ละเธรดปฏิบัติตามโปรโตคอลฉันทามติด้านล่าง:

  1. เขียนค่าที่คุณเสนอไปยังโดยที่tคือ thread id และAA[t]tAคืออาร์เรย์ขนาด 2
  2. ดำเนินการทดสอบและตั้งค่าคำสั่งใน register บางตัวโดยR กำหนดค่าเริ่มต้นเป็น 0RR
  3. หากส่งคืนค่าเป็น 0 คุณเป็นคนแรก: การกลับมา[ T ] มิฉะนั้นคุณที่สอง: การกลับมา[ | t - 1 | ] .A[t]A[|t1|]

คุณสามารถตรวจสอบตัวเองว่าฉันทามติและการรอคอยไม่พอใจ

(สำหรับหลักฐานถัดไปฉันจะวางหลักฐานและคำจำกัดความบางอย่างเพราะฉันคิดว่ามันจะทำให้ติดตามได้ง่ายขึ้น)

การอ้างสิทธิ์ 2.จำนวนฉันทามติของการทดสอบและการตั้งค่าเป็นอย่างมากที่สุด 2 ข้อพิสูจน์ โดยแย้ง สมมติว่าเรามีสามเธรด , BและCที่ต้องการตัดสินใจเกี่ยวกับค่าa , bและc , ตามลำดับและเรามีโพรโทคอลฉันทามติที่ปราศจากการรอคอยที่ถูกต้องซึ่งนำมาใช้โดยใช้การทดสอบและตั้งค่า )ABCabc

เราสามารถเห็นภาพกระบวนการฉันทามติเป็นต้นไม้กำกับที่:

  • รูตคือสถานะที่ไม่มีเธรดใดที่ 'ทำการย้าย';
  • ชายด์ด้านซ้ายของโหนดแสดงถึงสถานะที่ผลลัพธ์หลังจากการย้ายโดย , ชายน์กลางแสดงสถานะที่เป็นผลลัพธ์หลังจากการย้ายโดยB , และชายด์ด้านขวาแทนสถานะที่เป็นผลลัพธ์หลังจากการย้ายโดยC ;ABC
  • โหนดลีฟแทนสถานะที่เธรดทั้งหมดเสร็จสิ้นแล้ว เชื่อมโยงกับโหนดลีฟคือค่า , bหรือcซึ่งค่าขึ้นอยู่กับค่าที่ตัดสินใจสำหรับการดำเนินการนั้นโดยเฉพาะabc

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

รูตเป็นหลายค่า พิสูจน์ หากมีเธรดแอ็คทีฟและเธรดอื่นอยู่เฉยๆตลอดไปดังนั้นXจะสิ้นสุดในจำนวนขั้นตอนที่ จำกัด (รับประกันโดยการรอสมมติฐานที่ไม่มีสีเขียว) และมันจะเป็นตัวตัดสินx (เพราะมีสิทธิ์เข้าถึงค่านี้เท่านั้น การตัดสินใจจะเป็นไปตามข้อกำหนดความถูกต้องตามฉันทามติ) ดังนั้นสำหรับสถานการณ์ของเราa , bและcเป็นผลลัพธ์ที่เป็นไปได้ทั้งหมด XXxabc

คำนิยาม ขอให้รัฐที่สำคัญเป็นของรัฐซึ่งเป็น multivalent กับคุณสมบัติเพิ่มเติมที่ย้ายจากจะกำหนดและย้ายโดยBจะตรวจสอบขAaBb

มีสถานะวิกฤติ พิสูจน์ จากด้านบนเรารู้ว่าเราเริ่มต้นในสถานะหลายค่า ปล่อยให้ไม่มีการเคลื่อนไหวเลย ตราบใดที่ACAหรือไม่ได้บังคับให้ทรีเข้าสู่สถานะที่ไม่เป็นเอกภาพให้ปล่อยให้มันเคลื่อนที่ Wait-freeness รับประกันว่าต้นไม้มี จำกัด ดังนั้นในบางจุดต้องพบสภาวะวิกฤติ B

ตอนนี้ให้พิจารณาสถานการณ์ที่เราอยู่ในภาวะวิกฤติ มีความเป็นไปได้อย่างน้อยสองรายการ:

1) ทำการเคลื่อนที่ (ดังนั้นการพิจารณาa ) และหยุดการทำงาน BAaBจากนั้นก็ขยับและหยุด ถัดไปทำงานจนกว่าจะเสร็จสิ้นในที่สุดก็ตัดสินใจCa

2) ทำให้การเคลื่อนไหวของมัน (ดังนั้นการกำหนดb ) และหยุด ถัดไปCBbCทำงานจนกว่าจะเสร็จสิ้นในที่สุดก็ตัดสินใจขAไม่เคลื่อนไหวbA

เนื่องจากการอ่านและเขียนของอะตอมมีความสอดคล้องกันเป็นอันดับที่ 1 เคลื่อนที่ของAและBจะต้องเป็นคำแนะนำการทดสอบและการตั้งค่าในการลงทะเบียนเดียวกัน (ถ้าการลงทะเบียนแตกต่างกันCจะไม่สามารถบอกลำดับที่Aและการเคลื่อนไหวของBเกิดขึ้น) จากCมุมมอง 's แล้วสถานการณ์ที่ 1 และ 2 จะแยกไม่ออกดังนั้นเราจึงต้องมีที่Cตัดสินใจทั้งและข มันเป็นไปไม่ได้. ABCABCCab

คำสั่งการทดสอบและการตั้งค่ามีฉันทามติที่ 2 ตามจากทั้งการอ้างสิทธิ์ 1 และ 2


ขอบคุณสำหรับคำตอบ คุณสามารถชี้ไปที่เนื้อหาใด ๆ ในหัวข้อนี้ซึ่งเป็นที่ชัดเจนตามคำอธิบายของคุณ? :) เนื้อหาทั้งหมดที่ฉันพบเป็นทางการมากเกินไป
sanatana

@sanatana: ฉันลืมที่จะตอบคำถามของคุณฉันขอโทษ หากยังเกี่ยวข้อง: ฉันแนะนำ Herlihy และ Shavit's 'The Art of Multiprocessor Programming' (ตอนที่ 5 โดยเฉพาะ) และเนื้อหาหลักสูตรของ Concurrency & Multithreading แน่นอนโดย Fokkink: cs.vu.nl/~tcs/cm (ซึ่งเป็นพื้นฐาน หนังสือของ Herlihy and Shavit) ที่ด้านล่างของหน้าคุณจะพบลิงค์ไปยังวิดีโอบรรยายโดย Herlihy (การบรรยาย 27 กันยายนเกี่ยวกับฉันทามติ) หลังจากตรวจสอบเนื้อหาฉันรู้ว่ามันเพียงพอที่จะพิจารณาต้นไม้ไบนารีสำหรับการพิสูจน์ชนิดนี้ บางทีฉันจะอัปเดตคำตอบของฉันในภายหลัง
Roy O.

@RoyO ฉันเห็นว่าคำตอบของคุณแสดงให้เห็นว่าไม่มีทางที่จะได้รับฉันทามติด้วย 3 กระบวนการ เพียงแค่ต้องการที่จะเข้าใจว่าในทางใดก็ตามที่เราได้พิสูจน์แล้วว่าเรายังคงสามารถบรรลุฉันทามติได้ แต่โปรโตคอลนั้นจะไม่ต้องรอคอย?
สาเหตุที่ดีที่สุด

6

บทความวิกิพีเดียมีการอ้างอิงที่ตอบคำถามคุณ แต่บางทีคุณอาจไม่ต้องการอ่านบทความ 26 หน้า ฉันจะให้รุ่นที่เรียบง่ายของหลักฐาน (ค่อนข้างเทคนิค) แสดงให้เห็นว่าการทดสอบและการตั้งค่าไม่สามารถแก้ฉันทามติไบนารีสำหรับ 3 กระบวนการ การโต้เถียงชนิดนี้ใช้กันอย่างแพร่หลายในการพิสูจน์ตัวเลขที่สอดคล้องกัน

สมมติว่าเรามีอัลกอริทึมที่สอดคล้องโดยใช้ TAS register สำหรับ 3 กระบวนการ

ณ จุดใดเวลาหนึ่งแต่ละกระบวนการจะมีการย้าย (คำสั่ง) พร้อมที่จะดำเนินการ คำสั่งใดในสามคำสั่งที่จะถูกเรียกใช้งานนั้นไม่สามารถกำหนดได้

สมมติว่าเราอยู่ในสถานะ bivalent (สถานะที่ทั้งการตัดสินใจ 0 หรือ 1 ยังคงเป็นไปได้) และกระบวนการใดก็ตามที่เคลื่อนไหวต่อไป ในที่สุดสถานะดังกล่าวจะต้องมาถึงได้เนื่องจากสภาพที่ปราศจากการรอคอย

สมมติว่า (wlg) ว่าถ้ากระบวนการ 1 ย้ายสถานะจะเป็น 0-valent และถ้าหากกระบวนการ 2 ย้ายสถานะจะเป็น 1-valent การย้ายทั้งสองจะต้องเป็นการดำเนินการของ TAS (หรืออย่างน้อย: การเขียนบางอย่าง) ในการลงทะเบียนเดียวกันเนื่องจากถ้าพวกเขาเป็นการดำเนินการทาง TAS เกี่ยวกับการลงทะเบียนที่แตกต่างกันเราไม่สามารถบอกได้ว่ากระบวนการ 1 ย้ายก่อนหรือไม่

ลองพิจารณาการประหารชีวิตที่เป็นไปได้ทั้งสองนี้:

  • กระบวนการ 1 ย้ายก่อนจากนั้นเคลื่อนย้ายกระบวนการ 2 จากนั้นประมวลผล 3 ทำงานเพียงลำพัง
  • กระบวนการ 2 ย้ายก่อนจากนั้นกระบวนการ 3 จะทำงานเพียงลำพัง

จากมุมมองของกระบวนการ 3 สถานะเหล่านี้แยกไม่ออกเนื่องจากเพิ่งเห็นค่าที่เขียนโดยกระบวนการ 2 อย่างไรก็ตามในกรณีแรกควรให้ 0 เป็นเอาต์พุตและใน 1 วินาทีเป็นเอาต์พุต เห็นได้ชัดว่านี่คือความขัดแย้ง

กระบวนการที่ 1 และ 2 สามารถตัดสินใจได้ด้วยตนเองว่าสิ่งใดเป็นอันดับแรก (เพราะพวกเขาสามารถเห็นคุณค่าของการลงทะเบียนก่อนที่จะเขียน) แต่กระบวนการที่สามไม่สามารถทำได้


1

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

ในการปรับใช้การทดสอบและการตั้งค่าสำหรับโปรเซสเซอร์ n โดยใช้ความสอดคล้อง 2 โปรเซสเซอร์ให้โปรเซสเซอร์กำหนดผู้ชนะการทดสอบและการตั้งค่าโดยใช้ทัวร์นาเมนต์ซึ่งการแข่งขันแต่ละครั้งจะดำเนินการโดยใช้ฉันทามติ 2 โปรเซสเซอร์ (ในการแข่งขันโปรเซสเซอร์ เสนอตัวระบุและผลลัพธ์ฉันทามติบอกพวกเขาว่าใครชนะ)


0

ในทางปฏิบัติคำจำกัดความสอดคล้องที่เข้มงวดน้อยกว่าอาจเพียงพอ (ที่นี่ฉันเรียกมันว่าฉันทามติเบา)

คำนิยาม Light-Consensus เข้าถึงได้ระหว่าง n เธรด iff (a) แต่ละเธรดตัดสินใจเลือกค่าเดียวกันหรือไม่ทราบค่าสำหรับมัน (b) อย่างน้อยหนึ่งเธรดรู้ค่าและ (c) ค่านี้ถูกเสนอโดยหนึ่งใน กระทู้

ดังนั้นฉันทามตินี้ในความหมายที่เบากว่าทำให้เธรดบางตัวไม่ทราบถึงฉันทามติค่าที่ตัดสินใจ

ผลที่ตามมา : ในการทดสอบและตั้งค่าความรู้สึกที่เบากว่านี้มีหมายเลขมติที่ไม่สิ้นสุด

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.