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

การติดตาย Deadlock


การติดตาย (Deadlock)
ในสภาพการทำงานแบบหลายโปรแกรม หลายโพรเซสอาจจะมีการแข่งกันเข้าใช้งานทรัพยากรที่มีอยู่จำกัด 
โพรเซสจะมีการร้องขอใช้งานทรัพยากรถ้าในขณะนั้นทรัพยากรไม่ว่างก็จะส่งผลให้โพรเซสนั้นรอจนกว่าจะได้เข้าทำงาน  ดังนั้นจึงอาจเหตุกรณีที่โพรเซสถูกให้อยู่ในสถานะการรอไปไม่มีที่สิ้นสุดเนื่องจากทรัพยากรนั้นก็ถูกร้องขอจากโพรเซสอื่นที่รออยู่เช่นกัน  เช่นนี้เรียกว่าการติดตาย (Deadlock)
7.1 รูปแบบโครงสร้าง 
ทรัพยากรในระบบมีอยู่อย่างจำกัดในการใช้งาน ดังนั้นจึงต้องเกิดการแย่งเข้าใช้ทรัพยากรนั้น ชนิของทรัพยากรในที่นี้แบ่งออกเป็น เนื้อที่ว่างในหน่วยความจำ  เวลาในการประมวลผล  ไฟล์ และอุปกรณ์ 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 ใช้งาน

7.1     วิธีการควบคุมการติดตาย
เพื่อป้องกันหรือควบคุมการเกิดการติดตายสามารถทำได้ 3 วิธีคือ
1. แน่ใจว่าระบบจะไม่เกิดการติดตายโดยการใช้ Protocol
2. ยอมให้ระบบเข้าสู่การติดตายได้ชั่วคราวแล้วสามารถออกมาได้
3. เมินเฉยทุกอย่าง แล้วอ้างว่าไม่เคยเกิดการติดตายในระบบ วิธีนี้ใช้อยู่ในระบบ Unix
7.4 การป้องกันการติดตาย
จากที่ทราบมาแล้วว่าเหตุที่ทำให้เกิดการติดตายมาจาก 4 ข้อที่กล่าวถึงหัวข้อ 7.2
Mutual Exclusion  เงื่อนไขของการเกิด mutual คือการใช้งานทรัพยากรที่อนุญาตให้ใช้ได้ทีละงาน เช่น
เครื่องพิมพ์  อีกนัยหนึ่งการร่วมใช้ข้อมูลโดยไม่ต้องการเข้า mutual ทำให้ไม่เกิดการติดตาย ตัวอย่างของไฟล์ที่สามารถอ่านได้อย่างเดียว ถ้าหลายๆโพรเซสพยายามที่จะอ่านก็สามารถเข้าอ่านได้ทันทีอย่างต่อเนื่อง อย่างไรก็ดีทรัพยากรบางชนิดไม่สามารถประกาศใช้งานร่วมกันได้
7.5     การหลีกเลี่ยงการติดตาย
จากข้อที่ผ่านมาเป็นการป้องกันการเกิดการติดตายโดยการจัดการกับสัญญาณที่ร้องขอใช้ทรัพยากร แต่อาจส่งผลให้การใช้งานระบบ หรือประสิทธิภาพในการทำงานลดลง ดังนั้นจึงมีวิธีที่หลีกเลี่ยงการติดตายโดยพิจารณาจากข้อมูลของทรัพยากรที่ถูกร้องขอ เช่นในระบบที่มีเทป และเครื่องพิมพ์อย่างละตัว ดังนั้นเราอาจจัดสรรให้โพรเซส P เข้าใช้งานเทปก่อนแล้วก็ใช้งานเครื่องพิมพ์ ในขณะที่โพรเซสQ ใช้งานเครื่องพิมพ์ก่อนแล้วค่อยใช้เทป ดังนั้นนอกจากการร้องขอแล้วตรวจว่าทรัพยากรว่างหรือไม่ จึงต้องมีการดูด้วยว่าขณะนั้นทรัพยากรนั้นถูกใช้โดยใครแล้วโพรเซสไหนจะใช้อะไรก่อนหลัง  นอกจากนี้อาจมีข้อมูลที่มากที่สุดที่ขอใช้ทรัพยากรชนิดนั้น  รูปแบบอัลกอริทึมของการหลีกเลี่ยงการติดตายจะมีการตรวจสอบสถานของการใช้ทรัพยากรเพื่อให้แน่ใจว่าจะไม่การเกิดการรอแบบลูปอย่างสม่ำเสมอตลอดเวลา  สถานะของการใช้ทรัพยากรถูกกำหนดด้วยจำนวนของทรัพยากรที่ถูกใช้งานและจำนวนทรัพยากรที่มีอยู่ในระบบ




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

