กระบวนการ Syncการทำเวลา: ปัญหาส่วนสำคัญในระบบปฏิบัติการ

กระบวนการคืออะไร Syncพรหมลิขิต?

กระบวนการ Syncการทำให้เป็นพงศาวดาร เป็นงานในการประสานงานการดำเนินการของกระบวนการในลักษณะที่ไม่มีสองกระบวนการสามารถเข้าถึงข้อมูลและทรัพยากรที่ใช้ร่วมกันได้

มีความจำเป็นเป็นพิเศษในระบบที่มีหลายกระบวนการ เมื่อหลายกระบวนการทำงานพร้อมกัน และมีกระบวนการมากกว่าหนึ่งกระบวนการพยายามเข้าถึงทรัพยากรหรือข้อมูลที่แชร์เดียวกันในเวลาเดียวกัน

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

วิธีการดำเนินการ Syncการทำให้เที่ยงตรงใช้งานได้หรือไม่?

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

กระบวนการ Syncการทำงานของการทำให้เป็นเกียรติ

ส่วนของโปรแกรม

องค์ประกอบสำคัญสี่ประการของส่วนสำคัญมีดังนี้:

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

ปัญหาส่วนสำคัญคืออะไร?

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

  • การเข้าสู่ส่วนวิกฤติได้รับการจัดการโดยฟังก์ชัน wait() และแสดงเป็น P()
  • ทางออกจากส่วนวิกฤติจะถูกควบคุมโดยฟังก์ชัน signal() ซึ่งแสดงเป็น V()

ในส่วนที่สำคัญ สามารถดำเนินการได้เพียงกระบวนการเดียวเท่านั้น กระบวนการอื่นๆ ที่รอดำเนินการในส่วนที่สำคัญ ต้องรอจนกว่ากระบวนการปัจจุบันจะดำเนินการเสร็จสิ้น

กฎเกณฑ์สำหรับมาตราที่สำคัญ

ส่วนที่สำคัญจะต้องบังคับใช้กฎทั้งสามข้อ:

  • การยกเว้นร่วมกัน: Mutual Exclusion คือเซมาฟอร์ไบนารีชนิดพิเศษที่ใช้สำหรับควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกัน ประกอบด้วยกลไกการสืบทอดลำดับความสำคัญเพื่อหลีกเลี่ยงปัญหาการผกผันลำดับความสำคัญที่ขยายออกไป สามารถดำเนินการได้ไม่เกินหนึ่งกระบวนการในส่วนที่สำคัญในคราวเดียว
  • ความคืบหน้า โซลูชันนี้ใช้เมื่อไม่มีใครอยู่ในส่วนวิกฤติ และมีคนต้องการเข้าร่วม จากนั้น กระบวนการเหล่านั้นที่ไม่อยู่ในส่วนตัวเตือนควรตัดสินใจว่าใครควรเข้าไปภายในระยะเวลาอันจำกัด
  • ผูกพันรอ: เมื่อกระบวนการส่งคำขอเพื่อเข้าสู่ส่วนวิกฤติ มีข้อจำกัดเฉพาะเกี่ยวกับจำนวนกระบวนการที่สามารถเข้าสู่ส่วนวิกฤติได้ ดังนั้นเมื่อถึงขีดจำกัด ระบบจะต้องอนุญาตให้มีการร้องขอไปยังกระบวนการเพื่อเข้าสู่ส่วนที่สำคัญ

แนวทางแก้ไขในส่วนสำคัญ

อยู่ในขั้นตอน Syncการแก้ไขส่วนสำคัญมีบทบาทหลักเพื่อให้ปัญหาต้องได้รับการแก้ไข

ต่อไปนี้เป็นวิธีการที่ใช้กันอย่างแพร่หลายในการแก้ปัญหาส่วนวิกฤติ

โซลูชั่นปีเตอร์สัน

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

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

ตัวอย่าง

แนวทางแก้ไขในส่วนสำคัญ

