วันพฤหัสบดีที่ 29 สิงหาคม พ.ศ. 2556

สรุปผลการเรียนวันที่ 28 สิงหาคม 2556

CPU Scheduling (การกำหนดการใช้ซีพียู)
อัลกอริธึมที่เลือกโปรเซสเข้าไปใช้ซีพียูนั้นมีหลายอัลกอริธึม ระบบคอมพิวเตอร์จำเป็นต้องพิจารณาเลือกใช้อัลกอริธึมที่เหมาะสม ทั้งนี้ขึ้นอยู่กับเป้าหมายของระบบคอมพิวเตอร์นั้นๆ โดยที่เป้าหมายของระบบอาจเป็นข้อใดข้อหนึ่งต่อไปนี้ หรือมีหลายเป้าหมายประกอบกัน
1. มาก่อนบริการก่อน (First-Come, First-Serve Scheduling : FCFS) เป็นอัลกอริทึมที่ง่ายที่สุด โดยจะกำหนดให้โปรเซสที่ ร้องขอซีพียูก่อนเป็นโปรเซสที่ได้รับซีพียูก่อน เมื่อมีโปรเซสที่อยู่ในสถานะพร้อมที่จะทำงาน โปรเซสนั้นจะถูกนำเข้าไปต่อท้ายคิวพร้อม เมื่อซีพียูว่าง ระบบปฏิบัติการจะเรียกกำหนดการซีพียู เพื่อให้พิจารณามอบซีพียูให้แก่โปรเซสที่อยู่ต้นคิวของคิวพร้อม
2. งานสั้นทำก่อน (Shortest-Job First Scheduling : SJF) เป็นอัลกอริทึมมาก่อนบริการก่อนนั้น พบว่า ค่าเฉลี่ยของเวลาครบวงงาน และค่าเฉลี่ยของเวลารอมีค่าสูง โดยเฉพาะกรณีที่ในคิวพร้อมมีโปรเซสที่ต้องการใช้ซีพียูเป็นเวลาที่แตกต่างกันอัลกอริทึมของงานสั้น
ทำก่อนจะพยายามลดค่าเฉลี่ยของเวลาครบวงงาน และค่าเฉลี่ยของเวลารอ โดยกำหนดให้โปรเซสที่ต้องการใช้ซีพียูเป็นระยะเวลาน้อยได้เข้าใช้ซีพียูก่อนโปรเซสที่ต้องการใช้ซีพียูเป็นระยะเวลานาน
3. ลำดับความสำคัญ (Priority Scheduling)
เป็นวิธีจัดลำดับการใช้ซีพียูโดยกำหนดลำดับความสำคัญ (Priority) ให้แต่ละโปรเซส โดยระบบจะต้องกำหนดว่า
• ให้ตัวเลขที่มีค่าน้อยที่สุด แสดงถึงลำดับความสำคัญน้อยที่สุด
• ให้ตัวเลขที่มีค่ามากที่สุด แสดงถึงลำดับความสำคัญมากที่สุด
• ให้ตัวเลขที่มีค่าน้อยที่สุด แสดงถึงลำดับความสำคัญมากที่สุด
• ให้ตัวเลขที่มีค่ามากที่สุด แสดงถึงลำดับความสำคัญน้อยที่สุด
4. วิธีวนรอบ (Round-Robin Scheduling : RR) อัลกอริทึมนี้ถูกออกแบบมาเพื่อใช้สำหรับระบบแบ่งเวลา โดยมีการทำงานเหมือนอัลกอริทึมแบบมาก่อนบริการก่อน แต่กำหนดให้โปรเซสใช้ซีพียูในเวลาที่จำกัด เรียกว่า เวลาควอนตัม (Quantum time)  หรือ การแบ่งเวลา (Time slice)
5. คิวหลายระดับ (Multilevel Queue Scheduling) อัลกอริธึมของการจัดลำดับวิธีนี้ ถูกสร้างขึ้นจากแนวความคิดที่ว่า โปรเซสสามารถถูกแบ่งเป็นกลุ่มต่างๆได้หลายกลุ่ม เช่น งานระบบ ( system process ) และงานกลุ่ม ( batch process ) โดยแต่ล่ะกลุ่มมีเวลาการตอบสนองที่ต่างกัน จึงย่อมต้องการการจัดลำดับที่แตกต่างกันด้วย
การจัดการหน่วยความจำ
หน่วยความจำภายใน (Internal Memory)
บางครั้งเรียกว่า หน่วยความจำแคช ประกอบด้วยรีจิสเตอร์ความเร็วสูง หน่วยความจำส่วนนี้ส่วนนี้ถูกใช้สำหรับเก็บคำสั่งและข้อมูลที่ต้องการทำงานด้วยความเร็วสูงมาก และเป็นหน่วยความจำที่หน่วยประมวลผลกลางสามารถเข้าถึงได้โดยตรงและรวดเร็ว
หน่วยความจำหลัก(Main Memory)
หน่วยความจำหลัก เป็นศูนย์กลางของการทำงานต่างๆของระบบคอมพิวเตอร์ในปัจจุบัน หน่วยความจำหลักในพื้นที่
เก็บข้อมูลขนาดเป็น ไบต์ (byte) โดยแต่ละไบต์จะมีแอดเดรส (address) บอกตำแหน่งของตัวเอง และโดยทั่วไปแล้วโปรแกรมเมอร์ล้วนแต่ต้องการระบบที่มีหน่วยความจำหลักแบบไม่จำกัด,มีความเร็วสูง , และมีหน่วยความจำที่มีความเสถียรสูงหรือเป็นแบบไม่ถูกลบเลือน
หน่วยความจำสำรอง (Secondary Memory)
เป็นหน่วยความจำที่มีความเร็วน้อยกว่าหน่วยความจำสองประเภท ใช้สำหรับเก็บข้อมูลที่มีขนาดใหญ่ และยังไม่ต้องการนำมาประมวลผล
การยึดเหนี่ยวเลขที่อยู่ (Address Binding)
- เวลาแปรโปรแกรม (Compile Time)
เมื่อนำโปรแกรมต้นฉบับที่ระบุตำแหน่งของหน่วยความจำหลักด้วยเลขที่อยู่สัมบูรณ์ผ่านการแปลด้วยคอมไพเลอร์ จะได้ object program
- เวลาโหลด (Load Time)
เมื่อนำโปรแกรมต้นฉบับที่ระบุตำแหน่งของหน่วยความจำหลักด้วยการใช้เลขที่สัมพัทธ์ ผ่านคอมไพเลอร์ จะได้ object program ที่อ้างถึงตำแหน่งของหน่วยความจำหลักด้วยเลขที่สัมพัทธ์
- เวลากระทำการ (Execution Time)
โปรแกรมต้นฉบับถูกแบ่งออกเป็นส่วนๆแต่ล่ะส่วนถูกใช้ไม่พร้อมกัน เช่น ส่วนที่รับข้อมูล ส่วนที่ประมวลผลข้อมูล และส่วนที่แสดงผลลัพธ์
- การซ้อนทับ (Overlays)
โดยทั่วไปแล้ว งาน หรือ โปรแกรม หรือ โปรเซส ที่ต้องการประมวลผลยูวีพียู จะต้องถูกบรรจุในหน่วยความจำหลัก นั่นคือโปรเซสจะต้องมีขนาดน้อยกว่าหรือเท่ากับขนาดของหน่วยความจำหลักลบด้วยขนาดของระบบปฏิบัติการ