วิธีการทำ Overclock CPU


วิธีการทำ Overclock CPU

การโอเวอร์คล็อกนั้นก็คือ การเพิ่มความเร็วหรือสัญญาณนาฬิกา (MHz) ให้สูงกว่าค่าเดิมของตัว Cpu นั้นแหละครับ เช่นเราใช้ Cpu AMD Athlon 64 3200+ ความเร็ว 2000Mhz แล้วทำการโอเวอร์คล็อกเพิ่มขึ้นไปเป็น 2200Mhz เราก็เรียกว่าการโอเวอร์คล็อกแล้วละครับ แต่เรากลับได้ความเร็วเพิ่มขึ้นมาจากเดิมโดยไม่เสียสตางค์แม้แต่แดงเดียว Cpu ทุกตัวก็สามารถที่จะโอเวอร์คล็อกได้ทั้งนั้นก็ขึ้นอยู่กับตัว Cpu เองและปัจจัยอีกหลายๆอย่างที่เราจะโอเวอร์คล็อกให้เกินสัญญาณนาฬิกาเดิมๆของ ตัว Cpu นั้นเองรวมถึงปัจจัยอีกหลายๆอย่างด้วย ส่วนปัจจัยต่างๆที่ผมว่านั้นคืออะไร? ทำงานอย่างไร? และ โอเวอร์คล็อกยังไง? ผมจะทยอยๆนำเสนอนะครับเอาเป็นว่าไปดูความหมายของคำแต่ละตัวดีกว่าครับ

Fron Side Bus (FSB)

..หมาย ถึง เส้นทางการส่งข้อมูลของวงจรซึ่ง FSB นั้นจะส่งข้อมูลและทำงานไปพร้อมๆกับอุปกรณ์ต่างๆเช่น Cpu , Ram หรือแม้กระทั้งสล็อก AGP และ PCI เพราะว่าอุปกรณ์แต่ละตัวก็จะมีความถี่ (Mhz) ที่แตกต่างกันออกไปแต่ในเวลาที่เราจะทำการ overclock นั้นเราต้องไปดูที่ Multiplier (ตัวคูณ) ว่ามีมากน้อยเพียงใดเช่น 10 x 200Mhz = 2000Mhz นั้นคือค่า Default แต่อันนี้ต้องดูจาก Cpu ของคุณด้วยนะครับว่าใช้ FSB หรือ Multiplier ที่เท่าไร เวลาเราจะปรับก็ปรับขึ้นจากเดิมเช่น 10 x 210Mhz = 2100Mhz เราก็จะได้ความเร็วเพิ่มขึ้นมาจากเดิมแต่การเพิ่ม FSB ก็มีทั้งผลดีและผลเสียอยู่เหมือนกันคือ ถ้าเราปรับ FSB สูงขึ้นมาจากเดิมก็จะส่งผลให้ Bandwidth ของระบบสูงขึ้นแต่ก็จะได้ความเร็วและเสรียนในการทำงาน ส่วนผลเสียนั้นคือเวลาเราปรับ FSB เกินค่าเดิมๆเกินที่อุปกรณ์จะรับได้แล้วก็จะส่งผลให้อุปกรณ์ตัวนั้นพังไปเลย ก็ได้ แต่ก็มีผู้ผลิต Mainboard ที่ใส่ความสามารถเข้าไปให้สามารถ Fix ค่า AGP , PCI ได้ก็เป็นข้อดีที่เราจะไปแตะ FSB สูงๆได้โดยไม่ต้องคำนึงถึงค่า AGP , PCI และความถี่ของอุปกรณ์จะไม่กระทบต่อระบบเลยก็คือต้องใช้ FSB ที่ 100,133,166,200 ทั้งนี้ก็ขึ้นอยู่กับ Cpu และ Mainboard ด้วย


