Make your own free website on Tripod.com

 

 

 

 

 

 

 

 

 

       การซิงโครไนซ์กระบวนการ

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

        นิยาม

แม้ว่าจะมีแนวคิดเกี่ยวกับกระบวนการ (process) มานานแล้วก็ตาม แต่ยังไม่มีนิยามที่ชัดเจนของคำว่า กระบวนการเท่าไรนัก
นิยามโดยทั่วไปของคำว่ากระบวนการคือ โปรแกรมที่กำลังดำเนินอยู่ (program in execution) ถ้าจะกำหนดให้ชัดเจนกว่านี้
ก็ต้องบอกว่ากระบวนการคือ กลุ่มของช่องหน่วยความจำ (memory cells) ซึ่งเปลี่ยนไปตามกฎเกณฑ์จำนวนหนึ่ง
โดยที่กฎเกณฑ์เหล่านี้เรียกว่า โปรแกรม และอุปกรณ์ที่ตีความโปรแกรมเหล่านี้คือ หน่วยประมวลผล(processor)

        สภาวะของกระบวนการ

สภาวะ (state) ของกระบวนการหนึ่งๆ คือ snapshot ของความคืบหน้าของการคำนวณของกระบวนการนั้นในเครื่องคอมพิวเตอร์ ซึ่ง snapshot นี้จะออกมาในรูปของข้อมูลในหน่วยความจำ และรีจิสเตอร์ต่าง ๆ ในขณะนั้น โดยพื้นฐานแล้วกระบวนการหนึ่งๆ จะประกอบด้วยสภาวะที่สำคัญอยู่สามสภาวะคือ ดำเนินอยู่ (running) ถูกขัด (blocked ) และพร้อม (ready) การแปรจากสภาวะหนึ่งไปยังอีกสภาวะหนึ่ง (state transition) เป็นดังรูปที่ 2.1 กระบวนการจะอยู่ในสภาวะดำเนิน เมื่อกำลังใช้หน่วยประมวลผลอยู่ ขณะที่ดำเนินอยู่ หากถูกขัด (block) เช่นต้องการรับข้อมูลหรือแสดงผล หรือใช้จานแม่เหล็กกระบวนการนั้นจะเข้าสู่สภาวะถูกขัด และจะอยู่ในสภาวะนั้นจนได้รับสัญญาณกระตุ้นหรือปลุก (wake up) ซึ่งแสดงว่าสิ่งที่รอคอยอยู่นั้นเรียบร้อยแล้ว กระบวนการนั้นก็เข้าสู่สภาวะพร้อม รอเข้าใช้หน่วยประมวลผล แต่ต้องรอให้หน่วยประมวลผลว่าง และระบบปฏิบัติการเห็นควรให้เข้าใช้หน่วยประมวลผลได้ (dispatch) แต่วัฏจักรของการแปรสภาวะในขั้นพื้นฐานตามรูปที่ 2.1 นี้ไม่ปลอดภัย เพราะกระบวนการอาจบกพร่องและใช้หน่วยประมวลผลไปโดยไม่ยอมเลิก ดังนั้นโดยทั่วไป ระบบคอมพิวเตอร์จะมีการจับเวลาการใช้หน่วยประมวลผล   หากกระบวนการใดใช้นานเกินกำหนด เครื่องจะตัดกระบวนการนั้นออกจากการใช้หน่วยประมวลผล ลักษณะนี้เรียกว่า time-utและกระบวนการนั้นจะแปรสภาวะจากดำเนินอยู่เป็นพร้อม ลักษณะการใช้ time-out

 


 

 

 

 

 

 

 

การแปรสภาพพื้นฐานกระบวนการ

 

 

 

 

 

 

การแปรสภาพโดยทั่วไปของกระบวนการ

 

 

      รูปลักษณ์ของกระบวนการ

 

        การแสดงสภาวะของกระบวนการในเครื่อง จึงใช้โครงสร้างข้อมูลพิเศษที่เรียกว่า process

descriptor หรือ process control block (PCB) ซึ่งระบบปฏิบัติการจะบรรจุและเปลี่ยนแปลงข้อมูลใน PCB ของแต่ละกระบวนการ

ให้เป็นไปตามสภาวะของกระบวนการนั้น ข้อมูลที่บรรจุอยู่ใน PCB นี้ เป็นเพียงรูปลักษณ์คร่าวๆ ที่จำเป็นของสภาวะเท่านั้น

โดยปกติ PCB มีข้อมูลดังต่อไปนี้

1. รหัสจำเพาะ ที่จะแยกกระบวนการนี้ออกจากกระบวนการอื่น

2. สภาวะปัจจุบัน ซึ่งบ่งเฉพาะสภาวะที่สำคัญ เช่น ดำเนินอยู่ หรือพร้อม เป็นต้น

3. ตัวชี้ ( pointer) ไปยังหน่วยความจำหลักที่กันไว้เป็นส่วนตัวของกระบวนการนั้น

4. ตัวชี้ไปยัง save area ของกระบวนการนี้ ซึ่งบริเวณนี้ใช้เก็บสภาวะ (ข้อมูล) ที่มีอยู่ในหน่วยประมวลผลกลาง เช่น ในรีจิสเตอร์ต่างๆ

5. ข้อมูลเกี่ยวกับทรัพยากรต่างๆ ที่กระบวนการนี้ใช้ เช่น ตู้เทป เครื่องพิมพ์

6. บุริมภาพ ( priority) คือ ระดับความสำคัญของกระบวนการนี้เทียบกับกระบวนการอื่น

      กระบวนการจวบกันเชิงอะซิงโครนัส