PROCESS Pi
FLAG[i] = true
while( (turn != i) AND (CS is !free) ){ wait;
}
CRITICAL SECTION FLAG[i] = false
turn = j; //choose another process to go to CS
  • สมมติว่ามีกระบวนการ N (P1, P2, … PN) และทุกกระบวนการ ณ จุดใดจุดหนึ่งจำเป็นต้องเข้าสู่ส่วนวิกฤต
  • อาร์เรย์ FLAG[] ขนาด N จะถูกคงไว้ซึ่งโดยค่าเริ่มต้นจะเป็นเท็จ ดังนั้นเมื่อใดก็ตามที่กระบวนการจำเป็นต้องเข้าสู่ส่วนที่สำคัญ กระบวนการนั้นจะต้องตั้งค่าแฟล็กเป็นจริง ตัวอย่างเช่น ถ้า Pi ต้องการป้อน ก็จะตั้งค่า FLAG[i]=TRUE
  • ตัวแปรอื่นที่เรียกว่า TURN ระบุหมายเลขกระบวนการที่กำลังต้องการเข้าสู่ CS
  • กระบวนการที่เข้าสู่ส่วนวิกฤติขณะออกจะเปลี่ยน TURN เป็นหมายเลขอื่นจากรายการกระบวนการที่พร้อม
  • ตัวอย่าง: เทิร์นเป็น 2 จากนั้น P2 จะเข้าสู่ส่วนวิกฤต และขณะออกจากเทิร์น=3 ดังนั้น P3 จึงหลุดออกจากลูปการรอ

Syncฮาร์ดแวร์เสียงสะท้อน

บางครั้งปัญหาของส่วนวิกฤตก็ได้รับการแก้ไขโดยฮาร์ดแวร์ด้วย ระบบปฏิบัติการบางระบบมีฟังก์ชันล็อกที่กระบวนการจะล็อกเมื่อเข้าสู่ส่วนวิกฤตและปลดล็อกเมื่อออกจากส่วนนั้น

ดังนั้นเมื่อกระบวนการอื่นพยายามเข้าสู่ส่วนสำคัญ กระบวนการนั้นจะไม่สามารถเข้าไปได้เนื่องจากถูกล็อค สามารถทำได้ก็ต่อเมื่อมันว่างโดยการรับล็อคมาเอง

มูเท็กซ์ล็อค

Syncฮาร์ดแวร์ hronization ไม่ใช่วิธีการง่ายๆ สำหรับทุกคน ดังนั้น จึงมีการใช้วิธีซอฟต์แวร์ที่เข้มงวดที่เรียกว่า Mutex Locks ด้วยเช่นกัน

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

Semaphore Solution

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

ใช้การดำเนินการแบบอะตอมสองอย่าง 1) รอ และ 2) สัญญาณสำหรับการซิงโครไนซ์กระบวนการ

ตัวอย่าง

WAIT ( S ):
while ( S <= 0 );
S = S - 1;
SIGNAL ( S ):
S = S + 1;

สรุป

  • การซิงโครไนซ์กระบวนการคือหน้าที่ในการประสานการดำเนินการของกระบวนการในลักษณะที่ไม่มีกระบวนการใดสองกระบวนการสามารถเข้าถึงข้อมูลและทรัพยากรที่ใช้ร่วมกันได้
  • องค์ประกอบสี่ประการของส่วนวิกฤติคือ 1) ส่วนรายการ 2) ส่วนสำคัญ 3) ส่วนออก 4) ส่วนการแจ้งเตือน
  • ส่วนที่สำคัญคือส่วนของโค้ดที่สามารถเข้าถึงได้โดยกระบวนการสัญญาณ ณ จุดเวลาที่กำหนด
  • กฎสามข้อที่ต้องบังคับใช้ตามส่วนที่วิกฤติคือ: 1) การยกเว้นร่วมกัน 2) วิธีแก้ปัญหากระบวนการ 3) การรอแบบผูกมัด
  • Mutual Exclusion คือเซมาฟอร์ไบนารีชนิดพิเศษที่ใช้สำหรับควบคุมการเข้าถึงทรัพยากรที่ใช้ร่วมกัน
  • โซลูชันกระบวนการจะใช้เมื่อไม่มีใครอยู่ในส่วนวิกฤติ และมีคนต้องการเข้าไป
  • ในโซลูชันการรอแบบผูกมัด หลังจากที่กระบวนการส่งคำขอเพื่อเข้าสู่ส่วนที่สำคัญแล้ว จะมีขีดจำกัดสำหรับจำนวนกระบวนการอื่น ๆ ที่สามารถเข้าสู่ส่วนวิกฤติได้
  • วิธีแก้ปัญหาของ Peterson เป็นวิธีแก้ปัญหาที่ใช้กันอย่างแพร่หลายสำหรับปัญหาส่วนวิกฤต
  • ปัญหาของส่วนวิกฤตยังได้รับการแก้ไขด้วยการซิงโครไนซ์ฮาร์ดแวร์
  • Syncฮาร์ดแวร์การทำ hronization ไม่ใช่วิธีง่ายๆ สำหรับทุกคน ดังนั้นจึงมีการใช้วิธีซอฟต์แวร์ที่เข้มงวดที่เรียกว่า Mutex Locks ด้วยเช่นกัน
  • Semaphore เป็นอีกอัลกอริธึมหรือวิธีแก้ไขปัญหาส่วนวิกฤติ