ตัวอย่างการใช้ FSB ของ P4 Prescott 2.4A ที่ 133 MHz โดยโปรแกรม Cpu-z และมีตัวคูณ 18.0x และใช้ Vcore 1.40v

Multiplier (ตัวคูณ)

..หมาย ถึง ตัวคูณ Cpu ทุกตัวทั้ง INTEL และ AMD จะมีอยู่ในตัง Cpu อยู่แล้วแต่จะมีไม่เท่ากันเช่น Athlon XP 3000+ ใช้ตัวคูณ13.0x และใช้ FSB 166MHz แต่ส่วน Athlon 64 3200+ใช้ตัวคูณ 10.0x และใช้ FSB 200Mhz จะเห็นว่า Cpu แต่ละตัวก็ใช้ FSB ที่แตกต่างกันออกไปด้วยเช่นกัน แต่ในทาง overclock Cpu ของ INTEL ไม่สามารถเปลี่ยคัวคูณได้แต่ Cpu AMD สามารถเปลี่ยนแปลงได้ ซึ่งการเพิ่มตัวคูณนั้นจะไม่มีผลการทบต่ออุปกรณ์รอบข้างแต่อย่างใดแต่จะมีผล ต่อความเร็วที่ Cpu เท่านั้น

วิธีการคำนวนความเร็ว Cpu

..ซึ่งเราก็ได้รู้ถึงการทำงานของ Multiplier และ FSB ไป แล้วซึ่งทั้งสองค่านี้จะสามารถบอกถึงความเร็วของ Cpu ได้ด้วยวิธีการคำนวนก็ง่ายๆครับเอา Multiplier X FSB = ความเร็ว Cpu ยกตัวอย่างเช่น 10.0 X 200Mhz = 2000Mhz ก็เป็นวิธีง่ายๆนะครับสำหรับมือใหม่ก็สามารถนำไปใช้งานดูละกันหรือใครขี้ เกียจก็ใช้โปรแกรมต่างๆตรวจสอบให้ก็ได้ครับเช่น WCPUID , Sisoft Sandra 2004 ฯลฯ โปรแกรมดังกล่างก็สามารถ Download ได้ที่หน้าเว็บเราเลยครับ

VIO (ไฟ Chipset)

...หมายถึง ไฟที่ป้อนให้กับ Chipset Mainboard บางตัวเช่น ABIT AN7 , NF7-S ฯลฯ ก็จะสามารถปรับไฟเลี้ยงให้กับ Chipset ได้อีกด้วย

Vcore ( ไฟเลี้ยง Cpu)

...หมายถึงไปที่ใช้เลี้ยง Cpu ซึ่งแน่นอนว่า Cpu ทุกตัวก็มีไฟเลี้ยงและใช้ไฟเลี้ยงที่ต่างกันออกไปเช่น Intel Pentium4 Prescott 2.40A ใช้ไฟเลี้ยง 1.4v และ Athlon 64 3200+ ใช้ไฟเลี้ยง 1.6v แต่ในทาง overclock ไฟเลี้ยง Cpu ที่สูงๆจะทำให้สามารถ overclock ได้สูงด้วยเช่นกัน ทั้งนี้ก็ขึ้นอยู่กับการระบายความร้อนให้ Cpu อีกด้วยแต่ถ้าเพิ่ม vcore มากจนเกินไป แล้วไม่ได้ระบายความร้อน Cpu ให้ดี Cpu ของคุณก็อาจจะลาโลกไปก็ได้

ตัวอย่างการระบายความร้อนให้กับ Cpu ในขณะ Overclock ด้วย Waterblock

...ก็จบไปแล้วนะครับสำหรับการ Overclock Step1 ก็ลองเอาไปหัด overclock เล่นกันไปพลางๆก่อนนะครับและผมจะรีบเขียน Step2 ออกมาให้อีกทีนะครับ เกรินๆไว้ก่อนนะครับว่าใน Step2 นั้นเราจะย่างกายเข้าไปในส่วนของ Bios กันหรือเริ่ม overclock นั้นแหละครับยังไงก็จัดเตรียมอุปกรณ์กันเอาไว้ในพร้อมนะครับ ผมก็ขอจบ Step ที่หนึ่งเอาไว้แค่นี้ถ้าผิดพลาดประการใดก็ขออภัยมา ณ ที่นี้ด้วยนะครับยินดีรับคำด่าอย่างเต็มที่ ฮาๆๆ สำหรับบทความนี้ก็คงจบเพียงเท่านี้ สวัสดีปีใหม่ไทยย้อนหลังครับ.