ในระบบคอมพิวเตอร์ใหญ่ๆ ที่มีการทำงานแบบระบบมัลติโปรแกรมมิ่ง (multiprogramming) จะมีกระบวนการหลายๆ ตัว ดำเนิน ( run)
ไปพร้อมๆ กัน หรือจวบกัน( concurren) โดยปกติกระบวนการเหล่านั้นเป็นของผู้ใช้ต่างคนกัน เป็นอิสระไม่ขึ้นหรือไม่ทราบถึงกระบวนการอื่นใด โดยนึกว่ามีกระบวนการของตนอยู่เพียงตัวเดียวในระบบ ลักษณะความเป็นอิสระจากกันในแง่นี้เรียกว่า อะซิงโครนัส ( asynchronous)
ซึ่งหากกระบวนการที่จวบกันในลักษณะนี้มีการใช้ทรัพยากรร่วมกัน ( เช่นหน่วยความจำหลักบางส่วน) จะมีโอกาสที่
กระบวนการเหล่านั้นจะก้าวก่ายซึ่งกันและกัน ทำให้ผลลัพธ์ของการประมวลผลผิดไปจากที่ประสงค์ ดังนั้นจึงต้องมี
การซิงโครไนซ์กระบวนการ ( process synchronization)

        ความคลาดเคลื่อนซึ่งขึ้นกับเวลา

       
การที่จะประกันว่าโปรแกรมหนึ่งใดจะถูกต้องนั้น นอกจากตรรกของโปรแกรมนั้นจะต้องถูกแล้ว สภาพแวดล้อมขณะที่โปรแกรมนั้นดำเนินอยู่ ซึ่งคือระบบคอมพิวเตอร์จะต้องมีคุณ-ลักษณะที่เหมาะสมด้วย กล่าวคือ
        1. ระบบปฏิบัติการต้องปกป้องข้อมูลและทรัพยากรอื่นๆ ที่โปรแกรมใช้ จากการก้าวก่ายของโปรแกรมอื่น
        2. ผลลัพธ์ของการประมวลโปรแกรมนั้น ต้องไม่ขึ้นกับความเร็วสัมพัทธ์ในการประมวลผลโปรแกรมนั้น เมื่อเทียบกับโปรแกรมอื่น
คุณลักษณะประการที่สองนั้นมีความจำเป็นมาก เพราะตรรกของโปรแกรมใดๆ ก็ตาม ไม่มีผลต่อความเร็วในการดำเนินงานของโปรแกรมนั้น ความเร็วหรือช้าในการประมวลผลจะขึ้นกับการที่มีกระบวนการอื่น ๆ
จวบกันอยู่ในระบบ และขึ้นกับหลักในการซิงโครไนซ์ ( synchro-nization) หรือการสับหลีก ( scheduling) กระบวนการต่างๆ
ดังนั้นหากผลลัพธ์ของกระบวนการหนึ่งขึ้นกับเวลาหรือความเร็วในการดำเนิน ก็แสดงว่าการประมวลผลนั้นไม่ได้ยึดถือเอาแต่ตรรก
ของโปรแกรมนั้นแต่เพียงอย่างเดียว แต่ได้พ่วงเอาความสัมพันธ์กับกระบวนการอื่นเข้าไปด้วย ซึ่งความสัมพันธ์นี้
มิได้ระบุไว้ในตรรกของโปรแกรม

       การเกียดกั้นซึ่งกันและกัน

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

      การใช้ฮาร์ดแวร์เพื่อเอื้ออำนวยการเกียดกั้นซึ่งกันและกัน
โดยปกติวิธีการใหม่ๆ ทางคอมพิวเตอร์ จะถูกออกแบบมาเพื่อใช้กับซอฟต์แวร์ ต่อเมื่อได้รับการพิสูจน์แล้วว่าดีหรือเหมาะสม
คอมพิวเตอร์รุ่นถัดมาก็จะใช้ฮาร์ดแวร์ในการทำวิธีการนั้น การเกียดกั้นซึ่งกันและกันก็มีการพัฒนามาในทำนองเดียวกัน
โดยมีการออกแบบคำสั่งในภาษาเครื่องที่เรียกว่า ตรวจ-ประทับ ( test-and-set) ในระบบคอมพิวเตอร์รุ่นปัจจุบัน คำสั่งนี้ทำให้การเกียดกั้นซึ่งกันและกันสะดวกขึ้นมาก

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

 

 

 

 

 

 

 

 

 

การอับจนขั้นพื้นฐานของระบบโปรแกรมมิ่ง

        

        สาเหตุของการเกิดการอับจนเกิดจาก

1. ทรัพยากรถูกใช้ได้เพียงคราวละหนึ่งกระบวนการ
2. กระบวนการไม่ได้ปลดปล่อยทรัพยากรที่ใช้อยู่ ก่อนขอทรัพยากรใหม่เพิ่มเติม
3. กระบวนการไม่อาจชิงทรัพยากรที่กระบวนการอื่นใช้อยู่
4. กระบวนการเกิดรอเป็นวัฏจักร ( circular waiting)

       ทั้งสี่ประการนี้เป็นสิ่งที่จำเป็นสำหรับการเกิดการอับจน หากขาดลักษณะสมบัติใดในสี่ประการนี้จะไม่เกิดการอับจนขึ้นได้
ดังนั้นวิธีการจัดการกับการอับจนจึงมุ่งที่จะขจัดลักษณะสมบัติต่างๆ ในสี่ประการน
ี้


         การแก้ปัญหาการอับจน

การแก้ปัญหาที่เกิดขึ้น เนื่องจากระบบเกิดอับจนมีอยู่ 3 วิธีด้วยกันคือ
1. ป้องกัน (prevention)
2. หลีกเลี่ยง (avoidance)
3. ตรวจจับ (detection)