วันจันทร์ที่ 24 มกราคม พ.ศ. 2554

การติดตาย deadlock

การติดตาย

          ในระบบคอมพิวเตอร์มีทรัพยากรต่างๆ เชื่อมโยงอยู่มากมาย แต่ ณ เวลาหนึ่งอุปกรณ์แต่ละอย่างจะถูกใช้งานได้จากโปรเซสเพียงโปรเซสเดียวเท่านั้น นอกจากนี้จะพบว่าโปรแกรมประยุกต์ หรือการใช้คอมพิวเตอร์เพื่อการทำงานด้านต่างๆ จะมีความเกี่ยวพันกับทรัพยากรมากกว่า 1 อย่าง เช่น การอ่านข้อมูลจากดิสก์เพื่อส่งไปพิมพ์ที่เครื่องพิมพ์ จะเห็นว่ามีการใช้งานทั้งดิสก์และเครื่องพิมพ์ในเวลาเดียวกัน ซึ่งการทำงานในลักษณะนี้ในระบบโปรแกรมเดียวจะไม่มีปัญหาเกิดขึ้นเนื่องจากมีเพียง
โปรเซสเดียงที่ครองทรัพยากร ไม่มีโปรเซสอื่นมาใช้งานร่วมด้วย แต่ในระบบหลายโปรแกรมปัญหา
จะเกิดขึ้น เช่น มี 2 โปรเซสต้องการที่จะใช้งานเครื่องพิมพ์เพื่อพิมพ์แฟ้มที่เก็บในดิสก์ โดยโปรเซส A ร้องขอการใช้เครื่องพิมพ์และระบบปฏิบัติการมอบเครื่องพิมพ์ให้โปรเซส A แล้ว เมื่อโปรเซส A ได้ครอบเครื่องเครื่องพิมพ์ก็จะติดต่อไปยังดิสก์เพื่ออ่านข้อมูลมาพิมพ์ แต่ในขณะนั้น ดิสก์กำลังถูกครอบ
ครองโดยโปรเซส B ในการอ่านข้อมูลเพื่อมาพิมพ์ที่เครื่องพิมพ์ ดังนั้นโปรเซส A จึงต้องคอยจนกว่า
โปรเซส B จะใช้งานดิสก์เสร็จจึงจะอ่านข้อมูลจากดิสก์ได้ ในขณะที่โปรเซส B จะปลดปล่อยดิสก์ก็ต่อเมื่อได้ครองเครื่องพิมพ์ ซึ่งโปรเซส A กำลังครอบครองอยู่ และจะปลดปล่อยเครื่องพิมพ์ก็ต่อเมื่อได้ครองดิสก์ ซึ่งจะเห็นว่าทั้งสองโปรเซสกำลังคอยซึ่งกันและกัน แต่ไม่มีโปรเซสใดสามารถทำงานต่อได้ เหตุการณ์ลักษณะนี้เรียกว่าการติดตาย (deadlock)
การติดตายสามารถเกิดขึ้นได้จากเหตุการณ์หลายเหตุการณ์ นอกเหนือจากการร้องขอใช้อุปกรณ์ เช่นในระบบฐานข้อมูล หากมีโปรแกรมหนึ่งได้ทำการล็อคระเบียนใกระเบียนหนึ่งไว้เพื่อใช้งานซึ่งเป็นการป้งกันปัญหาการแบ่งกันเข้าใช้ทรัพยากร ซึ่งก็คือระเบียนที่ตนกำลังใช้งานอยู่ เช่น โปรเซส A ทำการล็อคระเบียน R1 และโปรเซส B ทำการล็อคระเบียน R2 และทั้งสองโปรเซสต่างพยายามที่จะล็อคระเบียนของอีกฝ่ายหนึ่งเพื่อใช้งาน ซึ่งการที่จะสามารถล็อคระเบียนใดได้นั้นระเบียนนั้นต้องไม่อยู่ระหว่างการถูกล็อคไว้โดยโปรเซสใด เหตุการณ์ลักษณะนี้จะนำมาซึ่งปัญหาการติดตายเช่นเดียวกัน ดังนั้นจึงสามารถกล่าวได้ว่า การติดตายสามารถเกิดขึ้นได้ทั้งกับทรัพยากรที่เป็นฮาร์ดแวร์ และทรัพยากรที่เป็นซอฟต์แวร์


การติดตาย (Deadlock)

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



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

1. request ถ้าในกรณีที่การร้องขอไม่สามารถได้รับการตอบสนองทันที อาจเนื่องจากทรัพยากรขณะนั้นกำลังถูกโพรเซสอื่นใช้งาน แล้วโพรเซสที่ทำการร้องขอเข้ามาต้องรอจนกว่าจะเข้าใช้ทรัพยากรนั้นได้

2. Use : โพรเซสสามารถทำงานบนทรัพยากร (เช่น การพิมพ์งานผ่านทางเครื่องพิมพ์)

3. Release : โพรเซสออกจากการใช้ทรัพยากร

7.2 ลักษณะของการติดตาย

การติดตายสามารถเกิดขึ้นได้หากเกิดสถานการณ์ดังต่อไปนี้

1. Mutual Exclusion ต้องมีทรัพยากรอย่างน้อย 1 ตัวที่ไม่ได้อนุญาตให้ร่วมใช้งาน ดังนั้นมีเพียงโพรเซสเดียวที่สามารถเข้าใช้งาน ถ้าโพรเซสอื่นมีการร้องขอเข้าใช้งาน การร้องขอต้องถูกรอจนกว่าทรัพยากรนั้นจะว่างให้ใช้งาน

2. Hold & wait ต้องมีโพรเซสมีการใช้งานทรัพยากรอย่างน้อย 1 ตัว และกำลังรอเพื่อเข้าทำงานทรัพยากรอีกตัวที่กำลังถูกโพรเซสอื่นใช้งาน

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

4. Circular Wait มีเชตของ {P0, P1, ..., Pn} ของโพรเซสที่กำลังรอเช่น P0 กำลังรอทรัพยากรที่ถูกใช้โดย P1 ขณะเดียวกัน P1 ก็รอเข้าใช้ทรัพยากรที่กำลังถูกโพรเซส P2 ใช้งาน ท้ายสุดโพรเซสตัวสุดท้ายกำลังรอเข้าใช้ทรัพยากรที่โพรเซสแรกกำลังใช้งาน


การกำหนดทรัพยากรด้วยกราฟ

การติดตายสามารถอธิบายได้ด้วยกราฟอย่างง่ายๆ เรียกว่า System resource-allocation graph กราฟนี้จะประกอบไปด้วยกลุ่มของ V (Vertices) และกลุ่มของ E (edge) กลุ่มของ V แบ่งออกเป็น 2 ส่วนใหญ่คือจุดของ


