• Save
Ch07ath
Upcoming SlideShare
Loading in...5
×
 

Ch07ath

on

  • 6,473 views

Operating System ...

Operating System
ระบบปฏิบัติการคอมพิวเตอร์
by Nuttha Otanasap (ณัฏฐ์ โอธนาทรัพย์)
Computer Science Dept.,
South-east Asia University
Bangkok 10160 Thailand
email: auisuke@gmail.com
website:auisuke
auisuke.blogspot.com
Hi5:auisuke.hi5.com
Copyrights 2009 SE Asia University All Rights Reserved

Statistics

Views

Total Views
6,473
Views on SlideShare
6,471
Embed Views
2

Actions

Likes
5
Downloads
0
Comments
1

1 Embed 2

http://www.slideshare.net 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • ขอบคุณค่ะ
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ch07ath Ch07ath Presentation Transcript

  • บทที่ 7 Classic Synchronization
    • เบื้องหลัง Background
    • ปัญหาของส่วนงานวิกฤต The Critical-Section Problem
    • การทำงานเชิงสัมพันธ์ของฮาร์ดแวร์ Synchronization Hardware
    • ระบบอานัติสัญญาณ Semaphores
    • ปัญหาแบบดั้งเดิมของการทำงานเชิงสัมพันธ์ Classical Problems of Synchronization
    • การเฝ้าติดตาม Monitors
  • เบื้องหลัง Background
    • การเข้าใช้ข้อมูลที่ต้องใช้ร่วมกันในเวลาเดียวกันอาจส่งผลต่อความถูกต้องของข้อมูล
    • การดูแลจัดการข้อมูลให้ถูกต้องสมบูรณ์ จำเป็นต้องอาศัยกลไกในการดำเนินการเพื่อมั่นใจได้ว่าเกิดการเอ็กซ์ซีคิวท์ตามลำดับที่ถูกต้องของโปรเซสแบบปฏิบัติการร่วม
    • ผลลัพท์ของหน่วยความจำที่ใช้ร่วม อาจเกิดปัญหาแบบเบาด์บัตเตอร์ ซึ่งมีเงื่อนไขอยู่บน คลาสของข้อมูล count
  • การแก้ไขปัญหาส่วนงานวิกฤต Solution to Critical-Section Problem
    • 1. Mutual Exclusion - การแยกการดำเนินการเมื่อเกิดการดำเนินการร่วม
    • หากโปรเซส P1 กำลังทำการเอ็กซ์ซีคิวท์ในส่วนงานวิกฤติ โปรเซสอื่นก็จะไม่สามารถทำการเอ็กซ์ซีคิวท์ในส่วนงานวิกฤติได้
    • 2. Progress - หากไม่มีโปรเซสใดกำลังเอ็กซ์ซีคิวท์ในส่วนงานวิกฤติ และมีโปรเซสอื่นใด อยู่ในส่วนงานวิกฤติ โปรเซสที่ถูกเลือกให้ทำการเอ็กซ์ซีคิวท์เป็นโปรเซสถัดไป ก็จะไม่สามารถถูกเลื่อนออกไปได้
    • 3. Bounded Waiting - ขอบเขตการรอคอย ขอบเขตการรอคอยขึ้นอยู่กับจำนวนเวลาที่โปรเซสใดๆ ได้รับสิทธิในการเข้าสู่ส่วนงานวิกฤติ หลังจาดโปรเซสนั้นได้ทำการร้องขอเพื่อเข้าสู่ส่วนงานวิกฤติ และก่อนที่การร้องขอนั้นจะได้รับอนุญาต
      • สมมติให้โปรเซสนั้นทำการเอ็กซ์ซีคิวท์ที่ความเร็วไม่เป็นศูนย์
      • ไม่มีทางเลือกอื่นที่สัมพันธ์กับโปรเซสที่ N
  • Algorithm 1
    • เธรด แบ่งการใช้งานตัวแปรแบบจำนวนเต็มด้วยตัวแปร
    • turn Threads share a common integer variable turn
    • ถ้า turn==i เธรด i ก็จะได้รับอนุญาตให้ทำการเอ็กซ์ซีคิวท์
    • If turn==i , thread i is allowed to execute
    • ไม่มีการอนุญาตคำร้องขออื่น
    • Does not satisfy progress requirement
      • Why?
  • Algorithm 2
    • Add more state information
      • Boolean flags to indicate thread’s interest in entering critical section
    • Progress requirement still not met
      • Why?
  • Algorithm 3
    • นำแนวคิดที่ 1 และ 2 มารวมกัน
    • Combine ideas from 1 and 2
    • จะสามารถเข้าสู่ส่วนงานวิกฤติหรือไม่
    • Does it meet critical section requirements?
  • การทำงานเชิงสัมพันธ์ของฮาร์ดแวร์ Synchronization Hardware
    • มีระบบหลายระบบสามารถรองรับการทำงานของโค้ดส่วนงานวิกฤติได้
    • Uniprocessors หน่วยประมวลผลเดี่ยว – ไม่ควรจะถูกขัดจังหวะในการทำงาน
      • ในปัจจุบัน โค้ดที่ใช้ในการทำงานควรเอ็กซ์ซีคิวท์โดยปราศจากการคำนึงถึงระดับความสำคัญ
      • โดยทั่วไป ระบบที่มีหน่วยประมวลผลหลายหน่วยยังไม่มีประสิทธิภาพมากนัก
        • เนื่องจาก ระบบปฏิบัติการยังไม่สามารถใช้งานส่วนต่างๆได้โดยครบถ้วน
    • เครื่องสมัยใหม่สามารถสั่งงานฮาร์ดแวร์แบบแบ่งส่วนได้ป็นอย่างดีโดยไม่มีการขัดจังหวะการทำงานใดๆ จากส่วนงานอื่นๆ
        • อตอมมิก คือ การที่ไม่ถูกขัดจังหวะจากส่วนงานอื่น
        • Atomic = non-interruptable
      • โดยการทดสอบคำในหน่วยความจำและการกำหนดค่า
      • หรือการสลับสภาพแวดล้อมของคำในหน่วยความจำสองคำ
  • ระบบอาณัติสัญญาณ Semaphore
    • เครื่องมือเพื่อการทำงานเชิงสัมพันธ์จะต้องไม่มีการร้องขอการรอคอยแบบไม่ว่างงาน ( spin lock )
    • อาณัติสัญญาณ S Semaphore S เป็นตัวแปรแบบจำนวนเต็ม
    • Two standard operations modify S: acquire() and release()
      • Originally called P() and V()
    • เกิดความยุ่งยากน้อยที่สุด
    • สามารถเข้าถึงโดยปฏิบัติการแบบอตอมมิกสองปฏิบัติการเท่านั้น
        • acquire(S) {
        • while S <= 0
        • ; // no-op
        • S--;
        • }
        • release(S) {
        • S++;
        • }
  • อาณัติสัญญาณโดยเครื่องมือเพื่อการทำงานเชิงสัมพันธ์แบบทั่วไป Semaphore as General Synchronization Tool
    • Counting semaphore อาณัติสัญญาณการนับ เป็นค่าจำนวนเต็ม ที่สามารถมีขนาดเกินกว่าโดเมนที่ไม่กำหนด
    • Binary อาณัติสัญญาณแบบไบนารี่ เป็นค่าจำนวนเต็ม ที่สามารถมีขนาดได้ระหว่าง 0 และ 1 เท่านั้น ทั้งนี้สามารถใช้งานง่าย
      • Also known as mutex locks
    • สามารถกำหนดให้อาณัติสัญญาณการนับ S เป็นแบบอาณัติสัญญาณไบนารี่
    • รองรับการทำงานแบบแยกการทำงานของการทำงานร่วม
        • Semaphore S; // initialized to 1
        • acquire(S);
        • criticalSection();
        • release(S);
  • การใช้งานอาณัติสัญญาณ Semaphore Implementation
    • ต้องรับรองได้ว่าไม่เกิดการเอ็กซ์ซีคิวท์สองโปรเซสพร้อมกัน acquire() และ ปลดปล่อย release() อาณัติสัญญาณเดียวกันในเวลาเดียวกัน
    • การใช้งานเข้าสู่ปัญหาส่วนงานวิกฤติ
      • ในขณะทำงานเกิดการรอคอยแบบไม่ว่างงานในการใช้งานส่วนงานวิกฤติ
        • แต่การใช้งานโค้ดเป็นเพียงช่วงระยะเวลาสั้นๆ
        • การรอคอยแบบไม่ว่างงานเป็นเพียงช่วงระยะเวลาเล็กน้อยหากเกิดส่วนงานวิกฤติไม่บ่อยนัก
    • แอพพลิเคชั่นอาจจะต้องสูญเสียเวลามากในส่วนงานวิกฤติ
        • ในที่นี้จะไม่กล่าวถึงประสิทธิภาพ
  • ในที่นี้จะไม่กล่าวถึงประสิทธิภาพ Deadlock and Starvation
    • Deadlock วงจรอับ หมายถึงโปรเซสตั้งแต่สองโปรเซสขึ้นไป เข้าสู่สถานะรอคอยอย่างไม่มีเวลาสิ้นสุด อันเนื่องมาจากโปรเซสใด โปรเซสหนึ่งเข้าสู่สถานะรอคอย
    • Let S and Q be two semaphores initialized to 1
    • P 0 P 1
    • acquire(S); acquire(Q);
    • acquire(Q); acquire(S);
    • . .
    • . .
    • . .
    • release(S); release(Q);
    • release(Q); release(S);
    • Starvation – การถูกละเลย หมายถึงการเกิดการขัดขวางแบบไม่สิ้นสุด โดยโปรเซสอาจไม่ถูกลบออกจากคิวของระบบอาณัติสัญญาณ ด้วยเหตุนี้โปรเซสนั้นก็จะถูกพักการทำงานไปโดยปริยาย
  • ปัญหาพื้นฐานของการทำงานเชิงสัมพันธ์ Classical Problems of Synchronization
    • ปัญหาขอบเขตของบัฟเฟอร์
    • Bounded-Buffer Problem
    • ปัญหาของตัวอ่านและตัวเขียน
    • Readers and Writers Problem
    • ปัญหาดินนิ่งไฟโลโซเฟอร์
    • Dining-Philosophers Problem
  • ปัญหาดินนิ่งไฟโลโซเฟอร์ Dining-Philosophers Problem
    • การแบ่งปันข้อมูล Shared data
    • Semaphore chopStick[] = new Semaphore[5];
  • การเฝ้าติดตาม Monitors
    • การเฝ้าติดตามเป็นแนวคิดระดับสูง ที่ทำให้การทำงานของเธรดเกิดความปลอดภัย
    • มีเพียงเธรดเดียวเท่านั้นที่กำลังทำงานในการเฝ้าติดตาม ณ ขณะเวลาใดๆ
        • monitor monitor-name
        • {
        • // variable declarations
        • public entry p1(…) {
        • }
        • public entry p2(…) {
        • }
        • }
  • ตัวแปรแบบมีเงื่อนไข Condition Variables
    • condition x, y;
    • A thread that invokes x.wait is suspended until another thread invokes x.signal
  • Monitor with condition variables