วันพุธที่ 19 กันยายน พ.ศ. 2555

ข้อ13 หน้า111



13.1 ระบบนี้อยู่ในสถานะปลอดภัย โดยมีค่าเมตริกซ์ Available หลังจากที่โปรเซสทำงานเสร็จเรียบร้อยเป็นดังนี้

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

13.2 ลำดับความปลอดภัยของระบบคือ P1,P3,P4,P5,P2

13.3 ได้ เพราะ P3 ขอใช้ทรัพยากรเป็นจำนวน (1,1,1,1) แต่ P3 มีทรัพยากรที่ถูกจัดสรร (1,3,5,4) ฉะนั้นมีทรัพยากรที่ถูกจัดสรรเพียงพอกับทรัพยากรที่ต้องการใช้

13.4 ได้ เพราะ P2 ขอใช้ทรัพยากรเป็นจำนวน (0,4,2,0) ถึงแม้ว่า P2 จะมีทรัพยากรที่ถูกจัดสรรเพียง (1,0,0,0) แต่ว่ามีค่าว่างหรือค่า Available เป็นจำนวน (1,5,3,2) ฉะนั้น P2 มีทรัพยากรเพียงพอกับทรัพยากรที่ต้องการใช้

13.5 ค่า Available หลังจากที่แต่ละโปรเซสทำงานในข้อ 13.3 เสร็จเรียบร้อย คือ R1=2 , R2=8 , R3=8 , R4=6

ข้อ12 หน้า110


ลำดับความปลอดภัยคือ P2,P4,P1,P3
แสดงค่าเมตริกซ์ Available หลังจากที่โปรเซสทำงานเสร็จเรียบร้อย

ข้อ3 หน้า107

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

1.มาก่อนบริการก่อน(FCFS : First-come First-served Scheduling)


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

ปัญหาที่อาจะเกิดขึ้น
Convoy effect : การทำงานของอัลกอริทึมนี้ดูเหมือนเป็นการยุติธรรมที่ให้สิทธิการเข้าใช้ซีพียู แก่โปรเซสที่เข้ามาอยู่ในคิวพร้อมก่อน แต่ในกรณีที่ในคิวพร้อมของระบบมีทั้งโปรเซสที่เน้นซีพียู และโปรเซสที่เน้น I/O จะพบว่า โปรเซสที่เน้น I/O จะต้องเสียเวลารอนานมาก เพื่อเข้าใช้งานซีพียูในระยะเวลาที่ไม่นานมากนัก ซึ่งจะทำให้เกิดปัญหา Convoy effect คือ เหตุการณ์ที่โปรเซสขนาดเล็กในระบบ จะต้องเสียเวลารอโปรเซสขนาดใหญ่ที่ครอบครองซีพียูเป็นเวลานานการทำงานของอัลกอริทึมนี้ เป็นการทำงานที่ไม่สามารถขัดจังหวะ หรือแทรกกลางคันได้ (Non-Preemptive process)  ซึ่งจะไม่เหมาะกับระบบที่ต้องมี

การแบ่งส่วนการทำงาน ให้งานแต่ละงานได้ใช้ซีพียูอย่างทั่วถึง

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


การรอของแต่ละโปรเซส สามารถแสดงได้ด้วย Gantt Chart ดังนี้

• P1เข้ามาในระบบและได้รับการจัดสรรให้ใช้ซีพียูทันที จึงไม่ต้องเสียเวลาในการรอซีพียู ดังนั้นเวลาในการรอซีพียู = 0 หน่วยเวลา 
• P2ต้องรอจนกว่า P1ทำงานเสร็จเรียบร้อยและคืนซีพียูให้กับระบบ ดังนั้นเวลาในการรอซีพียู = 24 หน่วยเวลา
• P3ต้องรอจนกว่า P2ทำงานเสร็จเรียบร้อยและคืนซีพียูให้กับระบบ ดังนั้นเวลาในการรอซีพียู = 27 หน่วยเวลา
• ดังนั้นค่าเฉลี่ยของเวลาที่ใช้ในการรอซีพียู คือ (0+24+27)/3 = 17 หน่วยเวลา

2.งานสั้นทำก่อน (Shortest-Job First Scheduling : SJF)

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

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

ตัวอย่าง พิจารณาระบบที่ประกอบด้วยโปรเซส P1, P2, P3 และ P4โดยที่ทุกโปรเซสถูกรับเข้ามาในะบบพร้อมกัน




จาก Gantt Chart จะเห็นว่า
• โปรเซส P1ต้องรอเป็นเวลา 3 หน่วยเวลา 
• โปรเซส P2ต้องรอเป็นเวลา 16 หน่วยเวลา
• โปรเซส P3ต้องรอเป็นเวลา 9 หน่วยเวลา
• โปรเซส P4ต้องรอเป็นเวลา 0 หน่วยเวลา
• ค่าเฉลี่ยของเวลาที่ใช้ในการรอ คือ (3+16+9+0)/4 = 7 หน่วยเวลา

3.ลำดับความสำคัญ (Priority Scheduling)

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

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

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


ตัวอย่าง 

เมื่อกำหนดให้ ตัวเลขที่มีค่าน้อยที่สุดมีลำดับความสำคัญสูงที่สุด การจัดลำดับ
ของซีพียูจะเป็นไปตามลำดับค่าความสำคัญ คือ P
2
, P
5
, P
1
, P
3
, P
4

การจัดลำดับของซีพียูจะเป็นไปตามลำดับค่าความสำคัญ คือ P2, P5, P1, P3, P4

ดังนั้น ค่าเฉลี่ยของเวลาที่ใช้ในการรอ คือ (13+0+19+26+8)/5  เท่ากับ 13.2 หน่วยเวลา




4.วิธีวนรอบ (Round-Robin Scheduling : RR)

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

ตัวอย่าง ระบบคอมพิวเตอร์มีโปรเซสทั้งหมด 3 โปรเซส แต่ละโปรเซสมีเวลาเข้าระบบ และเวลาที่ต้องการใช้ซีพียู ดังนี้
โปรเซส P1 เข้าระบบเมื่อเวลา 0.0 และต้องการใช้ซีพียู 8 หน่วยเวลา
โปรเซส P2 เข้าระบบเมื่อเวลา 0.4 และต้องการใช้ซีพียู 4 หน่วยเวลา
โปรเซส P3 เข้าระบบเมื่อเวลา 1.0 และต้องการใช้ซีพียู 1 หน่วยเวลา
เมื่อกำหนดให้ใช้การจัดลำดับใช้งานซีพียูแบบวนรอบ ที่มีเวลาควอนตัมเท่ากับ 2.0 หน่วยเวลา ให้แสดงวิธีทำเพื่อคำนวณหาเวลาครบวงงานเฉลี่ย



Thank you

วันอังคารที่ 18 กันยายน พ.ศ. 2555

ข้อ11 หน้า110


     การติดตายคืออะไร สาเหตุสำคัญที่ทำให้เกิดการติดตายมีอะไรบ้าง อธิบาย และยกตัวอย่างประกอบ

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

       สาเหตุของการติดตาย

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

       ตัวอย่างการติดตาย

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

      ตัวอย่างของเหตุการณ์ที่เกิดการติดตาย เช่น การติดตายในการจราจร การติดตายในการใช้ทรัพยากร


       

วันศุกร์ที่ 20 เมษายน พ.ศ. 2555

เรียงความ ความประทับใจที่ได้มาอยู่ มทร.วข.วังไกลกังวล

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