นางสาวกนกอร ศิริอำนาจ 50036153 กลุ่ม 2 Chapter 6 นางสาวกนกอร ศิริอำนาจ 50036153 กลุ่ม 2
the textbook Highlights of chapter 6 1) The producer/consumer problem นี่คือปัญหาที่มีชื่อเสียงและเป็นรูปแบบสิ่งที่โรงงานพอใจ บางชิ้นส่วนของ อุปกรณ์ก็เป็นที่พอใจของโรงงานผลิตและโรงงานก็ใช้ชิ้นส่วนนั้น คุณสามารถ กล่าวว่าโรงงานผลิตชิ้นส่วนอื่นๆ และโรงงานที่เราทำในการเป็นผู้บริโภคชิ้นส่วน เหล่านี้
the textbook Highlights of chapter 6 2) Lost updates ถ้าคุณเข้ารหัสผู้ผลิตตรง ๆและ psuedo code ผู้บริโภค แต่ละสิ่งที่พวก มันทำงาน เมื่อมีการทำงานคนเดียว คุณสามารถเรียกใช้เป็นอันแรกและทำงาน ต่อไป แต่ถ้าคุณ interleave โค้ด มันจะหยุดทำงาน
the textbook Highlights of chapter 6 3) เพื่อเรียนรู้วิธีแก้ไขปัญหานี้ เราต้องเรียนรู้เกี่ยวกับแนวคิด ‘crticial section’ Crticial section คือ พื้นที่ที่มีบางส่วนมีการเข้าถึง ทรัพยากรเพื่อการปรับปรุงแก้ไข เช่น ตัวแปร Globalบางตัวเป็น incremented หรือ decremented ผู้ผลิต/ผู้บริโภค เช่น ที่ตัว แปรถูกใช้ร่วมกันคือเป็นเคาน์เตอร์
the textbook Highlights of chapter 6 4) แต่ละ Proces มีส่วนของรหัสที่เรียกว่า ‘critical section’ โปรเซสอาจมีการเปลี่ยนแปลงตัวแปร การปรับปรุงตาราง การเขียนไฟล์เป็นต้น คุณลักษณะสำคัญของระบบคือเมื่อกระบวนการหนึ่งคือ exectuing ใน ‘critical section’ และไม่มีกระบวนการอื่นๆ ที่จะได้รับอนุญาตให้ ดำเนินงานในส่วน ‘critical section’ กล่าวคือ ไม่มีกระบวนการสอง กระบวนการที่จะรันใน‘critical section’ ในเวลาเดียวกัน
the textbook Highlights of chapter 6 การแก้ปัญหาในส่วน ‘critical section’ ต้องมีความต้องการ 3 อย่างต่อไปนี้ : 1)mutual exclusion คือ การแยกการดำเนินการเมื่อเกิดการ ดำเนินการร่วม หากโปรเซส P1 กำลังทำการเอ็กซ์ซีคิวในส่วนงานวิกฤต โปรเซสอื่นก็จะไม่สามารถทำการเอ็กซ์ซีคิวในส่วนงานวิกฤตได้
the textbook Highlights of chapter 6 2) progress คือ หากไม่มีโปรเซสใดกำลังเอ็กซ์ซีคิวในส่วนงานวิกฤตและมี โปรเซสอื่นใดอยู่ในส่วนงานวิกฤต โปรเซสที่ถูกเลือกให้ทำการเอ็กซ์ซีคิวเป็น โปรเซสถัดไปก็จะไม่สามารถถูกเลื่อนออกไปได้ 3)bounded waiting คือ ขอบเขตการรอคอย ขอบเขตการรอคอย ขึ้นอยู่กับจำนวนเวลาที่โปรเซสใดๆ ได้รับสิทธิในการเข้าสู่ส่วนงานวิกฤต หลังจาก โปรเซสนั้นได้ทำการร้องขอเพื่อเข้าสู่ส่วนงานวิกฤต และก่อนที่การร้องขอนั้นจะ ได้รับอนุญาต 3.1 สมมติให้โปรเซสนั้นทำการเอ็กซ์ซีคิวที่ความเร็วไม่เป็นศูนย์ 3.2 ไม่มีทางเลือกอื่นที่สัมพันธ์กับโปรเซสที่ N
the textbook Highlights of chapter 6 วิธีที่ 1 – Peterson's solution ซอร์ฟแวร์เพียงแต่ไม่สามารถทำงานบนระบบปฏิบัติการสมัยใหม่ได้ แต่มันดีสำหรับ 2 processes/threads วิธีที่ 2 - Test and Set (hardware [mainframes]) วิธีที่ 3 - Swap (hardware [PCs]) วิธีที่ 2 และ 3 สามารถทำงานได้ดีเยี่ยม แต่ต้องทำงานแบบใช้ภาษา assembler language หรือ machine code ซึ่งมันก็ไม่สะดวกสบายและอาจจะทำไม่ได้ในทุกอย่าง ( คิดในเรื่องเกี่ยวกับการใช้ งานในพวก perl, python, tcl, and other scripting languages) สิ่งเราที่ทำได้ก็คือการรอคอยการทำงานของมัน....