ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
Synchronization (การประสานงาน)
2
จุดเด่นของบทนี้ การผลิต / ปัญหาผู้บริโภค บริการปรับปรุง
หากต้องการทราบวิธีแก้ไขปัญหานี้เราต้องเรียนรู้เกี่ยวกับแนวคิดส่วน 'critical section' กระบวนการแต่ละคนมีส่วนของรหัสเรียกว่า critical section ในกระบวนการที่อาจจะเปลี่ยนตัวแปรร่วมกัน
3
การแก้ปัญหาส่วนวิกฤติ (The Critical-Section Problem)
การเขียนแสดงรูปแบบขั้นตอนวิธีสำหรับแก้ปัญหาส่วนวิกฤติจะมีการกำหนดเฉพาะตัวแปรที่ใช้เพื่อการประสานอย่างได้จังหวะกันเท่านั้น และบอกถึงโปรเซสเฉพาะบางโปรเซส Pi ซึ่งส่วนเริ่มต้นและส่วนจบของการทำงานในส่วนวิกฤติจะล้อมอยู่ในกรอบรูปสี่เหลี่ยมเพื่อเน้นถึงความสำคัญของส่วนนี้
4
คำตอบสำหรับการแก้ปัญหาส่วนวิกฤติต้อวงเป็นไปตามเงื่อนไขทั้งสามข้อต่อไปนี้
การกีดกัน (Mutual exclusion) ความก้าวหน้า (Progress) การรออย่างมีขอบเขต (Bounded waiting)
5
ปัญหา critical-section สามารถแก้ปัญหาได้ง่ายๆในสภาพแวดล้อมของหน่วยประมวลผลกลางหนึ่ง ถ้าเราสามารถป้องกัน การขัดจังหวะที่เกิดขึ้นในขณะที่มีการแชร์ตัวแปรที่อยู่ขณะแก้ไข ในลักษณะนี้เราสามารถมั่นใจได้ว่าลำดับปัจจุบันของคำแนะนำจะได้รับอนุญาตให้ดำเนินการในลำดับโดยการจอง ไม่มีคำแนะนำอื่นๆที่จะรัน ดังนั้นไม่มีการเปลี่ยนแปลงที่คาดไม่ถึงที่ส่งผลไปถึงตัวแปรที่ใช้งานร่วมกัน นี่คือวิธีการใช้โดย nonpreemptive kernels
6
Synchronization (การประสานข้อมูลฮาร์ดแวร์)
คุณลักษณะของฮาร์ดแวร์สามารถทำให้การเขียนโปรแกรมใดๆ โดยสามารถทำให้ง่ายขึ้นและปรับปรุงประสิทธิภาพของระบบ ในส่วนนี้เราแสดงบางคำแนะนำฮาร์ดแวร์ในปัจจุบันง่ายๆที่มีอยู่ในหลายๆระบบและแสดงวิธีการที่สามารถนำมาใช้อย่างมีประสิทธิภาพในการแก้ปัญหา critical-section
7
รูปที่ 1 The definition of the TestAnSet () instruction
วิธีการปัญหานี้ไม่เหมาะสมในสิ่งแวดล้อมของหลายๆหน่วยประมวลผลกลาง การหยุดการขัดจังหวะในหลายๆหน่วยประมวลผลกลางอาจต้องใช้เวลามาก ดังเช่น boolean TestAndSet (Boolean *target) { boolean rv = *target ; *target = TRUE ; Return rv ; } รูปที่ 1 The definition of the TestAnSet () instruction
8
รูปที่ 2 Mutual-exclusion implementation with TestAndSet ()
do { while (TestAndSetLock (&lock)) ; // do nothing // critical section Lock = FALSE ; // remainder section } while (TRUE) ; รูปที่ 2 Mutual-exclusion implementation with TestAndSet () ข้อความที่ผ่านไปยังโปรเซสเซอร์ทั้งหมด การผ่านข้อความนี้เกิดล่าช้าเมื่อเข้าไปสู่แต่ละ critical-section และประสิทธิภาพของระบบลดลง นอกจากนี้ควรพิจารณาผลในระบบ clock หาก clock ที่เก็บไว้มีการอัปเดทแล้วโดยการขัดจังหวะ(interrupt)
9
คำสั่ง TestAndSet () สามารถกำหนดไว้ตามที่แสดงในรูปที่ 1 ลักษณะที่สำคัญคือจะรันคำสั่งนี้ atomically ดังนั้นหากคำสั่ง TestAndSet () สองคำสั่งที่รันในขณะเดียวกัน (แต่ทำบน CPU ที่แตกต่างกัน) คำสั่งนี้จะถูก รันตามลำดับในบางลำดับแบบสุ่ม หากเครื่องสนับสนุนคำสั่ง TestAndSet () แล้วเราสามารถทำการเอาออกร่วมกันโดยมีการแจ้งการล็อคตัวแปร Boolean ในการเริ่มต้นจะเป็นเท็จ โครงสร้างของกระบวนการ Pi จะแสดงในรูปที่ 2
10
คำสั่ง Swap() จะตรงกันข้ามกับคำสั่ง TestAndSet () คำสั่ง Swap() จะทำงานในเนื้อหาของคำสองคำ กำหนดไว้ตามที่แสดงในรูปที่ 3 เช่นเดียวกับคำสั่ง TestAndSet () จะรัน atomically หากเครื่องสนับสนุนคำสั่ง Swap() แล้วการเอาออกทั้งสองฝ่ายโดยมีเงื่อนไขดังนี้ การล็อคตัวแปร global Boolean จะถูกประกาศและทำให้เป็นเท็จในเริ่มต้น นอกจากนี้แต่ละกระบวนการมีคีย์ของตัวแปร local Boolean โครงสร้างของกระบวนการ Pi จะปรากฏในรูปที่ 4
11
Void Swap (boolean *a, boolean *b) {
boolean temp = *a; *a = *b; *b = temp; } รูปที่ 3 The definition of the Swap () instruction do { key = TRUE ; while (key = = TRUE ) Swap (&lock, &key) , // critical section Lock = FALSE; // remainder section } while (TRUE) ; รูปที่ 4 Mutual-exclusion implementation with the Swap () instruction
12
จัดทำโดย นางสาววีราภรณ์ หามนตรี รหัส กลุ่ม 1
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.