P = {P1,P2,P3...,Pn} เซตนี้ประกอบด้วยโพรเซสที่กำลังทำงานในระบบ และจุดของ R = {R1,R2,R3...,Rm} เซตนี้ประกอบด้วยทรัพยากรทุกชนิดในระบบ การร้องขอสามารถแทนได้ด้วย Pi à Rj หมายถึงโพรเซส Pi ขอเข้าทำงานทรัพยากร Rj ส่วนการกำหนดให้ทรัพยากรบริการโพรเซสแทนได้ด้วย Rk à Pj หมายถึงทรัพยากร Rk กำลังถูกโพรเซส Pj ใช้งาน


       ลักษณะของกราฟที่ใช้อธิบายการติดตายมีรูปแบบดังรูปที่ 1 โดยใช้วงกลมแทนโพรเซส สี่เหลี่ยมแทนทรัพยากรที่มีในระบบ จุดที่อยู่บนช่องสี่เหลี่ยมเป็นตัวบ่งชี้ว่าทรัพยากรนี้สามารถถูกใช้งานได้พร้อมกันกี่โพรเซส ในรูปแบบต่อมาคือการขอเข้าใช้งานของโพรเซส i จะใช้ลูกศรชี้เข้าหาทรัพยากร(กล่องสี่เหลี่ยม) สุดท้ายสามารถแสดงว่าทรัพยากรนี้ได้ถูกโพรเซส i ใช้งานด้วยการชี้ลูกศรออกจากกล่องสี่เหลี่ยมโดยจะพุ่งออกจากจุดที่โพรเซสนั้นๆกำลังใช้งาน

       - P1 รอเข้าใช้งานทรัพยากร R1 ในขณะที่ทรัพยากร R1 ให้บริการโพรเซส P2 แล้ว P2 ก็กำลังรอเข้าทำงานทรัพยากร R3 ซึ่งกำลังให้บริการโพรเซส P3 ทรัพยากรR2 กำลังให้บริการทั้งโพรเซส P1 และ P2 ส่วนทรัพยากร 4 ว่างไม่มีเรียกใช้งาน ซึ่งสามารถแทนได้ด้วยลักษณะการเคลื่อนดังนี้

P1 à R1 à P2 à R3 à P3


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


         เพื่อป้องกันหรือควบคุมการเกิดการติดตายสามารถทำได้ 3 วิธีคือ

1. แน่ใจว่าระบบจะไม่เกิดการติดตายโดยการใช้ Protocol
2. ยอมให้ระบบเข้าสู่การติดตายได้ชั่วคราวแล้วสามารถออกมาได้
3. เมินเฉยทุกอย่าง แล้วอ้างว่าไม่เคยเกิดการติดตายในระบบ วิธีนี้ใช้อยู่ในระบบ Unix

จากที่ทราบมาแล้วว่าเหตุที่ทำให้เกิดการติดตาย
Mutual Exclusion เงื่อนไขของการเกิด mutual คือการใช้งานทรัพยากรที่อนุญาตให้ใช้ได้ทีละงาน เช่น
เครื่องพิมพ์ อีกนัยหนึ่งการร่วมใช้ข้อมูลโดยไม่ต้องการเข้า mutual ทำให้ไม่เกิดการติดตาย ตัวอย่างของไฟล์ที่สามารถอ่านได้อย่างเดียว ถ้าหลายๆโพรเซสพยายามที่จะอ่านก็สามารถเข้าอ่านได้ทันทีอย่างต่อเนื่อง อย่างไรก็ดีทรัพยากรบางชนิดไม่สามารถประกาศใช้งานร่วมกันได้
Hold / Wait รับรองได้ว่าเมื่อมีการร้องขอใช้ทรัพยากรทำงาน โพรเซสนั้นต้องไม่ได้กำลังใช้งาน
ทรัพยากรอื่นอยู่ ซึ่งสามารถทำได้หลายวิธีการเช่น บังคับให้โพรเซสร้องขอแล้วก็จัดสรรการใช้งานทรัพยากรให้กับโพรเซสนั้นๆก่อนที่จะมีการเริ่มทำงาน หรือยอมให้โพรเซสขอใช้ทรัพยากรได้เมื่อโพรเซสไม่ได้ทำงานในส่วนใดอยู่ ความแตกต่างระหว่างสองวิธีการอาจมีดังนี้ ถ้าพิจารณาโพรเซสที่ทำงานในการสำเนาไฟล์ข้อมูลจากเทปไปยังดิสก์ แล้วพิมพ์ออกทางเครื่องพิมพ์ ถ้าต้องให้โพรเซสมีการขอใช้ทรัพยากรก่อนที่จะเริ่มทำงานจริง ดังนั้นโพรเซสต้องเริ่มขอไปยังเทป แล้วดิสก์ สุดท้ายก็เป็นเครื่องพิมพ์ ดังนั้นเครื่องพิมพ์จึงต้องถูกจับจองเอาไว้ให้โพรเซสนี้ตลอดระยะเวลาในการทำงานทั้งหมดของโพรเซส ลักษณะเช่นนี้เกิดเป็นข้อเสียทางด้าน Resource Utilization ส่วนวิธีที่สองยอมให้โพรเซสร้องขอเพียงแค่ช่วงของการขอเทปและดิสก์ เพื่อสำเนาข้อมูลได้เนื่องจากโพรเซสเริ่มแรกยังไม่มีการใช้งานทรัพยากรใด แต่เมื่อกำลังใช้ในการสำเนา โพรเซสนั้นจะไม่มีสิทธิในการขอใช้เครื่องพิมพ์จนกว่าจะสำเนาเสร็จ เมื่อสำเนาเสร็จแล้วจึงต้องขอใช้ดิสก์กับเครื่องพิมพ์เพื่อสำเนาข้อมูลที่ต้องการพิมพ์มายังเครื่องพิมพ์นั้น ถ้าในระหว่างนั้นในโพรเซสอื่นอาจใช้งานเครื่องพิมพ์ หรือทรัพยากรเทปหรือดิสก์ ทำให้ต้องรอ ข้อมูลอาจสูญหาย หรือเกิดการรอในแต่ละช่วงของการร้องลักษณะเช่นนี้เป็นข้อเสียที่เกี่ยวเนื่องกับ Starvation หมายถึงสภาวะอดตาย

No Preemption ถ้าโพรเซสมีการใช้งานทรัพยากรอื่นอยู่ ดังนั้นก็จะไม่สามารถเข้าทำงานในทรัพยากร

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

Circular Wait ก่อนที่จะเริ่มใช้วิธีการนี้ต้องทำการกำหนดลำดับของชนิดทรัพยากรทั้งหมดและเมื่อร้องขอว่าในแต่ละโพรเซสที่ขอใช้ทรัพยากรเป็นการเพิ่มจำนวนลำดับของชนิดทรัพยากรที่ได้ระบุไว้ กำหนดให้ R เป็นเซตของชนิดทรัพยากร R1 , R2 .. ,Rn เรากำหนดในแต่ละชนิดทรัพยากรเป็นเลขจำนวนเต็มเพื่อให้สามารถทำการเปรียบเทียบได้ เช่นถ้าเซต ทรัพยากรกลุ่ม R คือมีเทป ดิสก์ และเครื่องพิมพ์ และกำหนดฟังก์ชันเป็นหนึ่งต่อหนึ่ง F : R à N ; N คือเซตของจำนวนจริง ดังนั้นเราสามารถกำหนดฟังก์ชันการทำงานได้คือ

F(tape drive) = 1 , F(disk drive) = 5, F(printer) = 12

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

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

Safe State

