Please enable JavaScript.
Coggle requires JavaScript to display documents.
การประสานเวลา
ของโพรเซส, 6221608040 นางสาวนงนุช วายลม เลขที่ 48 หมู่ 700 …
การประสานเวลา
ของโพรเซส
การประสานเวลา
ของโพรเซส
ในการทำงานของโพรเซสที่ต้องการให้มีการทำงานร่วมกัน จำเป็นต้องมี
การสื่อสารระหว่างโพรเซส ซึ่งจำเป็นต้องให้ทุกโพรเซสทำงานประสานกันเป็นอย่างดี
การทำงานของโพรเซสที่ต้องมีการเกี่ยวข้องกันอาจเป็นเพราะการ
ใช้ทรัพยากรร่วมกัน หรืออาจจะเป็นการรอให้โพรเซสทำงานหลังจากที่
โพรเซสอื่นทำงานแล้ว
สภาวะการแย่งชิง
เพื่อป้องกันการเกิดเงื่อนไขการแย่งชิง ระบบต้องแน่ใจว่าเวลาใด
จะมีเพียงโพรเซสเดียวเท่านั้นที่กำลังเข้าจัดการข้อมูล โดยอาศัย
กลไลบางอย่างประสานโพรเซสอย่างได้จังหวะกันจึงสามารถ
รับประกันความถูกต้อง
ปัญหาภาวะพร้อมกัน
ในระบบที่มีการทำงานบน cpu เดียวหรือหลายตัว บางครั้งจำเป็นที่ต้องใช้
ทรัพยากรร่วมกัน และเป็นทรัพยากรที่ต้องทำงานครั้งละ 1 งาน ไม่สามารถทำงาน
พร้อมกันได้ เรียกทรัพยากรเหล่านี้ว่า ทรัพยากรที่ไม่สามารถใช้ร่วมกันได้ ดังนั้น
ขณะที่โฑรเซสหนึ่งกำลังใช้ทรัพยากรอยู่ โพรเซสอื่นจะไม่สามารถเข้ามาใช้
ทรัพยากรนั้นๆได้ เืพ่อให้ได้ผลของการทำงานที่ถูกต้อง
ฮาร์ดแวร์ประสานเวลา
การปิดกั้น
โพรเซสต้องตรวจสอบก่อนว่า ส่วนวิกฤติถูกล็อคหรือปิดกั้นหรือไม่ หากไม่แสดงว่า
ตอนนันไม่มีโพรเซสไหนกำลังทำงานในส่วนวิกฤติ สามารถเข้ามาทำงานได้ โดย
โพรเซสต้องใส่ล็อคเพื่อเป็นการปิดกั้นไม่ให้โพรเซสอื่นเข้าไปทำงานในส่วนวิกฤติได้
จนกว่าจะทำงานเสร็จจึงปลดล็อคเพื่อเปิดโอกาสให้โพรเซสอื่นเข้ามาทำงาน
การปิดทาง
ขัดจังหวะ
บนระบบโพรเซสเซอร์เดียวสามารถระงับการใช้ Interrupts โดยรับประกัน
ได้ว่าลำดับของชุดคำสั่งจะถูกกระทำการโดยปราศจากการบังคับให้ออก
จากเวลาโพรเซสเซอร์
คำสั่งทดสอบ
และเซต
เป็นคำสั่งระดับฮาร์ดแวร์ การทำงานของคำสั่งไม่สามารถถูกขัดจังหวะได้
โดยโพรเซสที่ต้องการเข้าทำงานในส่วนวิกฤติจะต้องเรียกใช้คำสั่งทดสอบ
และเซต เพื่อตรวจสอบว่ามีโพรเซสใดทำงานอยู่ในส่วนวิกฤติหรือไม่
Swap Instruction
คำสั่ง Swap( ) จะตรงกันข้ามกับคำสั่ง TestAndSet( ) จะทำงานในเนื้อหา
ของคำสองคำโดยจะรัน Atomically หากเครื่องสนับสนุนคำสั่ง Swap( )
การแก้ปัญหาส่วนวิกฤติ
ปัญหาที่เกิดขึ้นจากสถานการณ์ที่มีเงื่อนไขการแย่งชิงนี้
เป็นผลมาจากการที่แต่ละโพรเซสมีการเข้าใช้ข้อมูลบาง
อย่างร่วมกัน โดยไม่มีการประสานการทำงานระหว่างกัน
โดยการปฏิบัติการในส่วนวิกฤติของโพรเซสต้องเป็นไปใน
ลักษณะที่มีการกีดกัน
-
ความก้าวหน้า
ถ้าไม่มีโพรเซสใดกำลังปฏิบัติการอยู่ในส่วนวิกฤติแล้วมีบาง โพรเซสเข้า
สู่ส่วนวิกฤติของตน ยกเว้นโพรเซสที่กำลังทำงานอยู่ในส่วนที่เหลือนั้น
โดยการเลือกนี้ต้องไม่เลื่อนออกไปอย่างไม่มีกำหนด
การรออย่างมีของเขต
จะเริ่มนับตั้งแต่เวลาที่โพรเซสอื่นได้รับอนุญาตให้เข้าสู่ส่วน
วิกฤติไป หลังจากมีโพรเซสหนึ่งร้องขอจนมาถึงเวลา
ที่ระบบทำตามคำร้องขอของโพรเซสนั้น
การรอแบบไม่ว่าง
ในแต่ละโพรเซสมีการกำหนดเงื่อนไขที่ต้องการใช้ในการตรวจสอบก่อน
เข้าสู่ส่วนวิกฤติ ในระหว่างรอโพรเซสนั้นยังต้องทำคำสั่งทำซ้ำและ
ทดสอบเงื่อนไขอยู่เรื่อย ๆ
การขัด
มีการพัฒนาให้ทำการบล็อกโพรเซสที่ต้องการเข้าสู่ส่วนวิกฤติแต่ยัง
ไม่อาจเข้าได้ เนื่องจากมีโพรเซสอื่นกำลังทำงานอยู่ในส่วนวิกฤต
ทำให้โพรเซสเหล่านี้ไม่ต้องเข้ามาแย่งชิงกันใช้ cpu
-
การติดตาย
และการอดตาย
การสร้างเซมาฟอร์ด้วยการใช้ให้โพรเซสที่รอทำงานไปอยู่ในคิว ซึ่งอาจจะส่ง
ผลให้เกิดการที่สองโพรเซสหรือมากว่านั้นรอแบบไม่มีที่สิ้นสุด เพราะโพรเซส
ไปรอการทำงานของโพรเซสที่ยังรอการทำงานด้วย ลักษณะนี้เรียกการติดตาย
หรือมการสร้างเซมาฟอร์โดยให้โพรเซสการรอจัดเก็บไว้ในคิวที่มีโครงสร้าง
แบบ LIFO หรือเข้าหลังออกก่อนอาจเกิดปัญหาของการติดตายและอดตาย
ของโพรเซสที่จัดเก็บอยู่ด้านใน
-
-
-