วันจันทร์ที่ 13 พฤศจิกายน พ.ศ. 2560

ใบงานที่3 การจัดเวลาซีพียู (CPU Scheduling)

ใบงานที่3 การจัดเวลาซีพียู (CPU Scheduling) 
จัดทำโดย:นาย สราวุฒิ เชื้อกสิกรรม รหัสนักศึกษา:6031280064
            
การจัดเวลาซีพียู(cpu Scheduling)
               
     การจัดเวลา CPU เป็นหลักการทำงานหนึ่งของ OS ที่ทำให้คอมพิวเตอร์มีความสามารถในการรันโปรแกรมได้หลาย ๆ โปรแกรมในเวลาเดียวกันเหตุการณ์ที่ซีพียูเปลี่ยนจากการทำงานหนึ่งไปยังอีกงานหนึ่งเรียกว่า การเปลี่ยนสถานะ (context switching)
-เป้าหมาย
  • ใช้งานซีพียูได้อย่างเต็มประสิทธิภาพ
-สิ่งที่ต้องคำนึง
  • ในระบบโปรเซสเซอร์เดียวซีพียูจะทำงานได้ครั้งละ 1 งาน
  • ถ้ามีหลาย ๆ งานจะต้องเกิดการรอ

-ระบบโปรแกรมเดียว

  • ไม่ซับซ้อน
  • ทำงานทีละโปรแกรมจนเสร็จกระบวนการ
  • ทำงานตัวเองจนเสร็จ หรือจนกระทั่งมีการรออะไรบางอย่าง เช่น I/O
  • การรอนี้ทำให้ซีพียูเกิดการว่างงาน อยู่เฉย (idle)

-ระบบหลายโปรแกรม 

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

-ข้อพิจารณาในการจัดเวลา 

  • การใช้สอยซีพียู (CPU Utilization)
  • ทรูพุต (Throughput)
  • เวลาทั้งหมด (Turnaround Time)
  • เวลารอคอย (Waiting Time)
  • เวลาตอบสนอง (Response Time)
การใช้สอยซีพียู(CPU Utilization)
       คือ การใช้ประโยชน์จากซีพียูอย่างสูงสุด โดยทำให้ซีพียูมีงานทำมากที่สุดเท่าที่จะทำได้ ซีพียูควรจะถูกใช้อยู่ระหว่าง40-90%
ทรูพุต(Throughput)
       คือ จำนวนงานที่เสร็จต่อหน่วยเวลา
เวลาทั้งหมด (Turnaround Time)
       คือ ช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำจนเสร็จเรียบร้อย (รวมเวลาที่รอเข้าหน่วยความจำเวลาที่คอยอยู่ในคิว เวลาที่ใช้ซีพียู และเวลาของอินพุต/เอาต์พุต)
เวลารอคอย (Waiting Time) 
       คือ ช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ซีพียู และเวลาของการติดต่ออินพุต/เอาต์พุต ส่วนใหญ่ก็คือเวลาที่งานต้องคอยอยู่ในคิว (Ready Queue) 

เวลาตอบสนอง (Response Time)  
       คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใดๆ ต่อระบบแล้วมีการตอบรับกลับออกมา (ความเร็วของเวลาตอบสนองจึงมักจะขึ้นอยู่กับอุปกรณ์อินพุต/เอาต์พุต) 
  หลักความต้องการพื้นฐาน
    จุดประสงค์ของการรันโปรแกรมหลายโปรแกรมคือ ความต้องการที่จะให้ซีพียูมีการทำงานตลอดเวลาเพื่อให้มีการใช้ซีพียูอย่างเต็มที่ และเต็มประสิทธิภาพ ซึ่งระบบคอมพิวเตอร์มีซีพียูตัวเดียว ในเวลาใดเวลาหนึ่งซีพียูจะทำงานได้เพียงงานเดียวเท่านั้น ถ้ามีหลายโปรแกรมหรือหลายงาน งานที่เหลือก็ต้องคอยจนกว่า จะมีการจัดการให้เข้าไปใช้ซีพียู