เมื่อโพรเซสร้องของทรัพยากรที่มีอยู่ ระบบต้องตัดสินว่าถ้าให้ใช้ทรัพยากรแล้วระบบจะยังคงอยู่ในสถานะที่ปลอดภัยหรือไม่ (Safe state หมายถึงสถานะที่ทรัพยากรสามารถให้บริการได้ทุกโพรเซส) ลักษณะของ Sequence <P1, P2, ...,Pn> จะยังคงดำเนินได้ก็ต่อเมื่อทรัพยากรที่ Pi ขอทำงาน ยังคงทำงานได้อย่างน่าพอใจ ซึ่งจะกำหนดโดยทรัพยากรที่มีในขณะนั้นบวกกับทรัพยากที่ถูกใช้งานอยู่ทั้งหมดของ Pj โดยที่ j < i นั้นหมายถึงถ้าทรัพยากรที่ Pi ต้องการยังไม่ว่างให้ใช้งาน Pi ต้องสามารถรอได้จนกว่า Pj ทำงานเสร็จ แล้วเมื่อ Pj ทำงานเสร็จ Pi สามารถเข้าทำงานทรัพยากรที่ต้องนั้นแล้วก็ออกไปเมื่อใช้งานเสร็จสิ้น เมื่อโพรเซส Pi ทำงานแล้วออกจากทรัพยากรนั้นแล้ว Pi+1 สามารถที่จะใช้งานทรัพยากรนั้นได้ต่อจากนั้น

ดังนั้นความจริงของสถานะที่ปลอดภัยจะไม่เกิดการติดตาย แต่ถ้าเป็นสถานะที่ไม่ปลอดภัยอาจเกิดการติดตายได้ ดังนั้นจึงต้องทำให้ระบบอยู่ในสถานะที่ปลอดภัย และไม่ยอมให้ระบบเข้าสู่ภาวะที่ไม่ปลอดภัยเพื่อหลีกเลี่ยงการติดตาย ตัวอย่างเช่นถ้าระบบมีเทป 12 ตัวและมีโพรเซส P0, P1 และ P2 เมื่อ P0 ต้องการใช้งานเทป 10 ตัว P 2 ต้องการใช้ 4 ตัว P3 ต้องการใช้อีก 9 ตัว สมมติว่าในเวลาที่ t0 โพรเซส 0 กำลังใช้งานเทป 5 ตัวอยู่ โพรเซส 1 ใช้งานอยู่ 2 และโพรเซส 2 ใช้งานอยู่ 2 ดังนั้นจะมีทรัพยากรเทปว่างอยู่อีก 3 ดังนั้นในเวลาที่ t0 ระบบยังอยู่ในภาวะปลอดภัย แต่ก็มีโอกาสที่จะเข้าสู่ภาวะไม่ปลอดภัยได้ สมมติที่เวลา t1 โพรเซส 2 มีการขอใช้งานเทปเพิ่มอีก 4 ตัว หรือมากกว่านั้น ดังนั้นระบบจะอยู่ในภาวะที่ไม่ปลอดภัย ดังนั้นมีเพียงโพรเซส 1 ที่จะช่วยได้คือต้องปล่อยทรัพยากรเทปให้ว่าง เพื่อให้มีทรัพยากรเหลือว่างพอให้โพรเซส 2 ใช้งานได้
อัลกอริทึมการกำหนดทรัพยากรด้วยกราฟ

claim edge Pi à Rj เป็นตัวกำหนดว่าโพรเซส Pi อาจทำการขอใช้ทรัพยากร Rj ซึ่งแทนได้ด้วยจุดปะ ดังนั้นเส้นจุดปะจะถูกเปลี่ยนให้กลายการเป็นการขอใช้งานจริง (แทนด้วยเส้นทึบ) เมื่อโพรเซสนั้นทำการขอใช้ทรัพยากรจริง ดังนั้นเมื่อทรัพยากรบริการโพรเซสเรียบร้อยแล้วก็จะเปลี่ยนกลับเป็นเส้นปะ Claim edge เหมือนเดิม สมมติถ้ามีโพรเซส 2 ขอใช้งานทรัพยากร 2 และ 1 ในขณะนั้นมีโพรเซส 1 กำลังร้องขอใช้งานด้วย แล้วทรัพยากร 1 ให้บริการโพรเซส 1 อยู่ ดังนั้นระบบมีสิทธิที่จะยอมให้โพรเซส 2 เข้าใช้งานทรัพยากร 2ได้ แต่พบว่าถ้ายอมให้มีการใช้ทรัพยากร 2 จะทำให้ระบบอยู่ในภาวะที่ไม่ปลอดภัย เนื่องจากจะเกิดการลูปรอหรือการติดตายทันที

อัลกอริทึมของนายธนาคาร (Banker Algorithm)

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

โครงสร้างของระบบนายธนาคารมีดังนี้ กำหนดให้มี n โพรเซส มีทรัพยากรในระบบทั้งหมด m ตัว

Available : เป็นเวกเตอร์ของขนาดที่ใช้ชี้จำนวนของทรัพยากรที่สามารถใช้งานได้ Available [j]=k ดังนั้น k คือจำนวนที่ทรัพยากรชนิด j จะสามารถให้บริการได้

Max : เป็นค่าเมตริกซ์ขนาด n x m ที่กำหนดความต้องการสูงสุดของแต่ละโพรเซส ถ้า max[i,j] = k แล้วโพรเซส i อาจต้องใช้ทรัพยากร j สูงถึง k บริการ

Allocation เป็นเมตริกซ์ขนาด n x m ที่กำหนดจำนวนของทรัพยากรในแต่ละชนิดที่ให้บริการแต่ละโพรเซสอยู่ได้ ถ้า allocation[i,j] = k หมายถึงโพรเซส i กำลังใช้งานทรัพยากรชนิด j อยู่เป็นจำนวน k บริการ

Need : เมตริกซ์ขนาด n x m เพื่อบ่งบอกจำนวนทรัพยากรที่เหลือที่ยังต้องการใช้ของแต่ละโพรเซส เช่น Need[i,j] = k หมายถึงโพรเซส i ยังคงต้องการใช้งานทรัพยากร j อยู่อีก k บริการ พบกว่า need[i,j] = Max[i,j] – Allocation[i,j]
อัลกอริทึมที่ปลอดภัย

อัลกอริทึมที่หาได้ว่าระบบปลอดภัยหรือไม่ สามารถทำได้ดังนี้

1. กำหนดให้ work และ finish เป็นเวกเตอร์ที่มีขนาด n x m โดยเริ่มทำงานที่ work := available และ finish[i] เป็นเท็จ โดยที่ i มีค่าตั้งแต่ 1, 2 , 3 ... n
2. หาค่า i ทั้ง 2 ฟังกัชัน คือ finish[i] := false , Needi =< Work ถ้าไม่ตามเงื่อนไข ข้ามไปยังขั้นที่ 4
3. Work := Work + allocation, finish[i] := true กลับไปยังขั้นที่ 2
4. ถ้า finish[i] = true สำหรับทุกค่าของ i แล้วระบบจะอยู่ในภาวะปลอดภัย

เวลาในการใช้ทำงานอัลกอริทึมนี้เท่ากับ m x n2
อัลกอริทึมของการขอใช้ทรัพยากร

กำหนดให้ Request i เป็นเวกเตอร์ของการขอใช้งานสำหรับโพรเซส i ถ้า requesti[j] = k หมายถึง

โพรเซส i ต้องการทำงาน k บริการจากทรัพยากร j เมื่อมีการขอใช้งานทรัพยากรโดยโพรเซส i ก็จะเกิดการทำงานดังต่อไปนี้