วันอาทิตย์ที่ 25 สิงหาคม พ.ศ. 2556

ประวัติส่วนตัว (สอบแก้!!)

นาย รณกร ประดิษฐ์นอก
ชื่อเล่น แบงค์
เกิดวันที่ 25 เดือน พฤศจิกายน พ ศ .2536
อายุ 20 ปี
อยุ่บ้านเลขที่ 551 หมู่ 5 ต.น้ำอ้อม อ.กันทรลักษ์ จ.ศรีสะเกษ
จบจากโรงเรียนบึงมะลูวิทยา
ปัจจุบันศึกษาที่ มหาวิทยาลัยราชภัฏอุบลราชธานี
คณะ วิทยาการคอมพิวเตอร์
หมู่เรียน 56.11.6
คติประจำใจ ตายไปเวลานอนมีตลอดชีวิต

วันพฤหัสบดีที่ 22 สิงหาคม พ.ศ. 2556

การจัดการเวลา CPU

การจัดการเวลา CPU
การจัดเวลาซีพียู (CPU Scheduling) เป็นหลักการทำงานหนึ่งของระบบปฏิบัติการที่ทำให้คอมพิวเตอร์มีความสามารถในการรันโปรแกรมหลายๆ โปรแกรมในเวลาเดียวกัน ซึ่งการแบ่งเวลาการเข้าใช้ซีพียูให้กับโปรเซสที่อาจถูกส่งมาหลายๆ โปรเซสพร้อมๆกัน ในขณะที่ซีพียูอาจมีจำนวนน้อยกว่าโปรเซส หรืออาจมีซีพียูเพียงตัวเดียว จะทำให้คอมพิวเตอร์สามารถทำงานได้ปริมาณงานที่มากขึ้นกว่าการที่ให้ซีพียูทำงานให้เสร็จทีละโปรเซส ในบทนี้ เราจะมาพูดถึงอัลกอริทึมพื้นฐานของการจัดเวลาซีพียูนี้ โดยจะพูดถึงวิธีการหลักๆ ที่แต่ละอัลกอริทึมมีแตกต่างกัน ข้อดีข้อเสีย และความเหมาะสมต่อระบบงานแบบต่างๆ เพื่อการเลือกใช้อย่างถูกต้อง
1. Scheduling Criteria
1.1 การใช้ประโยชน์หน่วยประมวลผลกลาง (CPU utilization)
1.2 ประมาณงาน (Throughput)
1.3 เวลาโดยรวม (Turnaround time)
1.4 เวลาคอย (Waiting time)
1.5 เวลาตอบสนอง (Response time)
2. Scheduling Algorithms
หน้าที่ของตัวจัดคิวคือ คัดเลือกโปรเซสซึ่งรออยู่ในสถานะพร้อมที่เหมาะสมที่สุดให้เข้าไปอยู่ในสถานะรัน (ได้ครอบครองซีพียู) โดยแท้จริงแล้วการส่งโปรเซสที่ถูกเลือกแล้วให้เข้าไปอยู่ในสถานะรัน เป็นหน้าที่ของโปรเซสของ OS ที่ชื่อตัวส่ง (dispatcher) ในแง่การทำงานแล้วตัวจัดคิวจะเป็นผู้คัดเลือกโปรเซสและเรียกให้ตัวส่งส่งโปรเซสที่ถูกเลือกแล้วเข้าไปในสถานะรันเป็นความรับผิดชอบของตัวจัดคิว
2.1 การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-come First-served Scheduling)
การจัดคิวแบบ FCFS (first-come-first-served) วิธีการคัดเลือกแบบ FCFS นี้เป็นวิธีที่ง่ายที่สุด คือ โปรเซสไหนเข้ามารอในคิวก่อนจะได้ครอบครองซีพียูก่อน ตามลำดับเวลาของการเข้ามาอยู่ในคิว คือ “มาก่อนได้ก่อน” โปรเซสที่ได้ครอบครองซีพียูจะทำงานไปจนเสร็จ ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาการครอบครองซีพียู แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต-เอาต์พุต หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู และออกจากสถานะรันไปอยู่ในสถานะติดขัด เมื่อใดที่งานเสร็จสิ้นลงหรือเกิดเหตุการณ์ที่กำลังรออยู่ โปรเซสนั้นจึงค่อยกลับเข้าไปอยู่ต่อท้ายคิวของสถานะพร้อมใหม่อีกครั้ง
เราอาจแสดงการเปลี่ยนสถานะของโปรเซสโดยใช้การจัดคิวแบบ FCFS ซึ่งจะเห็นว่าแตกต่างกับรูปแสดงการเปลี่ยนสถานะของโปรเซสที่เคยกล่าวมาคือ ไม่มีการเปลี่ยนสถานะของโปรเซสจากสถานะรันมายังสถานะพร้อมโดยตรง
2.2 การจัดเวลาแบบงานสั้นทำก่อน (SJF : Short-Job-First Scheduling)
การจัดคิวแบบ SJN (shortest job next) การคัดเลือกโปรเซสด้วยวิธีนี้ จะคัดเลือกเอาโปรเซสที่ต้องการเวลาในการทำงานน้อยที่สุด ทำให้โปรเซสที่ต้องการเวลาในการทำงานน้อยจบออกไปได้เร็วขึ้น จำนวนโปรเซสในระบบที่รออยู่ในคิวมีก็จะมีจำนวนลดลง และทำให้เวลาโดยเฉลี่ยในการทำงาน 1 งานเสร็จหรือเวลาครบงาน (turnaround time) น้อยลงแต่การจัดคิวแบบนี้เป็นผลเสียต่อโปรเซสที่ต้องการเวลาในการทำงานนาน
2.3 การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
การจัดคิวแบบลำดับความสำคัญ (priority queue) คิวแบบลำดับความสำคัญมีลักษณะแตกต่างกับคิวธรรมดา ภายในคิวจะมีการจัดเรียงลำดับของโปรเซสต่าง ๆ ตามลำดับความสำคัญของโปรเซสนั้น โปรเซสที่อยู่ต้นคิวจะมีลำดับความสำคัญมากที่สุด และลดลงเรื่อย ๆ โปรเซสที่อยู่ท้ายคิวคือโปรเซสที่มีลำดับความสำคัญต่ำสุด การคัดเลือกโปรเซสจะเอาโปรเซสที่อยู่ต้นคิว (มีลำดับความสำคัญสูงสุด) เข้าไปครอบครองซีพียูก่อน ดังนั้นถึงแม้ว่าโปรเซสที่เข้าคิวทีหลังแต่มีลำดับความสำคัญสูงกว่าก็อาจได้เข้าไปครอบครองซีพียูก่อน โปรเซส E เข้าคิวเป็นโปรเซสหลังสุด แต่จะได้ครอบครองซีพียูก่อนโปรเซส C และ D
2.4 การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
การจัดคิวแบบ RR (round-robin) การจัดคิวแบบ RR อาจเรียกว่าเป็นการจัดคิวแบบมีการวนรอบ ลักษณะการคัดเลือก โปรเซสในคิวจะเป็นแบบ FCFS คือ “มาก่อนได้ก่อน” แต่ต่างกันนิดหน่อยตรงที่การครอบครองซีพียูของโปรเซสในสถานะรันจะถูกจำกัดเวลาไว้ด้วยระยะเวลาควอนตัม ทำให้โปรเซสที่ต้องการเวลาในการทำงานนานจะต้องเปลี่ยนสถานะหมุนระหว่างสถานะพร้อมและสถานะรัน
การจัดคิวแบบ RR สามารถแก้ปัญหาการคอยนานของโปรเซสที่ต้องการเวลาทำงานน้อย ๆ ได้ลองกลับไปพิจารณาเหตุการณ์สมมติซึ่งกล่าวไว้ในหัวข้อที่แล้ว ถ้าระบบกำหนดเวลาควอนตัมเป็น 1 วินาที โปรเซส A ต้องมีการวนรอบเปลี่ยนสถานะระหว่างสถานะรันและสถานะพร้อม 15 ครั้ง โปรเซส B 1 ครั้ง โปรเซส C 10 ครั้ง เมื่อโปรเซส A เข้าไปอยู่ในสถานะรันครั้งแรกและกลับออกมา โปรเซส B จะได้ครอบครองซีพียูได้และ ทำงานเสร็จโปรเซส B จบและออกจากระบบไปเลยเหลือเพียง 2 โปรเซสที่อยู่ในคิวของสถานะพร้อม โปรเซสถัดไปที่จัดได้ครอบครองซีพียูคือ C โปรเซส C และ A จะสลับกันครอบครองซีพียูกันโปรเซสละ 1 วินาที จนกระทั่งโปรเซส C จบ เหลือโปรเซส A เพียงโปรเซสเดียว เป็นแผนภาพแสดงการสลับกันทำงานของโปรเซสทั้ง 3 และเป็นผลที่เกิดขึ้นจากการจัดคิวแบบ RR
2.5 การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling)
เพื่อให้การจัดคิวเป็นไปอย่างมีประสิทธิภาพ จึงมีการนำหลาย ๆ เทคนิคมาประยุกต์เข้าด้วยกัน เป็นการจัดคำแบบวนรอบ ที่คำนึงถึงความสำคัญของงาน ทำให้งานที่มีความสำคัญเหมือนกันอยู่ในคิวเดียวกัน และให้งานสำคัญน้อย ๆ อยู่ในคิวที่สำคัญน้อยเช่นกัน
3. การประเมินอัลกอริทึม (Algorithm Evaluation)
จากที่ได้ศึกษาอัลกอริทึมทั้ง 5 แบบ สำหรับการจัดเวลาซีพียูมาแล้ว ก็ต้องเลือกอัลกอริทึมที่จะใช้งาน สำหรับเลือกงานเข้าประมวลผล มีหลาย ๆ วิธีในการพิจารณาอัลกอริทึม ที่ต้องคำนึงถึง CPU utilization, Response time และ Throughput เพื่อให้ได้ผลออกมาดีที่สุด
หลักเกณฑ์การพิจารณาอัลกอริทึมเข้าประมวลผล
1. ให้ใช้ซีพียูสูงสุด โดยช่วงเวลาตอบสนองต่ำสุด
2. ให้มีเวลารวม หรือวนรอบที่เหมาะสม กับเวลาที่ต้องใช้ประมวลผลทั้งหมด
3.1 วิธีกำหนดโมเดล (Deterministic modeling)
วิธีนี้มีข้อจำกัดมากเกินไปสำหรับการนำมาใช้ในปัจจุบัน เพราะวิธีนี้จะเป็นวิธีที่ง่าย ได้ตัวเลขออกมาแน่นอน จากตัวอย่างข้อมูลจำนวนหนึ่งที่ป้อนเข้าไป แต่ผลลัพธ์ไม่มีความน่าเชื่อถือมากพอ เพราะในสถานการณ์จริงจะมีข้อมูลที่ซับซ้อนกว่ามาก เช่นเลือกอัลกอริทึมมาพิจารณา 3 แบบ คือ FCFS, SJF และ RR ซึ่งผลของการพิจารณาแต่ละอัลกอริทึมจะออกเป็นตัวเลขให้เลือก การเลือกเป็นสิ่งที่ตัดสินใจได้ง่าย แต่ไม่อาจไม่เหมาะที่จะใช้งานจริง
3.2 วิธีจัดเมเดลของคิว (Queueing models)
วิธีนี้มีปัญหาการคำนวณค่าเฉลี่ยของการกระจายในระบบที่มีความซับซ้อน เมื่อพิจารณาในระบบเครือข่ายที่แบ่งกลุ่มงานออกเป็นสถานี หรือสายการผลิตที่มีคิวของตนเอง ถ้าทราบเวลาที่ให้บริการของแต่ละสายการผลิต และรู้เวลาที่แต่ละงานเข้าคิว ก็จะหาค่าต่าง ๆ ได้ตามต้องการ วิธีนี้เรียกว่า queueing network analysis
จากตัวอย่างข้างต้นอาจใช้สูตร al = at * w (ค่าเฉลี่ยความยาวของคิว = ค่าเฉลี่ยของงานใหม่เข้ามา * ค่าเฉลี่ยการรอคอย) เช่น เวลาเฉลี่ยในคิวคือ 10 วินาที ถ้างานใหม่ต้องรอเข้าคิวประมาณ 2 วินาที และแต่ละงานต้องคอยเข้าหน่วยประมวลผล 5 วินาที
3.3 วิธีจำลองสถานการณ์ (Simulations)
วิธีนี้จะพัฒนาโปรแกรมคอมพิวเตอร์ขึ้นมา เสมือนเป็นหุ่นจำลอง พร้อมกำหนดสภาพแวดล้อม และตัวแปรคำนวณเวลาให้อยู่ในการควบคุม โดยเวลาของสถานการณ์กำหนดได้ 2 แบบคือ แบบสุ่ม หรือแบบข้อมูลจริง นอกจากนั้นยังต้องมี trace tape เก็บข้อมูลในช่วงเวลาต่าง ๆ และนำมาเปรียบเทียบ สำหรับวิธีการนี้ต้องอาศัยเวลา และค่าใช้จ่าย เพื่อให้ได้ผลลัพธ์ที่เที่ยงตรง
3.4 วิธีติดตั้งจริง (Implementation)
วิธีนี้ไม่นิยมปฏิบัติ แม้แบบจำลองจะไม่มีทางเหมือนจริง จึงมีแนวคิดว่าเขียนขึ้นมาใช้จริงเพื่อให้ได้ข้อมูลจริง แต่วิธีนี้ต้องลงทุนสูงมาก นอกจากต้องเขียนโปรแกรมของอัลกอริทึมแต่ละตัว ยังต้องใช้เวลา และแรงงานเปลี่ยนการทำงานของโปรแกรม การจัดการระบบเพื่อให้รองรับอัลกอริทึมแบบต่าง ๆที่จะนำมาทดลอง ซึ่งแต่ละอัลกอริทึมอาจต้องการฮาร์ดแวร์ที่พิเศษ และคอมพิวเตอร์ก็มิได้เปลี่ยนอุปกรณ์กันได้ง่าย

