งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

Process Synchronization

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "Process Synchronization"— ใบสำเนางานนำเสนอ:

1 Process Synchronization
อ. รวินทร์ ไชยสิทธิพร

2 เราจะเรียนอะไรกันบ้าง
การทำงานของโปรเซสมากกว่า 1 ตัว การกีดกันกันเอง (Mutual Exclusion) เขตวิกฤต (Critical Section) Producer-Consumer problem Semaphore Dining Philosophers Problem

3 ทบทวน ก่อนที่จะเรียนในเรื่องใหม่ ให้น.ศ. ลองทบทวน เรื่องเก่าก่อน ได้แก่เรื่องของโปรเซส ให้ น.ศ. ตอบคำถามต่อไปนี้ 1. PCB คืออะไร 2. โปรเซสมีความสำคัญอย่างไร 3. โปรเซสต้องการทรัพยากรอะไรบ้าง 4. Context Switch คืออะไร 5. Thread มีข้อดีอย่างไร

4 จากเดิม โปรเซสเดียวใช้ CPU
Process CPU ง่าย DOS

5 แต่หากมีหลายโปรเซสล่ะ
Process Process Process CPU ใช้ PCB – เกิด Context Switch ปัญหาอย่างอื่น – Deadlock, Loss of Data Integrity, etc.

6 ปัญหาของ Loss of Data Integrity
ปัญหาจะไม่เกิด หากอยู่ส่วนใครส่วนมัน แต่จะเกิดเมื่อมีการใช้ทรัพยากรร่วมกัน เช่น ตัวแปร, ไฟล์, ฐานข้อมูล, Address Space เป็นต้น หน้าที่ของ OS คือ “จัดการ” ให้เกิดความถูกต้องและรวดเร็ว ให้นศ. แบ่งกลุ่มๆละ 5 คน เพื่อลองคิดว่าปัญหาเหล่านี้เกิดได้อย่างไร

7 ปัญหา Producer-Consumer
ปัญหานี้เป็นปัญหาที่พบได้บ่อยในระบบคอมพิวเตอร์ เช่น การฟังเพลงจาก WinAmp, การอ่านข้อมูลของ Web Browser หลักการก็คือ จะมี Buffer ที่ใช้ในการเก็บข้อมูล และจะมี Process อยู่ 2 ตัว ได้แก่ Producer และ Consumer ตัวหนึ่งนำข้อมูลมาวางไว้ใน Buffer อีกตัวหนึ่งอ่านข้อมูลไปจาก Buffer Producer Consumer Data Buffer

8 ปัญหาเกิดขึ้นได้อย่างไร ?
ให้เวลา น.ศ. ประมาณ 5 นาที ลองคิดถึงปัญหาที่จะเกิดขึ้นของการทำงานแบบ Producer-Consumer แล้วนำเสนอต่ออาจารย์ ….. ปัญหา การทำงานที่ไม่ประสานกัน หาก Producer ทำงานเร็ว/ช้าเกินไป หาก Consumer ทำงานเร็ว/ช้าเกินไป หาก Buffer เล็กเกินไป หาก Buffer ใหญ่เกินไป

9 วิธีแก้ปัญหา ให้เวลา น.ศ. ประมาณ 5 นาที ลองคิดถึงแนวทางการแก้ปัญหาของการทำงานแบบ Producer-Consumer แล้วนำเสนอต่ออาจารย์ ..... แนวทางการแก้ปัญหา สร้างการทำงานที่ประสานกัน (Synchronize) มีตัวคอยเตือนหากว่าเกิดการทำงานที่ไม่ประสานกัน Producer ทำงานเร็วไปแล้ว Consumer ทำงานช้าไปแล้ว

10 โค๊ดโปรแกรม กำหนดให้ Buffer เป็น อาเรย์ ที่มีขนาด n+1
Producer จะนำข้อมูลไปวางที่ตำแหน่ง in Consumer ก็จะอ่านข้อมูลจากตำแหน่ง out 1 2 n out in

11 ทำอย่างไรจึงจะเห็นภาพ ?
LAB ให้ นศ. ทำการทดลอง โดยเข้าไปที่เว็บไซท์ของอาจารย์ และเข้าไปที่ลิงก์ O.S.2 แล้วเข้าส่วนของ LAB. ทำตามการทดลอง LAB os2-1 …… ให้เวลา 20 นาที ส่งผลการทดลอง เป็นการบ้าน

12 LAB os2-1 วัตถุประสงค์ ทฤษฏี 1. เพื่อให้ นศ. เข้าใจการทำงานของอาเรย์
อาเรย์คือ “กล่องใส่ข้อมูล ที่มีตัวเลขบอกตำแหน่ง” ตัวเลขนี้เรียกว่า “ดัชนี” (index) 1 2 n

13 ทดลองเขียนโดยภาษา C (มีต่อ)

14 ต่อ แล้วการทำงานของโปรเซสล่ะ ?
ต้องสร้าง Process ของ Producer และ Consumer

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

16 ทบทวนเรื่อง Thread Thread คือ โปรเซสขนาดเล็ก (Light weight process)
Thread จะใช้ Memory ใน Address Space ขอบเขตเดียวกัน Thread สามารถสลับกันทำงานได้ (Multi-threading) Process Thread CPU

17 ตัวอย่างโค๊ด Java เรื่อง Thread

18 ตามทฤษฎี ว่าอย่างไร ส่วนของ Producer

19 Consumer

20 ทำการทดลอง


ดาวน์โหลด ppt Process Synchronization

งานนำเสนอที่คล้ายกัน


Ads by Google