1. ถ้า Requesti =< Needi ไปยังขั้นตอนที่ 2 นอกจากนั้น ให้แสดงข้อความเตือน เนื่องจากโพรเซสมีการใช้ทรัพยากรมากว่าที่คาดการณ์ไว้
2. ถ้า Requesti =< Available ไปยังขั้นตอนที่ 3 นอกจากนี้โพรเซส i ต้องรอเนื่องจากทรัพยากรไม่มีให้ใช้งาน
3. มีการตั้งระบบลวงเพื่อใช้ทรัพยากรที่โพรเซส i ขอใช้ โดยการใส่ค่าในตัวแปรต่อไปนี้

Available := Available – Request;

Allocationi := Allocationi + Requesti;

Needi := Needi – Requesti;



ถ้าผลของการกำหนดค่าการให้ใช้ทรัพยากรออกมาพบว่าระบบอยู่ในภาวะปลอดภัย ก็จะจบสิ้นการ

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

     แสดงข้อมูลการใช้งานของระบบพบกว่ามี 5 โพรเซสในการทำงาน P0 – P 4 และมีทรัพยากรให้ใช้งานได้ 3 ตัว คือ A, B และ C ทรัพยากร A มีให้ใช้ได้ถึง 10 ตัว ทรัพยากร B ใช้ได้ถึง 5 ตัว และทรัพยากร C ใช้ได้ถึง 7 ตัว สมมติว่าที่เวลา t0 เกิดเหตุการณ์ดังรูปที่ 5 ดังนั้นจะสามารถหา Need := Max – allocation ดังรูปที่ 6 พบว่าระบบอยู่ในภาวะปลอดภัยแน่นอน และลำดับของความปลอดภัยเป็น <P1,P3,P4,P2,P0>


สมมติให้โพรเซส 1 มีการขอใช้งานทรัพยากรเพิ่ม 1 ตัว ของ A และจากทรัพยากร C อีก 2 ตัว ดังนั้น request1 := (1,0,2) ซึ่งสามารถตรวจสอบได้จาก

Request1 =< Available : (1,0,2) <= (3,3,2) เป็นจริงดังนั้นจึงต้องทำการสร้างระบบจำลองขึ้นมาเพื่อ

ตรวจสอบภาวะของระบบดังรูปที่ 7 หลังจากนั้นไปเข้าไปทำอัลกอริทึมที่ปลอดภัยเพื่อหาลำดับความปลอดภัย และได้ลำดับออกมาดังนี้ <P1, P3, P4, P0, P2> แต่เราพบกว่าถ้าโพรเซส P4 มีการขอใช้ทรัพยากร(3,3,0) จะไม่มีให้ใช้งานได้ และถ้า P0 ขอใช้งาน (0,2,0) ก็จะใช้ไม่ได้เช่นกันเนื่องจากจะทำให้อยู่ในภาวะไม่ปลอดภัย



7.5 การตรวจจับการติดตาย

ระบบต้องมีการจัดการดังต่อนี้

- อัลกอริทึมที่ตรวจสอบภาวะของระบบว่าจะเกิดการติดตายหรือไม่ (การตรวจจับ)

- อัลลกอริทึมที่จะกู้ระบบจากการติดตาย
กรณีที่มี 1 บริการในทรัพยากร 1 ตัว

ถ้าทุกทรัพยากรสามารถใช้บริการได้เพียง 1 โพรเซสแล้วเราสามารถกำหนดอัลกอริทึมของการตรวจจับการติดตายด้วยการใช้กราฟแสดงทรัพยากรที่เรียกว่ากราฟ Wait-for การติดตั้งดูแลการใช้กราฟสามารถทำได้โดยกำหนดให้ โหนดแทนโพรเซส สัญลักษณ์ Pi à Pj หมายถึงโพรเซส i กำลังรอโพรเซส j โดยจะทำการแปลงจากกราฟแทนทรัพยากรเป็น wait-for กราฟที่มีแต่โพรเซส จากนั้นจึงอ้างใช้อัลกอริทึมเพื่อทำการค้นหาตรวจดูว่ากราฟที่ได้เกิดเป็นลูปขึ้นหรือไม่ ซึ่งใช้ order n2 โดยที่ n คือจำนวนของเส้นตรงที่อยู่ในกราฟ
กรณีที่สามารถให้บริการมากกว่า 1 ในทรัพยากร 1 ตัว

ลักษณะจะคล้ายกับอัลกอริทึมของนายธนาคาร โดยมีโครงสร้างดังนี้

Available : เป็นเวกเตอร์ของขนาดที่ใช้ชี้จำนวนของทรัพยากรที่สามารถใช้งานได้

Allocation เป็นเมตริกซ์ขนาด n x m ที่กำหนดจำนวนของทรัพยากรในแต่ละชนิดที่ให้บริการแต่ละโพรเซสอยู่ได้

Request เป็นเวกเตอร์ขนาด n x m เพื่อบ่งบอกการร้องทรัพยากรของแต่ละโพรเซสในขณะนั้น เช่น

Request[i,j] = k หมายถึงโพรเซส i กำลังขอใช้ทรัพยากรจาก j เป็นจำนวน k บริการ

อัลกอริทึมของการตรวจจับมีดังนี้

1. ให้ work และ finish เป็นเวกเตอร์ที่มีขนาด n และ m เริ่มค่าที่ work := available สำหรับทุกค่าของ i ถ้า allocation != 0 แล้ว finish[i] = false นอกนั้นค่า finish[i] = true
2. ทำการหา i ดังต่อไปนี้
- finish[i] := false

- Requesti =< Work
ถ้าไม่เป็นตามนี้ข้อไปข้อ 4
3. Work := Work + Allocation;

Finish[i] := true ;

กลับไปยังข้อ 2

4. ถ้า finish[i] = false สำหรับบางค่าของ i ที่ 1 =< i =< n แล้วระบบจะอยู่ในภาวะการติดตาย ยิ่งกว่านั้นถ้า

finish[i] = false แล้วโพรเซส i จะถูกติดตาย

อัลกอริทึมนี้ใช้เวลาในการทำงาน order = m x n2


             ไม่เกิดการติดตาย เมื่อเราใช้อัลกอริทึมการตรวจจับสามารถได้ลำดับออกเป็น <P0, P2, P3, P1, P4> ที่ทำให้ค่า i เป็นจริงทุกค่า สมมติว่าถ้าให้โพรเซส 2 มีการขอใช้ทรัพยากรเพิ่มอีก 1 ในทรัพยากร C ดังนั้นค่า request จะเป็นไปตามรูปที่ 9 ระบบสามารถเกิดการติดตายแน่นอนเนื่องจากโพรเซส 0 ก็ไม่สามารถปล่อยทรัพยากร C ให้โพรเซส 2 ใช้เนื่องจากโพรเซส 0 ไม่ได้มีการใช้งานทรัพยากร C เลย
การใช้งานอัลกอริทึมตรวจจับ

จะมีการใช้งานอัลกอริทึมก็ต่อเมื่อ

- การติดตายเกิดขึ้นบ่อยอย่างไร

- จะมีโพรเซสจำนวนเท่าไหร่ที่ถูกกระทบเมื่อเกิดการติดตาย