ความคิดและหลักการของการทำงานกับหลายโปรแกรมในขั้นพื้นฐานนั้นค่อนข้างที่จะไม่ซับซ้อน แต่ละโปรแกรมจะถูกรันจนกระทั่งถึงจุดที่มันจะต้องคอยอะไรซักอย่างเพื่อใช้สำหรับการทำงานช่วงต่อไป ส่วนมากการคอยเหล่านี้ก็คือการทำงานที่เกี่ยวข้องกับอินพุต/เอาต์พุตนั้นเอง ในระบบคอมพิวเตอร์ที่มีความสามารถรันโปรแกรมได้ทีละโปรแกรม การทำงานของระบบก็จะไม่ซับซ้อน ซีพียูจะหยุดการทำงานในระหว่างที่คอยอินพุต/เอาต์พุตนี้ ซึ่งการคอยเหล่านี้เป็นการเสียเวลาโดยเปล่าประโยชน์ เพราะซีพียูไม่ได้ทำงานเลย
ส่วนหลักในการรันหลายโปรแกรม เราพยายามใช้เวลาเวลาที่ซีพียูต้องคอยนี้ทำงานอย่างอื่นต่อไป ดังนั้นเมื่อใดก็ตามที่ซีพียูต้องคอย และยังมีโปรแกรมในหน่วยความจำหลายโปรแกรมที่คอยการใช้ซีพียูอยู่ เราจะจัดให้ซีพียู ทำงานในโปรแกรมเหล่านั้นทันที ซึ่งระบบจะจัดการนำเอาโปรแกรมที่คอยอินพุต/เอาต์พุต ออกไปก่อน เพื่อที่จะให้โปรแกรมอื่นที่คอยใช้ซีพียูนี้ สามารถเข้ามาได้ ถ้าทำงานในแบบนี้ไปเรื่อยๆ ซีพียูก็จะได้มีงานเกือบตลอดเวลากับโปรแกรมหลายๆ โปรแกรมที่อยู่ในระบบ
การจัดเวลาให้กับซีพียูแบบนี้ เป็นหลักความต้องการพื้นฐานของระบบปฏิบัติการในคอมพิวเตอร์ ทรัพยากรที่คอมพิวเตอร์มีอยู่ในเครื่องๆหนึ่ง จะถูกจัดสรรการใช้ก่อนการนำไปให้โปรแกรมใดๆ ซีพียูเองก็ถือได้ว่าเป็นทรัพยากรของระบบคอมพิวเตอร์ชนิดหนึ่งที่มีความสำคัญมากที่สุด โดยซีพียูนี่เอง ที่จะเป็นศุนย์กลางของการสร้างระบบปฏิบัติการที่มีความสามารถในการรันหลายโปรแกรม
ช่วงเวลาอินพุต/เอาต์พุต และช่วงเวลาใช้ซีพียู (I/O) and CPU Burst Cycle)
    ความสำคัญของการจัดเวลาของซีพียูนั้น ขึ้นอยู่กับคุณลักษณะของโปรเซส โดยทั่ว ๆ ไป การเอ็กซีคิวต์โปรเซส จะประกอบด้วยเวลาที่ใช้ซีพียู (CPU Burst Cycle) และเวลาที่คอยอุปกรณ์อินพุต/เอาต์พุต
(I/O) and CPU Burst Cycle) ในขณะที่มีการเอ็กซีคิวต์โปรเซส จะมีการสลับการทำงานระหว่าง 2 ช่วง เวลานี้ เท่านั้น และจะเกิดไม่พร้อมกัน และการเอ็กซีคิวต์มักจะเริ่มจาการใช้ซีพียู แล้วก็ตามด้วยหารอินพุต/เอาต์พุต เมื่อจบการรอคอยก็จะตามมาด้วยเวลาของซีพียู สลับกันไปเรื่อยๆ จนกว่าจะจบการเอ็กซีคิวต์ ซึ่งการเอ็กซีคิวต์นี้มักเป็นการใช้เวลาซีพียูเพื่อทำการจบหรือสิ้นสุดโปรเซสมากกว่าการรอคอยอินพุต/เอาต์พุต
ตัวจัดการเวลา CPU
        เมื่อใดก็ตามที่ cpu ว่าง ระบบปฏิบัติการจะต้องเข้ามาเลือก process ตัวใดตัวหนึ่งที่คอยอยู่ในคิวเข้ามาใช้งาน cpu การเลือก process เพื่อเข้ามาใช้ cpu นี้ จะถูกจัดการด้วยส่วนที่เรียกว่า ตัวจัดการเวลาช่วงสั้น หรือ ตัวจัดการเวลา cpu ตัวจัดการเวลานี้จะเลือก process ที่อยู่ในหน่วยความจำที่พร้อมในการ execute ที่สุด เพื่อให้ครอบครองเวลา cpu และทรัพยากรที่เกี่ยวข้องกับ process นั้น

การให้สิทธิการจัดเวลา

        การตัดสินใจของ cpu ในการเลือก execute process ใดๆ ขึ้นอยู่กับสถานการณ์ดังนี้
1. เมื่อมีการเปลี่ยนสถาะของ process จากสถานะรัน ไปเป็นสถานะคอย
2. เมื่อมีการเปลี่ยนสถานะของ process จากสถานะรัน เป็นสถานะพร้อม
3. เมื่อมีการเปลี่ยนสถานะของ process จากสถานะคอย เป็นสถานะพร้อม
4. เมื่อ process เสร็จสิ้นไปแล้ว