วันพุธที่ 21 สิงหาคม พ.ศ. 2556

ภาวะติดตายหรือDeadlock

ภาวะติดตายหรือDeadlock คืออะไร
การติดตาย(Deadlocks) คือเมื่อโปรเซสต้องการใช้ทรัพยากร และร้องขอทรัพยากรจากระบบ แต่ทรัพยากรที่โปรเซสต้องการใช้ไม่ว่าง เนื่องจากโปรเซสอื่นกำลังใช้งานอยู่ ทำให้โปรเซสนั้นๆ ต้องรอคอย และเป็นการรอคอยที่ไม่มีที่สิ้นสุด (โปรเซสไม่มีโอกาสได้รับการจัดสรรทรัพยากร) เช่น โปรเซส A ต้องการใช้เครื่องพิมพ์ แต่เครื่องพิมพ์ถูกใช้โดยโปรเซส B ทำให้โปรเซส A ต้องรอจนกว่าเครื่องพิมพ์จะว่าง ส่วนโปรเซส B อยู่ในสถานะรอให้ทรัพยากรอื่นว่างเช่นกัน ทำให้โปรเซส A ไม่มีโอกาสได้รับจัดสรรให้ใช้เครื่องพิมพ์ ซึ่งเป็นการรอคอยอย่างไม่มีที่สิ้นสุด
ลักษณะการติดตาย
1. การไม่เกิดร่วม (Mutual Exclusion)
ในกรณีที่เป็นทรัพยากรที่ไม่สามารถใช้ร่วมกันได้ ทาให้ทรัพยากรถูกใช้งานได้เพียงครั้งละ 1 โปรเซส คือ ขณะเวลาหนึ่งจะมีเพียงโปรเซสเดียวที่ใช้งานทรัพยากรได้ ไม่สามารถมีโปรเซสอื่นใช้งานทรัพยากรพร้อมกันได้
2. การครอบครองและการรอใช้ทรัพยากร (Hold and Wait)
โปรเซสที่ได้ครอบครอง (hold) ทรัพยากรอยู่แล้ว ต้องการใช้ทรัพยากรอื่นเพิ่มเติม และร้องขอทรัพยากรที่มีสถานะไม่ว่าง ทาให้โปรเซสต้องรอ (Wait)
3. การไม่แย่งชิงทรัพยากร (No Preemptive)
โปรเซสที่รอใช้ทรัพยากรต่อจากโปรเซสอื่น (ที่กาลังใช้ทรัพยากรนั้นอยู่) จะต้องรอจนกว่าโปรเซสนั้นๆ ทางานเสร็จ และปลดปล่อยทรัพยากร โปรเซสไม่สามารถแย่งชิงทรัพยากรจากโปรเซสอื่นได้
4. การรอแบบวงกลม (Circulate Wait)
โปรเซสเกิดการรอเป็น วัฏจักร (P0, P1, P2, …, Pn) โดย
P0 รอทรัพยากรที่ถูกครอบครองโดย P1
P1 รอทรัพยากรที่ถูกครอบครองโดย P2
……………………………………………………………………
Pn-1 รอทรัพยากรที่ถูกครอบครองโดย Pn
Pn รอทรัพยากรที่ถูกครอบครองโดย P0
การเกิดติดตายจะต้องมีครบทั้ง 4 เงื่อนไข โดยเงื่อนไขทั้ง 4 ข้อนี้ ไม่ได้เป็นอิสระต่อกัน คือ ถ้าเกิดการรอแบบวงกลมแล้ว จะทาให้เกิดการครอบครองและรอ เป็นต้น
ตัวอย่างของเหตุการณ์ที่เกิดการติดตาย
• การติดตายในการจราจร
• การติดตายในการใช้ทรัพยากร
การหลีกเลี่ยงการติดตาย
ทางเลือกหนึ่งก็คือยอมให้เกิด 3 กรณีดังนี้ อนุญาตให้ใช้ทรัพยากรร่วมกันด้ให้โปรเซสร้องขอทรัพยากรทั้งหมด ก่อน และให้ระบบแทรกกางคัน แต่ระบบต้องใช้วิจารณญาณในการเลือกระบบต้องมีความสามารถตัดสินใจว่าในกรณีที่ทรัพยากรหนึ่งๆนั้นจะทำให้ระบบปลอดภัยหรือไม่ และจะอนุญาตให้โปรเซสนั้นได้รับทรัพยากร ถ้าระบบปลอดภัยเท่านั้น
การตรวจสอบการติดตาย
1. จะตรวจสอบเมื่อใดและบ่อยแค่ไหนขึ้นอยู่กับ
– ความถี่หรือโอกาสที่จะเกิดสภาวะติดายในระบบ
– จำนวนโปรเซสที่ต้องทำงานย้อนหลัง
2. ถ้าอัลกอริทึมตรวจหาสภาวะติดตายถูกนำมาใช้อย่างไม่สมบรูณ์ อาจเป็นไปได้ว่าจะเกิด Cycle ขึ้นหลาย Cycle จนทำให้ไม่สามารถบอกได้ว่าโปรเซสใดอยู่ในกลุ่ม Cycle