...อย่างที่ได้เกรินไว้ตั้งแต่ Overclock Step ที่ 1 เอาไว้ว่าจะพามาเยื่ยมชมในส่วนที่เราจะ overclock กันนั้นก็คือ Bios นั้นเอง ในไบออสนี่ก็จะมีฟังชั่นในการปรับแต่งมากมายทั้งในส่วนของการ overclock หรือการตั้งค่าต่างๆก็จะอยู่ที่ไบออสเนี้ยแหละครับ แต่การ overclock ก็สามารถทำผ่าน windows ก็ได้เหมือนกันแต่ต้องใช้ uGURU Technology บนเมนต์บอร์ด ABIT เจ้าแห่งการ overclock เค้านั้นแหละครับ แต่ท่านใดไม่ได้ใช้ก็ไม่เป็นไรครับอะไปดูเมนูหลักๆที่เราจะใช้ในการ overclock กันดีกว่าครับ
 
ที่มา:http://www.jokergameth.com/board/showthread.php?t=35504

ข้อดี และข้อเสีย ของการ Over Clock


ข้อดีของการ Over Clock

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

ข้อเสียของการ Over Clock

เท่าที่ทราบมาว่า จะเป็นการลดอายุการใช้งานของ CPU ลงไป เช่นจากเดิมที่เ้คยออกแบบมาให้ใช้งานได้ประมาณ 15 ปี ก็อาจจะมีอายุสั้นลงมาเหลือแค่ 10 ปีเท่านั้น ซึ่งส่วนใหญ่แล้วก็คงจะไม่มีใครใช้งาน CPU ได้นานขนาดนั้นหรอกครับ อีกข้อหนึ่งก็คือ เรื่องความร้อนของเครื่องคอมพิวเตอร์ จะมีมากขึ้นเมื่อทำการ Over Clock เพราะว่าเหมือนกับการใช้งาน CPU แบบเกินกว่าค่าปกตินะครับ อ้อ อีกอย่างหนึ่ง เขาบอกว่า CPU ของคุณจะหมดประกันทันทีที่ทำการ Over Clock (ผมเองก็ไม่ทราบเหมือนกันนะครับว่า จะตรวจสอบได้อย่างไร)


ที่มา: http://www.dld.go.th/ict/article/hard/hw20.html

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





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

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

ที่มา: http://www.dld.go.th/ict/article/hard/hw20.html

Over Clock


Over Clock คืออะไร

คือการนำเอาอุปกรณ์เช่น CPU ที่ออกแบบมาสำหรับให้ทำงานที่ความเร็วค่าหนึ่ง แต่นำมาใช้งานที่ความเร็วสูงกว่านั้น เช่น CPU ความเร็ว 400 MHz แต่นำมาใช้งานที่ 500 MHz แทน หรือนำเอา CPU ที่เป็นนรุ่นความเร็ว 500 MHz มาทำงานที่ความเร็ว 667 MHz อะไรทำนองนี้ครับ ภาษาที่ใช้แทนสำหรับการ Over Clock ก็เช่น 400@500 หรือ 500@667 เป็นต้น นอกจากนี้ อุปกรณ์อื่น ๆ ก็สามารถนำมา Over Clock ได้เหมือนกันนะครับ เช่น RAM ที่เป็นแบบความเร็ว 100 MHz แต่นำมาทำงานที่ความเร็ว 133 MHz รวมถึงการ Over Clock การ์ดจอด้วยครับ เช่นปกติการ์ดจอทำงานที่ความเร็ว 110 MHz แต่เราตั้งให้ทำงานที่ 120 MHz อย่างนี้เรียกว่า Over Clock เหมือนกัน แต่โดยทั่วไปแล้วนิยมทำ Over Clock กับ CPU มากกว่า


ที่มา:http://www.dld.go.th/ict/article/hard/hw20.html