Despatcher
         คอมโพเนนต์ที่สำคัญอีกตัวหนึ่งที่เกี่ยวข้องกับฟังก์ชันในการจัดเวลา cpu ก็คือสิ่งที่เรียกว่า Dispatcher ซึ่งเป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลา cpu ของ process ฟังก์ชันนี้ประกอบด้วย
• การย้าย Context
• การย้ายไป user mode
• กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อที่จะเริ่มรันโปรแกรมนั้นใหม่อีกครั้ง

         Dispatcher นี้ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้ เพราะว่ามันจะต้องทำงานทุกครั้งที่มีการย้าย process ซึ่งเวลาที่ถูกใช้ไปกับการทำเช่นนี้เราเรียกว่า Dispatch Latency

ข้อพิจารณาในการจัดการเวลา
• CPU Utilization คือคำนึงถึงการใช้ประโยชน์จาก cpu อย่างสูงสุด
• Throughput ถ้าหากว่า cpu ทำงานตลอดเวลา ก็หมายความว่างานก็กำลังถูกทำงานให้เสร็จ ซึ่งเราสามารถที่จะวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลา
• Turnaround Time คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำจนเสร็จเรียบร้อย
• Waiting Time คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา โดยไม่รวมเวลาของการใช้ cpu และเวลาของการติดต่อ Input/Output ส่วนใหญ่คือเวลาที่งานต้องคอยอยู่ในคิวนั่นเอง
• Response Time คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใดๆ ต่อระบบแล้วมีการตอบรับกลับออกมา

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

         1. การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-come First-served Scheduling)
การจัดคิวแบบ FCFS (first-come-first-served) วิธีการคัดเลือกแบบ FCFS นี้ เป็นวิธีที่ง่ายที่สุด คือ โปรเซสไหนเข้ามารอในคิวก่อนจะได้ครอบครองซีพียูก่อน ตามลำดับเวลาของการเข้ามาอยู่ในคิว คือ "มาก่อนได้ก่อน" โปรเซสที่ได้ครอบครองซีพียูจะทำงานไปจนเสร็จ ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาการครอบครองซีพียู แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต-เอาต์พุต หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู และออกจากสถานะรันไปอยู่ในสถานะติดขัด เมื่อใดที่งานเสร็จสิ้นลงหรือเกิดเหตุการณ์ที่กำลังรออยู่ โปรเซสนั้นจึงค่อยกลับเข้าไปอยู่ต่อท้ายคิวของสถานะพร้อมใหม่อีกครั้ง เราอาจแสดงการเปลี่ยนสถานะของโปรเซสโดยใช้การจัดคิวแบบ FCFS ซึ่ง จะเห็นว่าแตกต่างกับรูปแสดงการเปลี่ยนสถานะของโปรเซสที่เคยกล่าวมาคือ ไม่มีการเปลี่ยนสถานะของโปรเซสจากสถานะรันมายังสถานะพร้อมโดยตรง


        2. การจัดเวลาแบบงานสั้นทำก่อน (SJF : Short-Job-First Scheduling)
การจัดคิวแบบ SJN (shortest job next) การ คัดเลือกโปรเซสด้วยวิธีนี้ จะคัดเลือกเอาโปรเซสที่ต้องการเวลาในการทำงานน้อยที่สุด ทำให้โปรเซสที่ต้องการเวลาในการทำงานน้อยจบออกไปได้เร็วขึ้น จำนวนโปรเซสในระบบที่รออยู่ในคิวมีก็จะมีจำนวนลดลง และทำให้เวลาโดยเฉลี่ยในการทำงาน 1 งานเสร็จหรือเวลาครบงาน (turnaround time) น้อยลงแต่การจัดคิวแบบนี้เป็นผลเสียต่อโปรเซสที่ต้องการเวลาในการทำงานนาน


        3. การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
การจัดคิวแบบลำดับความสำคัญ (priority queue) คิว แบบลำดับความสำคัญมีลักษณะแตกต่างกับคิวธรรมดา ภายในคิวจะมีการจัดเรียงลำดับของโปรเซสต่าง ๆ ตามลำดับความสำคัญของโปรเซสนั้น โปรเซสที่อยู่ต้นคิวจะมีลำดับความสำคัญมากที่สุด และลดลงเรื่อย ๆ โปรเซสที่อยู่ท้ายคิวคือโปรเซสที่มีลำดับความสำคัญต่ำสุด การคัดเลือกโปรเซสจะเอาโปรเซสที่อยู่ต้นคิว (มีลำดับความสำคัญสูงสุด) เข้าไปครอบครองซีพียูก่อน ดังนั้นถึงแม้ว่าโปรเซสที่เข้าคิวทีหลังแต่มีลำดับความสำคัญสูงกว่าก็อาจได้ เข้าไปครอบครองซีพียูก่อน โปรเซส E เข้าคิวเป็นโปรเซสหลังสุด แต่จะได้ครอบครองซีพียูก่อนโปรเซส C และ D


        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


        5. การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling)
