ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
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
ทำการทดลอง
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.