วันพฤหัสบดีที่ 6 ธันวาคม พ.ศ. 2550

4. เงื่อนไขยกเว้น

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






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

- การสิ้นสุดของโปรเซส

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

- การสูญหายของแมสเสจ

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

การซินโดรไนซ์โปรเซส (Process Synchronization)

การซินโดรไนซ์โปรเซส (Process Synchronization)
โดยปกติโปรเซสส่วนใหญ่ในระบบจะไม่มีควาทเกี่ยวข้องกัน ต่างคนต่างเอ็กซิคิวต์ ลักษณะความเป็นอิสระนี้เรียกว่า (Asynchronous) แต่มีบางโปรเซสที่มีความสัมพันธ์กันนอกจากการติดต่อสื่อสารระหว่างโปรเซส (InterProcess Communication) ที่กล่าวไปแล้วยังมีการเข้าจังหวะของโปรเซสอีกด้วย การเข้าจังหวะของโปรเซสหรืออาจเรียกว่าโปรเซสนั้นเกิดการไซโครไนซ์กัน การไซโครไนซ์จะหมายถึงการทำงานโปร2โปรเซสที่ต้องมีการเกี่ยวข้องกันอาจเป็นเพราะรีซอร์สร่วมกัน หรืออาจจะเป็นการรอเอ็กซิคิวต์โปรเซสหลังจากที่โปรเซสอื่นเอ็กซิคิวต์แล้ว

1. โครงสร้างพื้นฐานการซินโครไน์

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

1.1 Race Condition

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

1.2 MutualExclusionและCriticalRegion

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