เพื่อ ให้การจัดคิวเป็นไปอย่างมีประสิทธิภาพ จึงมีการนำหลาย ๆ เทคนิคมาประยุกต์เข้าด้วยกัน เป็นการจัดคำแบบวนรอบ ที่คำนึงถึงความสำคัญของงาน ทำให้งานที่มีความสำคัญเหมือนกันอยู่ในคิวเดียวกัน และให้งานสำคัญน้อย ๆ อยู่ในคิวที่สำคัญน้อยเช่นกัน

การจัดเวลาของ Multiple-Processor
การทำงานในลักษณะที่มี cpu หลายตัวต่างก็มีระบบการจัดเวลาของตัวเอง จะต้องมีการออกแบบอย่างระมัดระวังในเรื่องของการที่ process แต่ละ process อาจจะต้องการใช้ข้อมูลในฐานข้อมูลในเวลาเดียวกัน รวมทั้งต้องระวังไม่ให้ cpu ว่างงานพร้อมกัน
         ในระบบคอมพิวเตอร์บางระบบที่มีการพัฒนาเพื่อให้ได้ประสิทธิภาพสูงสุด ได้มีการใช้ cpu แยกต่างหากระหว่างงานภายในของระบบ และกับงานที่เป็นของผู้ใช้ซึ่งการทำงานแยกกันของ cpu แบบนี้ ทำให้การออกแบบระบบปฏิบัติการมีความซับซ้อนน้อยลงมาก เนื่องจากมี cpu เพียงตัวเดียวที่จะเข้าไปใช้ข้อมูลของระบบปฏิบัติการ เพราะว่า cpu ตัวอื่นๆ ไม่ว่าจะกี่ตัวก็ตาม จะเข้าถึงได้เฉพาะข้อมูลของผู้ใช้ภายนอกเท่านั้น


การจัดเวลาแบบ Real-Time
          Hard real-time คือระบบที่สามารถทำงานใดงานหนึ่งให้เสร็จตามเวลาที่กำหนดได้ ซึ่งงานที่จะรับเข้ามาแต่ละงานนั้นจะมีความต้องการของเวลาที่ต้องการให้ เสร็จมาด้วย ดังนั้นตัวจัดเวลาจะต้องเป็นตัวตัดสินใจว่าจะรับงานเข้ามาทำหรือไม่
          Soft real-time คือระบบที่แบ่งเวลาธรรมดาที่มีการให้ระดับความสำคัญแก่งานบางประเภท หรืองานที่ถูกเลือกไว้ล่วงหน้าว่าเป็นงานเร่งด่วน ซึ่งอาจทำให้เกิดปัญหาของการทำงานในระดับต่ำๆ อาจไม่ได้รับเวลาของ cpu เลย

การคัดเลือก Algorithm สำหรับการจัดเวลา cpu


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

Queuing Models

          ลักษณะของงานที่เข้ามาในระบบคอมพิวเตอร์นั้นมักจะมีลักษณะที่ไม่แน่นอน ในแต่ละวันที่มีการใช้ระบบคอมพิวเตอร์นั้น งานต่างๆที่เข้ามาอาจมีลักษณะที่ไม่ซ้ำกันเลย อย่างไรก็ตามมีสิ่งหนึ่งที่เราอาจจะสามารถทำนายหรือกำหนดได้ ก็คือ การกระจายของเวลาในการใช้ cpu และของการใช้ Input/Output ซึ่งเราสามารถที่จะกำหนดแบบคร่าวๆได้ ซึ่งก็เช่นเดียวกันกับเวลาของการมาถึงระบบของงานต่างๆที่เราก็สามารถกำหนด ไว้แบบการกระจายเช่นกัน

Simulations

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

Implementation

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


อ้างอิง

http://csnon04.blogspot.com/2008/03/3_06.html

https://www.google.co.th/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwiBzemCgb3XAhXDFJAKHR4bDCwQFggxMAI&url=https%3A%2F%2Falaska.reru.ac.th%2F4121401%2Fos4.ppt&usg=AOvVaw1rNZSQIve9bReJ5VA_u9ir


http://elearning.psru.ac.th/courses/250/ch%203%20cpu.pdf 


http://pedcharatn.exteen.com/20080819/5-cpu  




1 ความคิดเห็น:

  1. cobalt vs titanium drill bits - TitaniumArts
    › products › cobalt-vs-titanium- › products › cobalt-vs-titanium- titanium alloys The cobalt is one of the best-performing in titanium joes the world. Made with a solid brass core, the cobalt can be titanium road bike used titanium dog teeth implants for nano titanium ionic straightening iron cutting and handling both the teeth.

    ตอบลบ