ถ้ามีการใช้อัลกอริทึมตรวจจับในลักษณะวนลูป อาจพบหลายลูปในทรัพยากรกราฟและดังนั้นจะไม่

สามารถบอกได้ว่าโพรเซสใดที่ทำให้เกิดการติดตาย
การกู้คืนจากการเกิดตาย
การกู้คืนด้วยการออกจากระบบ

กำจัดการติดตายด้วยการให้โพรเซสออกจากระบบ ซึ่งมี 2 วิธี

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

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

ดังนั้นการใช้วิธีการใดต้องคำนึงแล้วเลือกจาก

1. ความสำคัญของโพรเซส

2. โพรเซสนั้นใช้เวลาในการประมวลผลมานานเท่าใด อีกนานเท่าไรจึงจะเสร็จ

3. ทรัพยากรที่โพรเซสนั้นใช้งาน

4. มีกี่โพรเซสที่ต้องถูกออกจากระบบ

5. โพรเซสนั้นเป็นแบบ interactive หรือ bath
วิธีการยึดทรัพยากร

แก้ปัญหาการติดตายด้วยการยึดทรัพยากร จากโพรเซสอื่นเพื่อให้อีกโพรเซสทำงานได้แล้วส่งผลให้ระบบไม่เกิดการติดตาย ดังนั้นจึงต้องพิจารณาเน้นที่จุดต่างๆดังนี้

1. การเลือกทรัพยากรที่จะยึด จะต้องเลือกให้เกิดความเสียหายน้อยที่สุด หมายถึงเลือกทรัพยากรที่จะยึดคืนให้น้อยที่สุด หรือคำนึงถึงเวลาที่จะสามารถแก้ปัญหาได้

2. การย้อนกลับ ต้องพิจารณาด้วยว่าการกลับเริ่มทำงานใหม่ของโพรเซส ดังนั้นต้องมีการเก็บค่าสเตตของโพรเซสที่กำลังทำงานไว้ก่อนเริ่มงานใหม่

3. การอดตาย ต้องให้มั่นใจว่าเมื่อยึดไปแล้วจะไม่เกิดการอดตายเนื่องจากโพรเซสไม่มีโอกาสได้ใช้ทรัพยากรอีกเลย

แหล่งอ้างอิง
http://webcache.googleusercontent.com/

วันจันทร์ที่ 17 มกราคม พ.ศ. 2554

การทำ Over Clock CPU นั้น มีผลดีผลเสีย และวิธีการทำกันอย่างไร

การทำ Over Clock CPU นั้น มีผลดีผลเสีย และวิธีการทำกันอย่างไร
ที่จริงแล้ว ผมเองต้องขอออกตัวก่อนนะครับว่าไม่ใช่เซียน Over Clock เพียงแต่ประสบการณ์ที่ผ่านมาทำให้ผมต้องเขียนเรื่องนี้ ก็เพราะว่าเจ้าคอมพิวเตอร์เครื่องแรก (ที่ผมมีโอกาสได้เป็นเจ้าของจริง ๆ) โดนคนขายหลอกมาเอา CPU Pentium 100 MHz มาทำ Over Clock เป็น Pentium 120MHz โดยที่ผมเองก็ไม่ค่อยจะได้รู้เรื่องอะไร ก็ใช้ไปเรื่อย ๆ จนกระทั่งวันหนึ่ง เกิดอยากจะ Upgrade เครื่องขึ้นมาถึงได้รู้ความจริงว่า CPU ตัวนั้นเป็นแค่ Pentium 100 MHz ดังนั้นท่านทั้งหลาย ก็ควรจะลองตรวจสอบเครื่องที่ท่านใช้งานอยู่บ้าง ว่าจะเจออย่างผมหรือเปล่า ในส่วนของผมคงจะเขียนอธิบายแต่ละส่วนเพียงคร่าว ๆ เท่านั้น หากต้องการรายละเอียดของเทคนิคต่าง ๆ ก็ลองหาอ่านดูตาม Link ด้านล่างเพิ่มเติมได้

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

จะเพิ่มความเร็วของ CPU ได้อย่างไร
ความเร็วของคอมพิวเตอร์ ที่เรียกกันว่ากี่ MHz มาจากตัวเลข 2 ตัวคูณกันครับ คือ FSB กับ Multiple หรือเรียกง่าย ๆ คือความถี่กับตัวคูณ นั่นเอง ปกติแล้ว CPU รุ่นเก่า ๆ เช่น Pentium 100 ถึง Pentium II รุ่นแรก ๆ และ Celeron จะใช้ FSB เป็น 66 MHz ถ้าเป็น CPU รุ่นหลังจากนั้นมา มักจะใช้ FSB ที่ 100 MHz หรือ 133 MHz แล้วครับ ความเร็วที่ได้ก็จะมีตัวคูณกำหนดเพิ่มเข้าไปด้วย ผมยกตัวอย่างเช่น 100 MHz จะมาจาก FSB=66 กับตัวคูณ 1.5 ครับ หรือ 133 MHz = 66x2, 200 MHz = 66x3, 366 MHz = 66x5.5, 400 MHz = 100x4, 600 MHz = 100x6 หรือ 667 MHz = 133x5 เป็นต้น
ดังนั้น หลักการเพิ่มความเร็วให้กับ CPU แบบง่าย ๆ ก็คือ ให้เพิ่มค่าของ FSB หรือ ตัวคูณเข้าไป เช่นจาก CPU ตัวเดิมเป็น 400 MHz ที่ 100x4 เราอาจจะตั้งค่าใหม่เป็น 100x4.5 แทนก็จะได้ความเร็ว 450 MHz ครับ แต่อย่าเพิ่งคิดว่าจะง่ายอะไรขนาดนั้น สำหรับ CPU ของ AMD เช่น K6II, K6III ก็อาจจะใช้วิธีนี้ได้เลย แต่หากเป็น CPU ของ Intel รุ่นหลัง ๆ จะมีการล็อคตัวคูณมาจากโรงงานไว้แล้วเพื่อป้องกันผู้ขายหรือร้านค้านำมาทำ Over Clock แล้วลบตัวเลขความเร็วบนชิป โดยพิมพ์ตัวเลขค่าความเร็วที่สูงกว่าแทน นำมาหลอกขายลูกค้าหรือที่เรียกว่า CPU Remark ครับ ดังนั้นการ Over Clock CPU ของ Intel ก็จะไม่สามารถใช้วิธีการเพิ่มตัวคูณได้นะครับ ต้องใช้วิธีการเพิ่ม FSB อย่างเดียวเท่านั้น
นอกจากนี้ ในส่วนของ CPU AMD Athlon ก็อาจจะต้องมีการ์ดหรืออุปกรณ์พิเศษสำหรับการทำ Over Clock ด้วยนะครับ ลองหาอ่านจาก Link ด้านท้ายบทความนี้ดู


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

