ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
Deadlocks oslecture07
2
Deadlocks คืออะไร? Deadlocks คือ บางสิ่งที่เราควรจะใช้กำหนดความถูกต้อง โดยพื้นฐานมันจะเกิดขึ้นเมื่อเซตของโปรเซสหรือเทรดต้องทำงานร่วมกันเป็นวัฏจักร ซึ่งเป็นการวนลูปที่ไม่สิ้นสุด ในย่อหน้าแรกของหนังสือกล่าวถึงสิ่งนี้ว่ามันค่อนข้างที่จะเป็นเรื่องยาก ซึ่งมีดังนี้ “ในทรัพยากรของการทำงานแบบหลายโปรแกรม หลายๆโปรเซสจะแย่งชิงจำนวนทรัพยากรที่มีอยู่จำกัด โปรเซสจะทำการร้องขอทรัพยากร และถ้าทรัพยากรไม่สามารถใช้ประโยชน์ได้ในขณะนั้น โปรเซสจะเข้าสู่สถานะที่รอการทำงาน บางทีโปรเซสที่กำลังรอก็จะไม่ได้เปลี่ยนสถานะ เพราะว่าทรัพยากรนั้นถูกเรียกใช้โดยโปรเซสอื่นๆที่กำลังรอ สถานการณ์นี้เรียกว่า Deadlocks”
3
Deadlocks Example person #1 จะมีอัลกอริทึม ดังนี้ : person1:
get username get password access account, download stuff release password release username person 2 จะมีอัลกอริทึมต่างจาก person1 เพียงเล็กน้อย ดังนี้: person2: get password get username access account, download stuff release username release password
4
Deadlocks จำไว้ว่าคอมพิวเตอร์สามารถทำ context switch ได้ตลอดเวลา ดังนั้นเราจะวางโปรเซสแรกในคอลัมน์ทางซ้ายมือ และโปรเซสที่สองในคอลัมน์ทางขวามือ ดังนี้ get username (context switch) get password (process 2 hangs trying to get username, since process 1 has it) (context switch) (process 1 hangs trying to get password, since process 2 has it)
5
Deadlocks person 1 จะต้องรอพาสเวิร์ดซึ่ง person 2 มีแล้วperson 2 จะต้องรอชื่อผู้ใช้ซึ่ง person 1 มีแล้ว ดังนั้น ถ้าถูกต้อง หรือทั้งสองโปรเซสสามารถรันได้โดยไม่เกิด context switch ในระหว่างการทำงาน ก็แสดงว่าไม่มีปัญหา แต่ก็ไม่สามารถที่รับรองได้ว่า จะไม่มีcontext switch เกิดขึ้นภายหลัง
6
4 ปัจจัยของการเกิด Deadlocks
Mutual exclusion - จะไม่ใช้ทรัพยากรร่วมกัน Hold & Wait เมื่อคุณได้รับทรัพยากร อย่าปล่อยมันไปจนกระทั่งเมื่อคุณได้ใช้งาน No preemption ไม่มีผู้ใด (O/S) สามารถนำมันไปที่อื่น และให้มันกับคนอื่นๆ Circular wait ปัยหาจะเป็นในลักษณะกราฟทิศทางเดียว หรือ กราฟวงกลม โดยกราฟจะแสดงการรอ dependenc ies – ถ้ากราฟเป็นวงกลม จะมี circular wait
7
4 ปัจจัยของการเกิด Deadlocks (ต่อ)
ถ้าหนึ่งในที่กล่าวมานี้มีความผิดพลาดเกิดขึ้น เป็นไปไม่ได้ที่จะไม่มีการgกิด deadlock ดังนั้นสิ่งที่เห็นอยู่ขณะนี้ เราก็จะรู้แล้วว่าต้องทำอย่างไรที่จะกำจัดปัญหาของ deadlock เราต้องหาทางที่จะทำให้แน่ใจได้ว่าหนึ่งใน 4 ข้อเงื่อนไข คือสิ่งที่ผิด ถ้าเราสามารถทำได้ เราจะสามารถแน่ใจได้ว่าจะไม่มี deadlock เกิดขึ้น
8
การแบ่ง circular wait การแบ่ง circular wait ซึ่งเป็นเทคนิคที่จะป้องกันการเกิด deadlock ได้แก่ 1. กำหนดขอบเขตของทรัพยากรทั้งหมด กำหนดตัวเลขสำหรับทรัพยากร แต่คุณต้องไม่เพิ่มตัวเลขเป็นสองเท่า 2. รหัสของคุณจะต้องได้รับทรัพยากรในรายการ และจะต้องได้รับทรัพยากรทั้งหมดก่อนงาน 3. รหัสของคุณจะต้องปล่อยทรัพยากรสำหรับงาน
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.