เริ่มต้นการทำ Over Clock
หลักการกำหนดความเร็วของ CPU ก็ทราบกันแล้วนะครับ ดังนั้นการทำ Over Clock ก็เริ่มต้นได้เลย โดยการตั้งค่า FSB และ Multiple หรือตัวคูณใหม่ให้ได้ค่าที่เร็วกว่าเดิม โดยให้ทำการเพิ่มขึ้นไปทีละขั้นนะครับ เช่นจาก 400 MHz ที่ 100x4 ก็เพิ่มเป็น 420 MHz ที่ 405x4 ก่อน แล้วทดลองใช้งานดูสักพักหนึ่งว่ามีปัญหาการใช้งานหรือไม่ ความร้อนเพิ่มขึ้นมามากน้อยเพียงใด หากยังเป็นปกติดี ก็ให้เพิ่มความเร็วไปเรื่อย ๆ จนถึงขีดสุดของ CPU ครับคือเครื่องจะเริ่มมีปัญหา เข้า Windows ไม่ได้ หรือเข้าได้แต่ใช้งานหนัก ๆ แล้วจะแฮงค์ นั่นแปลว่าถึงขีดสุดของ CPU แล้ว ก็ให้ลดความเร็วลงมา 1 ขั้นก่อนที่จะเริ่มพบปัญหาครับ ถ้าการใช้งานต่าง ๆ เป็นปกติดีก็ถือว่าผ่าน (ในขั้นตอนแรกนะครับ) ขั้นตอนต่อไปก็คือการจัดการกับระบบต่าง ๆ เพื่อให้สามารถทำการ Over Clock หรือเพิ่มความเร็วให้มากขึ้น โดยการปรับปรุงค่าต่าง ๆ ที่จะแนะนำต่อไป

การปรับ Vcore กับการทำ Over Clock
ก่อนอื่นมารู้จักกันก่อน Vcore คือค่าของ ไฟเลี้ยงของ CPU ซึ่งแต่ละรุ่นจะใช้ไฟเลี้ยงไม่เท่ากัน ดังนั้นต้องศึกษาหาข้อมูลต่าง ๆ ให้ดีนะครับว่า ค่าปกติของ CPU แต่ละรุ่นเป็นเท่าไร เช่น K6II, K6III จะใช้ 2.2 V. , Celeron, PII และ PIII จะใช้ 2.0 V. และ PIII รุ่นใหม่ ๆ จะใช้ที่ 1.6 V. ส่วนใหญ่จะสามารถเพิ่มค่าของ Vcore ขึ้นไปได้อีกประมาณ 0.2 - 0.4 V. โดยที่การเพิ่ม Vcore ให้มากขึ้นก็จะสามารถทำให้การ Over Clock ทำได้มากขึ้นตามไปด้วย แต่การเพิ่ม Vcore ไปมากเท่าไร ความร้อนของ CPU ก็จะเพิ่มมากตามไปด้วยนะครับ หลักการเพิ่ม Vcore โดยทั่วไปก็คือ ให้เพิ่มขึ้นทีละน้อยที่สุดครับ เช่นทีละ 0.05 V. หรือทีละ 0.1 V. และทดลองใช้งานดู หากยังไม่เสถียรนัก ก็ลองเพิ่ม Vcore ขึ้นไปอีก โดยที่รวมแล้ว ต้องไม่มากจนเกินไปนะครับ คือไม่ควรเกินกว่าปกติมากกว่า 0.2 - 0.4 V. ไม่เช่นนั้น CPU ของคุณอาจจพังได้นะครับ (สำหรับท่านที่โชคดี ได้ CPU ตัวที่ดี ๆ มาใช้อาจจะสามารถนำมาทำ Over Clock โดยที่ไม่ต้องเพิ่มไฟ Vcore เลยก็ได้ (แต่ค่อนข้างจะหายาก)
อีกนิด สำหรับ CPU แบบ Slot 1 ส่วนใหญ่จะเป็นการ Detect จากเมนบอร์ด ทำให้เราไม่สามารถปรับค่าไฟ Vcore ให้เพิ่มขึ้นได้นะครับ แต่ก็ยังมีอีกวิธีหนึ่งคือการปิดขา CPU เพื่อเพิ่มไฟ ลองหาอ่านจาก Link การปิดขา CPU slot-1 เพื่อเพิ่ม Vcore

การระบายความร้อนที่ดี สำหรับการทำ Over Clock
หัวใจสำคัญของการทำ Over Clock ก็คือการระบายความร้อนออกจากตัว CPU ยิ่งเราทำการระบายความร้อนได้ดีมากเพียงใด ก็จะทำให้เราสามารถทำ Over Clock ได้มากขึ้นเท่านั้นครับ และยังสามารถยืดอายุการใช้งานของ CPU ได้อีกด้วย วิธีการระบายความร้อนก็มีอยู่ไม่กี่วิธีนะครับ ลองอ่านดูและทำความเข้าใจ หลังจากนั้นลองเลือกทำตามที่คุณคิดว่าพอจะทำได้ อันไหนมันโหดเกินไป ก็ข้าม ๆ ไปบ้างก็ได้ (แต่ถ้าทำได้ทุกอย่างก็ดี)
  • การเปลี่ยนพัดลมระบายความร้อนของ CPU
    เรียกได้ว่าเป็นสิ่งแรกเลยที่ควรจะทำครับ เนื่องจากว่าโดยปกติแล้ว พัดลมของ CPU ที่มีมาให้เดิม ๆ นั้นส่วนใหญ่จะเป็นแค่ตัวเล็ก ๆ เท่านั้น การที่เราเปลี่ยนพัดลมระบายความร้อนของ CPU ใหม่ให้ตัวใหญ่ขึ้น มีความแรงของลมมากขึ้น ก็ทำให้การระบายความร้อนดีขึ้นครับ ลองหาดูตัวอย่างของพัดลมระบายความร้อนแบบต่าง ๆ กันดีกว่า ว่าที่เขาใช้สำหรับ Over Clock กัน มันสุด ๆ ขนาดไหน http://www.titan-cd.com/majesty_1.htm (ผมเห็นแล้วยังอยากได้เลย)

  • การติดพัดลมที่เคสเพิ่มเติม
    ก็เป็นอีกวิธีหนึ่งที่สามารถทำได้โดยไม่ยากนัก หาพัดลมมาติดเพิ่มอีกตัวหนึ่งที่เคส สำหรับดูดลมเข้า และจะมีการเป่าลมออกอยู่แล้วที่พัดลมของ Power Supply นะครับ ซึ่งจะช่วยได้มากเลยทีเดียว
  • การขัด Heatzing ให้เรียบขึ้น
    โดยใช้กระดาษทรายน้ำเบอร์ 1500 วางให้เรียบบนแผ่นกระจก แล้วเอา Heatzing ขัดผิวหน้าเบา ๆ ให้ขัดวนไปมาเป็นรูปเลข 8 คอยเติมน้ำไปเรื่อย ๆ อย่าใจร้อนและห้ามออกแรงกดเด็ดขาด เราจะรู้ได้อย่างไงว่ามันเรียบแล้ว ก็ต่อเมื่อมันเกิด สูญญากาศ จะเกิดแรงตรึงผิวระหว่าง กระดาษทราย กับ Heatzing และห้ามเอากระดาษทรายหยาบขัดก่อนโดยเด็ดขาด พึงคิดไว้เสมอว่าเราจะทำการขัดผิวหน้าให้เรียบเท่านั้น เพื่อที่มันจะได้สัมผัสกับแผ่นระบายความร้อนของ CPU ให้แนบสนิทมากที่สุด
  • การทำ Lapping CPU
    วิธีนี้คือ การขัดผิวสัมผัสของ CPU ด้านที่จะติดกับ Heatzing ให้เรียบนะครับ ซึ่งผมไม่ขอแนะนำให้ทำเพราะว่าอาจจะเกิดความเสียหายต่อ CPU ได้และหากคิดจะนำ CPU ไปขายต่อก็คงจะยากแล้วนะครับ หลักการทำ Lapping ก็ก็คล้าย ๆ กับการขัด Heatzing นั่นแหละครับ คือใช้กระดาษทรายเริ่มด้วยเบอร์ 800 ขัดตัว CPU ก่อน พอเริ่มเห็นทองแดงแล้วก็ใช้เบอร์ 1500 และปิดท้ายด้วยเบอร์ 2000 เพื่อความเงางาม สะท้อนแสงได้เลย เวลาขัดต้องขัดเป็นรูปเลข 8 อย่าขัดเป็นวงกลมหรือขัดไปในทางใดทางหนึ่ง ขัดให้สีเงินหมดก็พอแล้ว อย่าขัดมากเกินไป ไม่งั้นอาจทำให้เกิดความเสียหายได้ หาอ่านเรื่องการทำ Lapping เพิ่มเติมจากเวปไซต์ http://overclocking.telefragged.com/cooling/lapping.html
  • การใช้ ซิลิโคน ทาระหว่าง CPU กับแผ่น Heatzing
    การใช้ ซิลิโคน (สำหรับแผ่นระบายความร้อนโดยเฉพาะนะครับ) ทาระหว่าง CPU กับ Heatzing ซึ่ง ซิลิโคน จะช่วยนำพาความร้อนไปสู่ Heatzing ได้ดีขึ้น ทำให้การระบายความร้อนออกจากตัว CPU ทำได้ดีขึ้นครับ อันนี้แนะนำให้หามาทานะครับ โดยวิธีการก็คือ ทาให้บางที่สุด แต่ให้แนบสนิทด้วยนะครับ เพราะเราต้องการให้มีพื้นที่ว่างระหว่าง CPU กับ Heatzing ให้น้อยที่สุด
  • การทำระบบระบายความร้อนด้วยน้ำ
    ก็เป็นอีกวิธีหนึ่งครับที่สามารถทำได้ แต่ก็คงจะลำบากและอาจจะต้องระมัดระวังเป็นพิเศษสักหน่อย หลักการก็คือการนำเอา Heatzing แบบพิเศษที่จะมีช่องทางเดินของน้ำผ่านเข้ามาด้วย และใช้มอเตอร์ ปั้มน้ำให้ไหลเวียนผ่าน เพื่อนำพาเอาความร้อนออกไปด้วย หาอ่านเรื่องนี้ได้จาก Link ด้านล่าง
  • การเปิดฝาเคส และใช้พัดลมเป่าระบายความร้อน
    ก็เป็นอีกวิธีหนึ่งที่หลาย ๆ คนนิยมทำกัน จะช่วยให้ระบายความร้อนได้ค่อนข้างดี แต่อาจจะเกะกะ ไม่สะดวกนัก
  • การใช้เคสแบบพิเศษ
    อันนี้ขอพูดถึงเล่น ๆ นะ แต่ว่าที่จริงก็มีผู้นำมาใช้งานได้จริง ๆ แล้ว คือการนำเอาตู้เย็นขนาดเล็ก ๆ มาดัดแปลงทำเป็นเคส ซึ่งแน่นอน ระบบทำความเย็นยังไงก็ต้องดีกว่าการใช้พัดลมอยู่แล้ว

การทำ Burn in CPU
คือการใช้งาน CPU แบบหนัก ๆ เป็นระยะเวลานาน ๆ อย่างต่อเนื่องภายใต้อุณหภูมิสูง เช่นการเพิ่มไฟ Vcore เข้าไปอีกนิดหน่อย และหาโปรแกรมที่ต้องใช้งาน CPU หนัก ๆ มารันค้างทิ้งไว้ เช่น Prime95 หรือโปรแกรม Benchmark ต่าง ๆ โดยที่การทำ Burn in จะทำให้เกิดการเปลี่ยนแปลงของ Interface ต่าง ๆ ภายในตัวชิป CPU ทำให้มีการเชื่อมต่อที่ดีขึ้น ดังนั้น การ Burn in จึงมีส่วนช่วยให้สามารถใช้งาน CPU ได้ที่ความเร็วมากขึ้นด้วย หลักการทำ Burn in สำหรับการ Over Clock ก็คือ หลังจากที่ปรับความเร็วได้สูงที่สุดแล้ว ให้ทดลองทำ Burn in หรือใช้งานหนัก ๆ สัก 1 สัปดาห์ หลังจากนั้น จึงทดลองเพิ่ม ความเร็วขึ้นไปอีก ซึ่งอาจจะได้ความเร็วที่สูงขึ้นกว่าเดิมก็ได้
ประสิทธิภาพของแคช Level 2 บน CPU
ปัจจัยหนึ่งที่มีผลต่อการ Over Clock ก็คือความสามารถของแคช L2 ว่าจะสามารถทำงาน ได้ตามความเร็วของ CPU หรือ FSB หรือไม่ เนื่องจากการทำงานของ แคช L2 นั้นจะทำงานสัมพันธ์กับความเร็วของ FSB หรือ CPU โดยขึ้นอยู่กับสถาปัตยกรรม ของระบบนั้น ๆ บน Socket7 แคช L2 จะมีความถี่เดียวกับ FSB แต่สำหรับ PentiumII ความถี่จะเป็นครึ่งหนึ่งของความเร็ว CPU และบน Celeron จะใช้ที่ความถี่เดียวกับ CPU เลย ดังนั้นความสำเร็จจากการ Over Clock จึงขึ้นอยู่กับ ประสิทธิภาพ ของแคช L2 ด้วย ถ้าการ Over Clock ไม่สำเร็จ ก็ให้ลอง Disable Cache L2 ใน BIOS แล้วลองดูใหม่ ถ้าระบบเสถียรขึ้น หรือสามารถบูตได้ก็แสดงว่า อาจจะมาจากสาเหตุนี้ก็ได้ (แต่อย่าลืมว่าการ Disable Cache L2 นี้จะทำให้ประสิทธิภาพของ CPU นั้นลดลงไปด้วย)
รู้จักกับระบบความเร็วบัสต่าง ๆ ของคอมพิวเตอร์กันก่อน
โดยทั่วไปแล้ว การทำ Over Clock โดยการเพิ่ม FSB ให้สูงขึ้นนั้น จะเป็นการเพิ่มความเร็วของระบบบัสต่าง ๆ ในเครื่องด้วยนะครับ ดังนั้นอุปกรณ์ต่าง ๆ ที่ทำงานอยู่บนระบบบัสเหล่านี้ ก็จะต้องทำงานที่ความเร็วสูงขึ้นตามไปด้วย การเลือกใช้อุปกรณ์ต่าง ๆ เช่น VGA Card, Sound Card หรือแม้แต่ Hard Disk ก็จะต้อง สามารถรองรับการทำงาน ของบัสต่าง ๆ ที่สูงผิดปกตินี้ได้ด้วยครับ เพื่อความเข้าใจระบบบัสต่าง ๆ ที่มีอยู่ในเครื่องคอมพิวเตอร์ให้ง่ายขึ้น ผมขอแบ่งออกง่าย ๆ ตามนี้
  • ความเร็วของ External Clock หรือ FSB ส่วนใหญ่ก็จะเป็นมาตราฐานครับ เช่น 50, 55, 60, 66, 75, 83, 100, 133, 150 หรือ 180 MHz การปรับค่าต่าง ๆ จะทำได้ละเอียดมากน้อยเพียงใดขึ้นอยู่กับเมนบอร์ดแต่ละรุ่น
  • ความเร็วของ PCI Bus จะมีความเร็วมาตราฐานที่ 33 MHz หรือเป็น 1/3 เท่าของ FSB สำหรับเมนบอร์ดที่ดี ๆ ก็จะสามารถปรับอัตราส่วนของ PCI ได้หลายค่าเช่น 1/2, 1/3 หรือ 1/4 เท่าของ FSB ก็ได้ เช่น เราสามารถใช้ FSB ที่ 133 MHz แต่ว่า PCI ยังสามารถทำงานได้ที่ 33 MHz นะครับโดยการปรับอัตราส่วนเป็น 1/4 เป็นต้น
  • ความเร็วของ AGP Bus โดยทั่วไปแล้ว AGP จะเป็น Slot สำหรับการ์ดแสดงผลครับ ซึ่งใน 1 เครื่องคอมพิวเตอร์จะมี AGP Slot เพียงแค่อันเดียวนะครับ โดยที่ AGP Bus จะทำงานที่ความเร็ว 66 MHz หรือเป็น 2/3 เท่าของ FSB นะครับ หลักการอื่น ๆ ก็เหมือนกันกับ PCI คือสามารถปรับเป็นอัตราส่วนความเร็วค่าต่าง ๆ เช่น 2/3 หรือ 1/2 เป็นต้น
  • ความเร็วของ RAM Bus ส่วนใหญ่แล้ว RAM จะทำงานที่ความเร็วเดียวกับ FSB แต่ว่าในเมนบอร์ดบางรุ่นที่ดี ๆ ก็ยังสามารถปรับอัตราส่วนความเร็วได้ด้วย เช่น FSB เป็น 133 MHz แต่ RAM ทำงานที่ 100 MHz
โดยสรุป ก็คือการเลือกซื้อเมนบอร์ดที่สามารถปรับค่าต่าง ๆ เหล่านี้ได้ ก็เป็นอีกทางเลือกหนึ่งที่ช่วยให้คุณทำการ Over Clock ได้ดีขึ้น จากข้อมูลข้างบน จะเห็นว่า หากเราใช้เมนบอร์ดแบบทั่ว ๆ ไปใช้งาน FSB ที่ 120 MHz ลองมาดูกันนะครับ จะเห็นว่า PCI จะต้องทำงานที่ 40 MHz และ AGP ก็จะต้องทำงานที่ 80 MHz ซึ่งอุปกรณ์บางชนิด จะไม่สามารถทำงานได้ เป็นอีกสาเหตุหนึ่งของปัญหาการ Over Clock ที่ไม่ควรมองข้ามไป
อุปกรณ์รอบข้าง ก็มีผลต่อการทำ Over Clock ด้วย
จากความรู้เรื่องของความเร็ว FSB และระบบบัสต่าง ๆ ก็จะเห็นว่า การทำ Over Clock โดยการเพิ่ม FSB และทำให้อุปกรณ์ต่าง ๆ ทำงานที่ความเร็วไม่มาตราฐาน ดังนั้น การเลือกซื้ออุปกรณ์ต่าง ๆ ก็มีความสำคัญมากนะครับ ว่าอุปกรณ์แต่ละชนิดนั้น จะสามารถทนรับความเร็วที่ผิดปกติได้มากน้อยเพียงใด อุปกรณ์ที่ผมพูดถึง ก็เช่น VGA Card, Sound Card, Hard Disk หรือ RAM นะครับ ดังนั้นต้องเลือกกันให้ดี
Power Supply ปัญหาที่ไม่ควรมองข้าม
หลาย ๆ ท่านอาจจะมองข้ามปัญหาของ Power Supply ไป แต่ที่จริงแล้ว กำลังไฟของอุปกรณ์จ่ายไฟเช่น Power Supply นี่ต้องถือว่ามีความสำคัญมากเหมือนกันครับ คุณลองนึกดูนะ ว่าการเพิ่มความเร็วของ CPU จะทำให้ต้องใช้กำลังไฟ เพิ่มขึ้นมากเท่าไร การติดพัดลมเพิ่มเติม ก็ล้วนแต่กินไฟทั้งนั้น ดังนั้นหากเป็น Power Supply ที่ใช้งานมานาน ๆ แล้วหรือมีกำลังไฟต่ำ ๆ ก็ต้องพิจารณากันด้วย
สายการผลิต หรือเทคโนโลยีที่ใช้ใน CPU ก็มีส่วนสำคัญ
การเลือก CPU ในแต่ละรุ่น หรือแต่ละสายการผลิต ก็มีส่วนสำคัญกับการทำ Over Clock ว่าจะได้มากหรือน้อยด้วยนะครับ ผมยกตัวอย่างเช่น Celeron 366 MHz เปรียบเทียบกับ Celeron 533 MHz นะครับ สมมติว่า CPU 2 รุ่นนี้ผลิตมาจากเทคโนโลยีเดียวกัน ซึ่งสามารถทำงานได้ที่ความเร็วสูงสุดน่าจะได้ใกล้เคียงกัน แต่ว่าหากเรามามองหลักการ Over Clock ซึ่งสำหรับ Celeron นั้นจะล็อคตัวคูณ ทำให้เราใช้วิธีการเพิ่ม FSB ได้อย่างเดียว จะเห็นว่า 366 = 66x5.5 ในขณะที่ 533 = 66x8 นะครับ ซึ่งลองนึกภาพการนำเอา CPU 2 ตัวนี้มาทำงานที่ FSB 100 MHz ก็จะได้ 366@550 กับ 533@800 ซึ่งโอกาสที่เราจะได้ตัว 533@800 นี่แทบจะไม่มีเลยทีเดียวนะครับ ดังนั้น CPU รุ่นแรก ๆ ที่เพิ่งออกมา จะสามารถนำมาทำ Over Clock ได้ดีกว่ารุ่นหลังนะครับ ยกตัวอย่างเช่น Celeron II 566 MHz ตอนนี้ที่เพิ่งออกมา หลายคนสามารถใช้ FSB 100MHz ได้สบาย ๆ ครับ หรือ PentiumIII 500 รุ่นแรก ๆ ก็สามารถใช้งานที่ FSB 133 MHz ได้เป็นต้น
การเพิ่ม ตัวคูณ กับเพิ่ม FSB อะไรดีกว่ากัน
การทำ Over Clock ที่ดีควรจะเพิ่ม FSB นะครับ เพราะว่า FSB คือความเร็ว External Clock ที่จะเป็นตัวกำหนดความเร็วของอุปกรณ์อื่น ๆ ให้ทำงานเร็วขึ้นด้วย การที่เราลด FSB ลงมาแต่เพิ่มตัวคูณเข้าไป อาจจะได้ตัวเลขที่สูงขึ้น แต่ที่จริงแล้วความเร็วโดยรวม ๆ อาจจะไม่ได้เพิ่มขึ้นมามากนัก ดังนั้นหากเป็นไปได้ควรใช้วิธีเพิ่ม FSB
Link แนะนำสำหรับการหาข้อมูลเพิ่มเติม