Professional Documents
Culture Documents
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 1
ความหมายของโปรเซส
ความหมายของโปรเซส
โปรแกรมทีกำ ่ ลังถูกเอ็กซคิ วิ ต์
โปรแกรมทีกำ ่ ลังทำงานอยู่
กิจกรรมทีม ่ ก ั พันธ์กน
ี ารทำงานสม ั
สงิ่ ทีกำ ้
่ ลังใชงานโปรเซสเซอร์ อยู่
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 2
องค
องคป ์ ระกอบของโปรเซส
์ป ระกอบของโปรเซส
หมายเลขโปรเซส (Process ID)
โค ้ดโปรแกรม (Program Code)
ข ้อมูล (Data)
บล็อกควบคุมโปรเซส (Process Control Block ) หรือ PCBเป็ นเนื ้อที่
ของหน่วยความจำที่ระบบปฏิบตั ิการกำหนดไว้ เพื่อเก็บข้ อมูลที่สำคัญของโปรเซส
PSW (Program Status Word) เป็ นตัวควบคุมลำดับการเอ็กซิคิวต์
คุณสมบัตข ิ องโปรเซส
ลำดับความสำคัญของโปรเซส (Priority)
อำนาจหน ้าทีข ่ องโปรเซส (Authority)
คุณสมบัตอ ิ น
ื่ ๆ
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 3
บล็
บล็ออกควบคุ
กควบคุมมโปรเซส
โปรเซส (PCB)
(PCB)
ข้ อมูลใน PCB ของโปรเซสประกอบด้ วย
พอยเตอร์ (Pointer)
สถานะของโปรเซส (Process state)
หมายเลขของโปรเซส (Process ID)
ตัวนั บจำนวน (Program counter)
รีจส ิ เตอร์ (Register)
ข ้อมูลการจัดการเวลาของซพ ี ย
ี ู (CPU scheduling information)
ข ้อมูลการจัดการหน่วยความจำ (Memory management
information)
ข ้อมูลแอ็กเคาต์ (Account information)
ข ้อมูลสถานะอินพุต/เอาต์พต ุ (I/O status information)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 4
บล็อกควบคุมโปรเซส
ระบบปฏิบต
ั ก
(PCB)
ิ าร (Operating Systems) 5
สถานะของโปรเซส
สถานะของโปรเซส
สถานะเริม่ ต ้น (New)
สถานะพร ้อม (Ready)
สถานะรัน (Run)
สถานะรอ,พัก (Wait)
สถานะบล็อก (Block)หรื ออินเทอร์ รัพต์
สถานะสนิ้ สุด (Terminate)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 6
ไดอะแกรมของสถานะ
โปรเซส
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 7
การจ
การจั ดเวลาโปรเซส
ั ดเวลาโปรเซส
ใชในระบบมัลติโปรแกรมมิ่ง คือการจัดโปรเซสใหรันตลอดเวลา เพื่อ
ใหใชประโยชนซีพียไู ดสูงสุด
โปรเซสที่ระบบปฏิบตั ิการสรางขึ ้นมาใหมจะอยูในสถานะพรอมและ
เก็บ อยูในคิว เรี ยกวา Ready Queue เพื่อรอการรัน
ต้ องพิจารณาหน่วยความจำของระบบมีเพียงพอหรื อไม่
Ready Queue จะเก็บโปรเซสในลักษณะลิงคลิสต (Link list) ที่สวนหัว
ของคิว จะประกอบดวยพอยเตอรของ PCB เริ่ มตนและทายสุดของ
ลิสต และแตละ PCB จะมีพอยเตอรชี ้ไปยัง PCB ตัวตอไปของคิว
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 8
หัว
ท้าย
คิวที่พร้อมทำงานและ
ระบบปฏิบต ิ ารอิ(Operating
ั ก นพุต/เอาต ์ ุตอื่น ๆ
พ
Systems) 9
การจ
การจั ดเวลาโปรเซส
ั ดเวลาโปรเซส
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 10
โปรเซสที่ใชเ้ วลาเกินเวลาควันตัมจะยา้ ยไปตอ่ คิว
ใหม่
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 12
คอนเท็
คอนเท็ก กซซส ์ส
์ วิวิต
ตช ช์ ์(Context
(Context
Switch)
Switch)
เป็ นการสวิตช์ไปยังโปรเซสในคิวต่อไปเมื่อซีพีย ูทำงานโปรเซสนันเสร็
้ จ
เรี ยบร้ อยแล้ ว
ระหว่างการสวิตช์จะไม่มีการทำงาน
เวลาที่ใช้ ขึ ้นกับความเร็วของหน่วยความจำ, จำนวนรี จิสเตอร์ และคำ
สัง่ พิเศษในระบบ
คอนเท็กซ์สวิตช์กลายเป็ นสิง่ ที่เพิ่มประสิทธิภาพที่โครงสร้ างใหม่เรี ยกว่า
Thread นำมาใช้ เพื่อหลีกเลี่ยงปั ญหาคอขวดของระบบ
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 13
โอเปอเรช ันของโปรเซส
โอเปอเรชนของโปรเซส
ั
การสร้ างโปรเซส
การสร้ างโปรเซสจะกระทำผ่าน System Call โปรเซสที่สร้ างเรี ยกว่า
“โปรเซสแม่” (Parent Process)
ถ้ าเป็ นการสร้ างในขณะเอ็กซิคิวต์โปรเซสจะเรี ยกว่า “โปรเซสลูก”
(Children Process)
โปรเซสลูกอาจจะใช้ รีซอร์ สจากระบบปฏิบตั ิการหรื อผ่านทาง
โปรเซสแม่ก็ได้
โปรเซสแม่อาจจะแบ่งรี ซอร์ สเป็ นส่วนย่อย ๆ หรื อแชร์ รีซอร์ สให้ โปร
เซสลูกก็ได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 14
โอเปอเรช ันของโปรเซส
โอเปอเรชนของโปรเซส
ั
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 15
โอเปอเรช ันของโปรเซส
โอเปอเรชนของโปรเซส
ั
การสิ ้นสุดของโปรเซส
โปรเซสลูกใช้ รีซอร์ สมากเกินที่กำหนดไว้
ไม่มีความจำเป็ นต้ องใช้ โปรเซสลูกนันอี ้ กแล้ ว
โปรเซสแม่สิ ้นสุดไปแล้ ว ระบบปฏิบต ั ิการจะไม่ยินยอมให้
เอ็กซิคิวต์โปรเซสลูก (สิง่ ที่เกิดขึ ้นเรี ยกว่า “การสิ ้นสุดเป็ น
ขัน้ ๆ” (Cascading termination))
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 16
โปรเซสส
โปรเซสสอ ื่ อ
ื่ ประสาน
ประสาน (Cooperating
(Cooperating
Process)
Process)
โปรเซสจะเป็ นโปรเซสสื่อประสานถ้ าโปรเซสนันมี ้ ผลกระ
ทบหรื อได้ รับผลกระทบจากโปรเซสอื่นที่เอ็กซิคิวต์อยูใ่ น
ระบบนัน้
อาจกล่าวได้ วา ่ โปรเซสสื่อประสานจะมีการแชร์ ข้อมูลกับ
โปรเซสอื่นในระบบ โดยระบบปฏิบตั ิการจะต้ องแชร์
หน่วยความจำไว้ ใช้ งาน เนื ้อที่หน่วยความจำส่วนนันคื
้ อ
บัฟเฟอร์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 17
โปรเซสส
โปรเซสสอื่ อ
ื่ ประสาน
ประสาน (Cooperating
(Cooperating
Process)
Process)
เหตุที่ทำให้ เกิดการประสานระหว่างโปรเซส
การแชร์ ข้อมูลข่าวสาร : ผู้ใช้ หลายคนต้ องการข้ อมูลเดียวกัน
ในเวลานัน้
การเพิ่มความเร็ วในการคำนวณ : โดยการแบ่งโปรแกรมออก
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 18
การติ
การติด ดต่
ต่ออระหว่
ระหว่าางโปรเซส
งโปรเซส
โครงสร้ างพื ้นฐาน
(IPC)
(IPC)
วิธีการติดต่อ
การจัดบัฟเฟอร์
เงื่อนไขยกเว้ น
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 19
โครงสร้
โครงสร้ าางพื
งพื ้นฐาน
้นฐาน
IPC (InterProcess Communication)สนับสนุนกลไกเพื่อให้ โปรเซสสามารถติดต่อ
ซึง่ กันและกันได้ อย่างมีประสิทธิภาพ ได้ แก่ ระบบแมสเสจ (Message system)
ฟั งก์ชนั ของระบบแมสเสจที่ IPC สนับสนุนมีอย่างน้ อย 2 ประการคือ การส่งข้ อมูล
(Send message) และรับข้ อมูล (Receive message)
เมื่อโปรเซสใดต้ องการข้ อมูลจากโปรเซสอื่นจะส่งคำร้ องขอไปยังโปรเซสนัน้ โปรเซส
ที่ถกู ร้ องขอจะส่งข้ อมูลนันไปให้
้
ขนาดของข้ อมูลอาจจะมีขนาดคงที่ หรื อขนาดไม่คงที่ก็ได้
ก่อนการรับ-ส่งข้ อมูลจะต้ องมีการสร้ างลิงค์ให้ พร้ อมก่อน ทังลิ
้ งค์ทางกายภาพ (เช่น
การแชร์ หน่วยความจำ, บัส หรื อเน็ตเวิร์คก็ได้ ) และลิงค์ทางลอจิก
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 20
คุคุณ
ณสมบ
สมบั ติ
ั ติขของลิ
องลิงงคคท์ างลอจิ
์ท างลอจิกก
จะสร้ างลิงค์อย่างไร
ลิงค์ที่สร้ างนันสั
้ มพันธ์กบั โปรเซสมากกว่า 2 โปรเซสหรื อไม่
ระหว่างโปรเซสทังสองจะมี
้ กี่ลงิ ค์
ความจุของลิงค์เป็ นเท่าไร
ลิงค์นนมี
ั ้ บพั เฟอร์ หรื อไม่ ถ้ ามีขนาดบัพเฟอร์ เป็ นเท่าไร
ลิงค์เป็ นแบบทางเดียว(undirectional) หรื อสอง
ทิศทาง(bidirectional)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 21
ลิ
ลิงงค์
ค์แแบบลอจิ
บบลอจิกกและโอเปอเรช ั นใน
และโอเปอเรชนใน
ั
การร
การรับ-ส ่ง
ับ-สง่ แมเสจ
แมเสจ
การติดต่อเป็ นแบบทางตรงหรื อทางอ้ อม
การติดต่อเป็ นแบบสมมาตร หรื อไม่สมมาตร
การติดต่อเป็ นแบบอัตโนมัติ หรื อใช้ บฟ
ั เฟอร์ เฉพาะแบบ
การส่งแมสเสจเป็ นการส่งแบบสำเนา หรื ออ้ างอิง
แมสเสจมีขนาดคงที่ หรื อไม่คงที่
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 22
วิวิธธี กี การติ
ารติดดตต่อ่อระหว
ระหวา่ า่ งโปรเซส
งโปรเซส
การติดต่ อทางตรง (Direct Communication) แต่ละโปรเซสที่
ต้ องการติดต่อกันจะต้ องกำหนดชื่อเฉพาะที่ใช้ ในการติดต่อทัง้
โปรเซสที่ต้องการรับ และโปรเซสที่ต้องการส่ง
Send (B,message) จะเป็ นการส่งแมสเสจไปยังโปรเซส B
Receive (A,message) จะเป็ นการรับแมสเสจจากโปรเซส A
การติดต่อแบบนี ้ระบบปฏิบตั ิการจะไม่ดำเนินการติดต่อให้ กบั
โปรเซสทังสองโปรเซส
้ โปรเซสทังสองจะต้
้ องจัดการเอง
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 23
คุคุณ
ณสมบ
สมบั ติ
ั ติขของลิ
องลิงงคคข องวิธธี กี การ
์ องวิ
์ข าร
ติติดดตต่อ่อทางตรง
ทางตรง
การสร้ างลิงค์จะเป็ นแบบอัตโนมัติระหว่างคูข่ องโปรเซสที่ต้องการ
ติดต่อโปรเซสจะทราบหมายเลขของโปรเซสที่จะติดต่อด้ วย
ลิงค์หนึง่ ๆ จะมีความสัมพันธ์เฉพาะโปรเซสสองโปรเซสเท่านัน้
ระหว่างโปรเซสแต่ละคูน่ นจะมี ั ้ เพียงลิงค์เดียวเท่านัน้
ลิงค์นี ้เป็ นได้ ทงทิ
ั ้ ศทางเดียว และสองทิศทางแต่ปกติจะเป็ นแบบ
สองทิศทาง
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 24
วิวิธธี กี การติ
ารติดดตต่อ่อระหว
ระหวา่ า่ งโปรเซส
งโปรเซส
การติดต่ อทางอ้ อม (Indirect Communication) แต่ละโปรเซส
ที่ต้องการติดต่อจะต้ องติดต่อกันผ่านเมลล์บอ็ กซ์(Mailbox) หรื อ
อาจเรี ยกว่าเป็ นการติดต่อผ่านพอร์ ต (Port) แต่ละเมลล์บอ็ กซ์จะ
มีหมายเลขไม่ซ้ำกับเมลล์บอ็ กซ์อื่น
Send(B,message) เป็ นการส่งแมสเสจไปยังเมลล์บอ็ กซ์ B
Receive(A,message) เป็ นการรับแมสเสจจากเมลล์บอ็ กซ์ A
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 25
คุคุณ
ณสมบ
สมบั ติ
ั ติขของลิ
องลิงงคคข องวิธธี กี การ
์ องวิ
์ข าร
ติติดดตต่อ่อทางอ
ทางอ้ อ้ อมม
จะมีการสร้ างลิงค์ระหว่างโปรเซสที่มีการแชร์ เมลล์บอ็ กซ์เท่านัน้
ลิงค์หนึง่ ๆ อาจจะมีความสัมพันธ์มากกว่าสองโปรเซสได้
ระหว่างโปรเซสแต่ละคูน่ นอาจจะมี
ั้ หลายลิงค์ตา่ งกันได้ แต่ละ
ลิงค์จะมีเพียงเมลล์บอ็ กซ์เดียว
การลิงค์อาจจะเป็ นทิศทางเดียว หรื อสองทิศทางก็ได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 26
กลไกที่ ร่ ระบบปฏิ
กลไกที ะบบปฏิบบั ติั ติกการยอมให
ารยอมให้ โ้ โปรเซสจ
ปรเซสจั ดการ
ั ดการ
กกั บเมลล
ั บเมลลบ ์ ็อ็อกซ
์บ กซ์ ์
สร้ างเมลล์บอ็ กซ์ใหม่
ส่งและรับแมสเสจผ่านเมลล์บอ
็ กซ์
ทำลายเมลล์บอ ็ กซ์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 27
รูรูปปแบบของเมลล
แบบของเมลลบ ์ ็อ็อกซ
์บ กซ์ ์
เมลล์บอ็ กซ์แบบคิว ขนาดของเมลล์บอ็ กคงที่
ข้ อมูลเข้ า ข้ อมูลออก
เมลล์บอ็ กซ์ เมลล์บอ็ กซ์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 28
รูรูปปแบบของเมลล
แบบของเมลลบ ์ ็อ็อกซ
์บ กซ์ ์
เมลล์บอ็ กซ์แบบไปป์ ขนาดเมลล์บอ็ กซ์ยืดหยุน่ ได้ ตามขนาดของ
ข้ อมูลที่ใส่
ข้ อมูลเข้ า ข้ อมูลออก
เมลล์บอ็ กซ์ เมลล์บอ็ กซ์
FIFO (First In First Out)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 29
รูรูปปแบบของเมลล
แบบของเมลลบ ์ ็อ็อกซ
์บ กซ์ ์
เมลล์บอ็ กซ์แบบสแต็ก
ข้ อมูลเข้ า
เมลล์บอ็ กซ์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 30
การจั
การจัดดบับัฟฟเฟอร์
เฟอร์ (Buffer)
(Buffer)
บัฟเฟอร์ คือคิวของแมสเสจที่ผกู ติดกับลิงค์ โดยพื ้นฐานจะมี
ความจุ 3 ลักษณะ
ความจุศนู ย์ (Zero Capacity) : ในลิงค์จะไม่มีแมสเสจรอ
อยูเ่ ลย
ความจุแบบมีขอบเขต (Bounded capacity) : จำนวนของ
แมสเสจในลิงค์จะมีได้ ไม่เกินจำนวนที่กำหนด
ความจุไม่มีขอบเขต (Unbounded capacity) : จำนวนของ
แมสเสจในลิงค์จะมีได้ ไม่จำกัด
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 31
การ Asynchronous ระหว่
การ Asynchronous ระหว่าางโปรเซส
งโปรเซส PP
และโปรเซส
และโปรเซส QQ
Process P…
send(Q,message);
receive(Q,message);
Process Q…
receive(P,message);
send(P,”Acknowledgment”)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 32
เงื่ อ่ อนไขยกเว
เงื นไขยกเว้ น ้ นในการติ
ในการติดดตต่อ่อ
ระหว
ระหวา่ า่ งโปรเซส
งโปรเซส
การสิ ้นสุดของโปรเซส
ถ้ าผู้รับหรื อผู้สง่ แมสเสจสิ ้นสุดก่อนแมสเสจจะเอ็กซิคิว
ต์ ทำให้ แมสเสจถูกกำจัดทำให้ ผ้ รู ับไม่ได้ รับแมสเสจ หรื อผู้
ส่งไม่ได้ สง่ แมสเสจ
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 33
เงื่ อ่ อนไขยกเว
เงื นไขยกเว้ น ้ นในการติ
ในการติดดตต่อ่อ
ระหว
ระหวา่ า่ งโปรเซส
งโปรเซส
การสูญหายของแมสเสจ
แมสเสจจากโปรเซส P ที่สง่ ไปยังโปรเซส Q อาจจะสูญหาย
ระหว่างทางของการสื่อสารก็ได้ ซึง่ อาจจะเป็ นข้ อผิดพลาดด้ าน
ฮาร์ ดแวร์ หรื อสายสื่อสาร มี 3 วิธีพื ้นฐานในการจัดการ
OS มีหน้ าที่รับผิดชอบในการตรวจสอบการสูญหายนี ้เพื่อส่งแมสเสจใหม่
โปรเซสที่ทำหน้ าที่สง่ แมสเสจมีหน้ าที่รับผิดชอบในการตรวจสอบการ
สูญหายเพื่อส่งแมสเสจใหม่ถ้าต้ องการอีก
OS มีหน้ าที่รับผิดชอบในการตรวจสอบการสูญหายนี ้หลังจากนันจะแจ้ ้ ง
ให้ โปรเซสที่ทำหน้ าที่สง่ แมสเสจที่เกิดการสูญหายทำหน้ าที่สง่ ใหม่
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 34
การซ
การซน ิน โครไนซโ์ โ์ ปรเซส
ิ โครไนซ ปรเซส (Process
(Process
Synchronization)
Synchronization)
โปรเซสที่มีความเป็ นอิสระกันเรี ยกว่า Asynchronous
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 35
A B
การซินโครไนซ์โปรเซส
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 36
10 X=10 10 X=10
X-->X+10 A X-->X-10 B
X=20 X=0
20 0
X=20 X=0
X-->X-10 B X-->X+10 A
10 X=10 10 X=10
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 37
10
X=10 X=10
A X-->X+10 X-->X-10 B
X=20 X=0
20 หรือ 0
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 38
โครงสร้
โครงสร้าางพื งพืน้น
้ ฐานการซ
ฐานการซน ิน
ิ โคร
โคร
ไนซ์ ์
ไนซ
Race Condition : สภาวะที่เกิดข้ อผิดพลาดเนื่องจากโปรเซส
ทำงานร่วมกันซึง่ มีการใชัรีซอร์ สร่วมกัน
Mutual Exclusion : เป็ นการกีดกันไม่ให้ โปรเซสอื่นเข้ ามาใช้
รี ซอร์ สในขณะที่มีโปรเซสอื่นครอบครองรี ซอร์ สนันอยู
้ ่ บริ เวณหรื อ
ส่วนของโปรแกรมที่โปรเซสครอบครองรี ซอร์ สนันอยู ้ ่ เรี ยกว่า
Critical Region หรื อ Critical Section
อาจกล่าวได้ วา่ ถ้ ามีโปรเซสใดอยูใ่ น Critical Region แล้ วโปรเซ
สอื่นจะเข้ าไปอยูใ่ น CR อีกไม่ได้ จนกว่าโปรเซสเดิมนันจะออกไป
้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 39
โครงสร้
โครงสร้าางพืงพืน ้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซ์ ์
ไนซ
คุณสมบัติของ Mutual Exclusion
ต้ องไม่มีโปรเซส 2 โปรเซสอยูใ่ น Critical Region พร้ อมกัน
ต้ องไม่มีสมมุติฐานและข้ อจำกัดเกี่ยวกับความเร็ ว และ
จำนวนซีพียมู าเกี่ยวข้ อง
ต้ องไม่มีโปรเซสใด ๆ ภายนอก Critical Region ที่บล็อกการ
ทำงานของโปรเซสอื่น
ต้ องไม่มีโปรเซสใดที่รอการเข้ า Critical Region ตลอดเวลา
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 40
Mutual Exclusion และ Critical Region
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 41
โครงสร้
โครงสร้าางพื งพืน ้น
้ ฐานการซ
ฐานการซน ิน
ิ โคร
โคร
ไนซ
ไนซ
Mutual Exclusion with busy ์ ์ : สภาวะที่โปรเซสรอ อยู่
waiting
นอก CR แต่ยงั มีการครอบครองเวลาซีพียอู ยู่ ทำให้ เสียประโยชน์
โดยไม่ได้ งานอะไรเลย
การแก้ ปัญหา busy waiting ทำได้ โดยการ “อินเทอร์ รัพต์” ซึง ่ มี 2
ประเภทคือ
Clock interrupt : บอกซีพียว ู า่ รันครับเวลาควันตัมแล้ ว
I/O interrupt : บอกซีพียว ู า่ โปรเซสที่ถกู บล็อกนันทำงานกั
้ บ I/O
เสร็จเรี ยบร้ อยแล้ ว ซีพียกู ลับมาจัดการโปรเซสนัน้ เพื่อให้ เสร็จ
งานและเปลี่ยนสถานะเป็ น “พร้ อม”
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 42
โครงสร้
โครงสร้าางพื งพืน้น
้ ฐานการซ
ฐานการซน ิน
ิ โคร
โคร
ไนซ
ไนซ
การแก้ ปัญหา busy waiting ์
มี 5์ วิธีคือ
Disable Interrupt
Lock Variable
Strict Alternation
Peterson’s Solution
TSL Instruction
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 43
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
Disable Interrupt
เป็ นการยกเลิกอินเทอร์ รัพต์
ซีพียทำ
ู งานได้ อย่างต่อเนื่องโดยไม่สนใจอินเทอร์ รัพต์
โปรเซสที่อยูใ่ น CR ได้ เอ็กซิคิวต์จนเสร็ จเรี ยบร้ อย ไม่เกิด Race
Condition
เมื่อออกจาก CR ไปแล้ ว ซีพียจ ู งึ สนใจอินเทอร์ รัพต์
ใส่คำสัง่ Disable Interrupt ไว้ ตอนต้ นของโปรเซสก่อนเข้ า CR
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 44
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 46
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
Strict Alternation
ใช้ การสลับการเข้ า CR ของโปรเซส 2 โปรเซส
กำหนดตัวแปรที่ทำให้ เกิดการสลับกันเข้ า CR ของโปรเซส
เรื่ อยไปจนกว่างานจะเสร็จ
ข้ อเสีย :
ใช้ ได้ เฉพาะ โปรเซส 2 โปรเซสเท่านัน้
เกิด busy waiting ซึง่ ยังคงใช้ ซีพียอ
ู ยู่ แต่ไม่เกิดประโยชน์
ถ้ าเวลาที่ใช้ ในการประมวลของโปรเซสทังสองต่ ้ างกันมาก ทำให้
โปรเซสหนึง่ ไปขวางหรื อกีดกันไม่ให้ โปรเซสอื่นเข้ า CR ได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 47
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
Peterson’s Solution
มีการแชร์ ตวั แปร (turn) และมี 2 โปรซีเดอร์ (enter_region และ
leave_region) โดยใช้ หมายเลขโปรเซสของตนเองเป็ นพารามิเตอร์
การเรี ยก enter_region ทำให้ เกิดการรอจนกว่าจะปลอดภัยในการ
เข้ า เมื่อใช้ ตวั แปรที่แชร์ นี ้เสร็จแล้ ว จะเรี ยก leave_region เพื่อแจ้ ง
ให้ โปรเซสอื่นทราบว่าทำงานเสร็จแล้ ว และยอมให้ โปรเซสอื่นเข้ าได้
เช่น ถ้ าโปรเซส 0 เข้ า CR จะกำหนดค่า turn=0 ในขณะที่โปรเซส 1
เรี ยก enter_region จะรอจนกว่า interested[0] เป็ น False ซึง่ จะ
เกิดเมื่อโปรเซส 0 เรี ยก leave_region
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 48
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
Peterson’s Solution
ถ้ าโปรเซสทังสองเรี
้ ยก enter_region พร้ อมกัน โปรเซสทัง้
สองจะเก็บค่าลงใน turn เมื่อเก็บค่าเสร็จค่าเก่าจะหายไป
เช่น ถ้ าโปรเซส 1 เก็บค่าหลังสุด ค่า turn=1 เมื่อโปรเซสทัง้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 49
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
TSL Instruction (Test Set Lock Instruction)
ช่วยแก้ ปัญหา Lock Variable โดยทำ Test Set Lock ใน ขันตอน ้
เดียวกัน
อ่านค่าจากหน่วยความจำมาเก็บในรี จิสเตอร์ แล้ ว Set ค่าในหน่วย
ความจำเป็ น 1
การอ่านและการเก็บค่าในหน่วยความจำทำให้ โปรเซสเซอร์ ไม่
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 50
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
TSL Instruction (Test Set Lock Instruction)
การใช้ คำสัง่ TSL จะต้ องแชร์ ตวั แปร Lock ในการใช้ หน่วย
ความจำที่แชร์
เมื่อตัวแปร Lock มีการค่าเป็ น 0 โปรเซสอื่นจะเซ็ตให้ เป็ น 1
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 51
Mutual
Mutual Exclusion
Exclusion with
with busy
busy waiting
waiting
TSL Instruction (Test Set Lock Instruction)
เมื่อโปรเซสต้ องการเข้ า CR จะเรี ยก enter_region แล้ วก็อปปี ค ้ า่ เดิมของ
Lock ไปไว้ ที่รีจิสเตอร์ แล้ วเซ็ต Lock=1
เปรี ยบเทียบค่าเดิมกับ 0 ถ้ าไม่ใช่ ค่า Lock=1 แล้ วกลับไปจุดเริ่ มต้ นเพื่อตรวจ
สอบอีกครัง้
จนกระทัง่ เป็ น 0 (เมื่อโปรเซสเข้ า CR เรี ยบร้ อยแล้ ว) รู ทีนย่อยจะให้ คา ่
Lock=1 ในขณะที่การเคลียร์ คา่ ทำได้ โดยให้ คา่ 0 กับ Lock
รู ทีนย่อยทังสองจะทำงานทำงานสั
้ มพันธ์กนั ในช่วงเวลาที่เหมาะสม ก่อนเข้ า
CR โปรเซสจะเรี ยก enter_region เมื่อเสร็จจะเรี ยก leave_region ซึง่ ทำให้
Lock=0 เรื่ อยไป
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 52
โครงสร้
โครงสร้าางพื ้น
งพืน้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซ์ ์
ไนซ
Sleep and Wakeup
การที่มีโปรเซสอยูใ่ น CR โปรเซสอื่นยังไม่อนุญาตให้ เข้ า CR
ก็ต้องรอจนกว่าโปรเซสนันจะออกมาเป็
้ นสิง่ ที่ถกู ต้ อง
แต่บางครัง้ สิทธ์ การเข้ า CR ไม่เท่ากัน ทำให้ โปรเซสที่มีสท ิ ธิ์
สูงกว่าได้ เข้ าก่อน (ถึงแม้ โปรเซสอื่นจะมาก่อนก็ตาม)
น่าจะใช้ การบล็อกแทนการหยุดรอเพื่อเข้ า CR
การบล็อกที่ดีที่สด ุ คือ Sleep and Wakeup
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 53
โครงสร้
โครงสร้าางพื ้น
งพืน้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซ์ ์
ไนซ
Sleep and Wakeup
Sleep เป็ น system call เพื่อบล็อกให้ โปรเซสหยุดทำงาน
จนกว่าจะมีโปรเซสอื่นมาปลุก
Wakeup เป็ น system call ที่ปลุกให้ โปรเซสทำงานต่อ
ทัง้ Sleep และ wakeup ทำงานสลับกัน จึงต้ องมีการใช้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 54
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Sleep and Wakeup
ปั ญหา Producer-Consumer เป็ นตัวอย่างที่งา ่ ยที่สดุ ของ Sleep
and Wakeup
ทัง้ 2 ส่วนจะแชร์ บฟ ั เฟอร์ ร่วมกันในขนาดที่คงที่
ในที่นี ้สมมุติมี Producer และ Consumer อย่างละ 1 ตัว
และจะหยุดการผลิตเมื่อบัฟเฟอร์ เต็ม
Consumer จะนำข้ อมูลจากบัฟเฟอร์ ไปใช้ (ต้ องมีอย่างน้ อย 1
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 55
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Sleep and Wakeup
Producer จะ Sleep ตัวเองเมื่อบัฟเฟอร์ เต็ม และจะ Wakeup ให้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 56
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Sleep and Wakeup
ขนาดของบัฟเฟอร์ กำหนดได้ ด้วยตัวแปร count (สมมุติเก็บได้ N ชุด)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 57
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Semaphore
เป็ นตัวแปรจำนวนเต็มเพื่อนับจำนวน Wakeup
ค่าเริ่ มต้ นเป็ น 0 แสดงว่าไม่มี Wakeup
ถ้ าค่าเป็ นบวกแสดงว่ามี Wakeup
Dijkstra ยังได้ เสนอปฏิบต ั ิการ Down และ Up
Down จะตรวจสอบค่าตัวแปร ถ้ ามากกว่า 0 จะลดค่าแล้ ว
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 58
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Semaphore
การตรวจสอบเป็ นขันตอนเดี
้ ยวเรี ยกว่า indivisible
atomatic action
ปฏิบต ั ิการของ Semaphore เป็ นปฏิบตั ิการเดียวที่ทำให้
โปรเซสอื่นไม่สามารถแอ็กเซส Semaphore ได้ จนกว่าจะ
เสร็ จสมบูรณ์หรื อถูกบล็อก ทำให้ ชว่ ยแก้ ปัญหาการ ซิ
นโครไนซ์ และหลีกเลี่ยงการเกิด Race Condition
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 59
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Semaphore
ปฏิบต ั ิการ Up จะเพิ่มค่าของแอ็ดเดรส Semaphore
ถ้ ามีโปรเซส sleep บน Semaphore นัน ้ ปฏิบตั ิการ Down จะไม่
สามารถเสร็จสิ ้นได้
ระบบจะปิ ดบางตัว และทำให้ เสร็ จสิ ้นได้ ทำให้ เกิดปฏิบตั ิการ Up บน
Semaphore
ทำให้ เพิ่มค่า Semaphore ขึ ้นอีก 1 ทำให้ Wakeup ได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 60
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Semaphore
Semaphore มี 2 ชนิดคือ Binary Semaphore ที่มี 2 ค่าคือ
0 และ 1 เช่น mutex ที่ทำหน้ าที่ควบคุมการเช้ า CR หรื อ
ทำให้ เกิด Mutual Exclusion
Counting Semaphore เป็ น Semaphore ตัวนับ ทำหน้ าที่
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 61
โครงสร้
โครงสร้าางพื ้น
งพืน
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซ์ ์
ไนซ
Event Counter
เป็ นตัวแปร integer ที่นบั เหตุการณ์ที่เกิดขึ ้น
มีปฏิบต ั ิการ 3 ปฏิบตั ิการคือ Read, Advance และ Await
มี &in เป็ นตัวแปรที่นบ ั จำนวนครัง้ ที่ใส่ข้อมูลในบัฟเฟอร์
และมี &out เป็ นตัวแปรที่นบั จำนวนครัง้ ที่นำข้ อมูลออกจาก
บัฟเฟอร์
Sequence ใน Producer เป็ นตัวนับจำนวนชิ ้นที่ผลิต
Sequence ใน Consumer เป็ นตัวนับจำนวนชิ ้นที่ถก ู นำไป
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 62
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Mutex
เป็ น Semaphore อย่างง่ายที่ใช้ จด ั การ Mutual Exclusion กับ
รี ซอร์ สที่แชร์
มีสภาวะ unlocked (ใช้ 0) และ Locked (ใช้ เลขอื่น)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 63
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Mutex
ถ้ ามีการบล็อกจากหลายโปรเซสพร้ อมกัน จะมีการสุม่ เลือก
โปรเซสเข้ า CR
mutex_locked ต่างจาก enter_region ตรงที่ enter_region
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 64
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Monitor
ปฏิบต ั ิการ Down 2 ปฏิบตั ิการในโค้ ดของ Producer ที่เรี ยงย้ อนกลับ
Mutex จะลดค่าก่อน empty แทนที่จะลดค่าภายหลัง
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 65
โครงสร้
โครงสร้าางพื
งพืน้น
้ ฐานการซ
ฐานการซนิน
ิ โคร
โคร
ไนซไนซ์ ์
Monitor
สภาวะเช่นนี ้เรี ยกว่า “Deadlock”
การป้องกันข้ อผิดพลาดทำให้ มีการเสนอแนวทางการเขียน
ข้ อมูลที่รวมกันเป็ นแพ็คเกจเพื่อช่วยควบคุมการซินโครไนซ์
ในการจัดการ Mutual Exclusion กับรี ซอร์ สที่ใช้ ร่วมกัน
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 66
ปป
ั ั ญหาการทำงานของโปรเซส
ญหาการทำงานของโปรเซส
The Dining Philosophers Problem (โต๊ ะอาหารสำหรับการแก้ ไขปั ญหา)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 67
ปป
ั ั ญหาการทำงานของโปรเซส
ญหาการทำงานของโปรเซส
The Dining Philosophers Problem
นักปราชญ์ 5 ท่านนัง่ ทานอาหารรอบโต๊ ะกลม
นักปราชญ์ แต่ละท่านต้ องใช้ ตะเกียบทัง้ 2 ข้ างซ้ าย-ขวา
เกิด “Starvation”
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 68
ปป
ั ั ญหาการทำงานของโปรเซส
ญหาการทำงานของโปรเซส
The Dining Philosophers Problem
เพื่อป้องกันปั ญหาจะใช้ binary semaphore ก่อนหยิบตะเกียบจะใช้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 69
ปป
ั ั ญหาการทำงานของโปรเซส
ญหาการทำงานของโปรเซส
The Readers-Writers Problem
มี 2 โปรเซสที่ทำงานร่วมกันคือโปรเซสอ่านข้ อมูล และ
โปรเซสเขียนข้ อมูล
การอ่านและการเขียนสามารถมีได้ หลายโปรเซสพร้ อมกัน
โปรเซสการอ่านสามารถทำได้ ครัง้ ละหลาย ๆ โปรเซส ส่วน
การเขียนจะกระทำได้ เพียงโปรเซสเดียวในเวลานัน้
การใช้ Monitor หรื อการซินโครไนซ์อื่น ๆ ไม่สามารถจัดการ
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 70
ปป
ั ั ญหาการทำงานของโปรเซส
ญหาการทำงานของโปรเซส
The Readers-Writers Problem
ต้ องคำนึงการรอคอยด้ วย เพราะผู้อา่ นสามารถอ่านข้ อมูล
ได้ ตลอดเวลา ถ้ ามีผ้ อู า่ นเข้ ามาตลอดเวลา ผู้เขียนก็จะไม่
สามารถทำงานได้ หรื อถ้ าเราให้ สทิ ธิ์ผ้ เู ขียนมากกว่า ก็จะ
ทำให้ ผ้ อู า่ นไม่สามารถอ่านข้ อมูลได้
การแก้ ปัญหาต้ องใช้ การจัดคิว ถ้ ามีผ้ เู ขียนอยูก ่ ่อนแล้ ว มีผ้ ู
อ่านเข้ ามาก็ต้องรอก่อน จะทำให้ ทงผู ั ้ ้ อา่ นและผู้เขียนไม่ต้อง
รอนาน
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 71
ปป
ั ั ญหาการทำงานของโปรเซส
ญหาการทำงานของโปรเซส
The Sleeping Barber Problem
มีชา่ งตัดผม 1 คน, โต๊ ะตัดผม 1 ตัว และเก้ าอี ้รออีกจำนวนหนึง่
ถ้ าไม่มีลกู ค้ าช่างตัดผมจะนอนพักผ่อน
เมื่อลูกค้ าคนแรกเข้ ามาก็นงั่ บนโต๊ ะตัดผม
ถ้ าระหว่างนันเข้ ้ ามาเพิ่มอีก
นัง่ รอ (ถ้ ามีเก้ าอี ้ว่าง)
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 72
Thread
Thread
Thread เป็ นส่วนย่อยของโปรเซสที่เรี ยกว่า “Lightweight
Process”
ก็คือแต่ละโปรเซสมีหลาย Thread นัน ่ เอง
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 73
Thread
Thread
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 74
Thread
Thread
ส่วนประกอบของ Thread
หมายเลข Thread
ตัวนับ : ติดตามให้ ทราบคำสัง่ ต่อไปที่จะเอ็กซิคิวต์
ชุดของรี จิสเตอร์ : เก็บค่าตัวแปรที่ทำงานอยู่
สแต็ก : เก็บประวัติการเอ็กซิคิวต์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 75
Thread
Thread
ภายในโปรเซสที่ประกอบด้ วย Thread จะมีการแชร์ รีซอร์ ส
ถ้ า 1 โปรเซสควบคุม 1 Thread จะเรี ยกว่า “Single-
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 76
Thread
Thread
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 77
Thread
Thread
ข้ อได้ เปรี ยบของ Multithreaded
การตอบสนอง
การแชร์ รีซอร์ ส
ความประหยัด
การเอื ้อประโยชน์ของสถาปั ตยกรรมมัลติโปรเซสเซอร์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 78
Thread
Thread
การสนับสนุนของ Thread
User Thread : สนับสนุนจาก Kernel ด้ านบน และอยูใ่ นไลบรารี
ของ thread ในระดับผู้ใช้ ไลบรารี สนับสนุนการสร้ าง, จัดเวลา และ
จัดการ thread โดยไม่ต้องได้ รับการสนับสนุนจาก kernel เนื่องจาก
Kernel ไม่ต้องยุง่ เกี่ยวกับ Thread ระดับผู้ใช้ การจัดการ thread
จะทำในพื ้นที่ของ ผู้ใช้ โดยไม่จำเป็ นต้ องใช้ Kernel ทำให้ thread
ในระดับผู้ใช้ นี ้สามารถสร้ างและจัดการได้ อย่างรวดเร็ ว ถ้ า kernel
เป็ น single thread แล้ ว user thread นี ้จะบล็อก system call จน
เป็ นเหตุให้ ทกุ โปรเซสถูกบล็อก
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 79
Thread
Thread
การสนับสนุนของ Thread
Kernel Thread : ได้ รับการสนับสนุนโดยตรงจากระบบปฏิบตั ิ
การ โดยจะสร้ าง, จัดเวลา และจัดการ thread ภายใน Kernel เอง
เนื่องจากได้ รับการสนับสนุนจากระบบปฏิบตั ิการ ทำให้ Kernel
thread สร้ างและจัดการได้ ช้ากว่า user thread แต่เนื่องจาก
kernel จัดการเกี่ยวกับ thread เอง ดังนัน้ thread เกิดการบล็อก
system call จะทำให้ kernel นันดึ
้ ง thread อื่นเข้ าไปเอ็กซิคิวต์
แทนได้
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 80
Thread
Thread
โมเดลของ MultiThread
Many-to-One : 1 Kernel
กับหลาย User thread การ
จัดการ threadอยูใ่ นพื ้นที่
ของผู้ใช้ ซงึ่ มีประสิทธิภาพ
แต่ถ้า thread บล็อก
system call จะทำให้ โปรเซ
สถูกบล้ อกไปด้ วย
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 81
Thread
Thread
โมเดลของ MultiThread
One-to-One : 1 Kernel กับ 1
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 82
Thread
Thread
โมเดลของ MultiThread
Many-to-many : User thread
มากว่าหรื อเท่ากับ Kernel thread ได้
kernel thread กำหนดแอปพลิเคชัน
Many-to-One ยอมให้ ผ้ พ ู ฒ
ั นา
สร้ าง user thread ได้ ตามต้ องการ
แต่ไม่สามารถรันได้ พร้ อมกัน
เนื่องจาก Kernel จัดเวลาให้ ครัง้ ละ
thread
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 83
Thread
Thread
โมเดลของ MultiThread
Many-to-many : User thread มากว่าหรื อเท่ากับ Kernel thread ก็ได้
One-to-One ยอมให้ รันพร้ อมกันได้ ผู้พฒ ั นาระวังอย่าสร้ าง thread
มากเกินไป
ลดข้ อจำกัดของโมเดลทังสอง ้
ผู้พฒั นาสร้ าง thread ได้ เท่าที่จำเป็ น และสัมพันธ์กบั Kernel
สามารถรันแบบขนานในระบบมัลติโปรเซสเซอร์
เมื่อ thread เกิดการบล็อก system call แล้ ว kernel จะจัดเวลา
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 84
Thread
Thread
การยกเลิก Thread
เป็ นการทำให้ thread จบการทำงานก่อนจะเสร็ จสมบูรณ์
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 85
Thread
Thread
การยกเลิก Thread
ใน Deferred จะมี thread หนึง่ กำหนดว่า target thread ใด
ถูกยกเลิก ซึง่ target thread ตรวจสอบตัวเอง การที่ยอมให้
thread ตรวจสอบเพื่อยกเลิกในจุดที่ความปลอดภัย
จุดนี ้ใน Pthread API เรี ยกว่า Cancellation Point
ส่วนมากระบบปฏิบต ั ิการยอมให้ ยกเลิกแบบ
Asynchronous
ในขณะที่ Pthread API ยอมให้ ยกเลิกแบบ Deferred ด้ วย
ระบบปฏิบต
ั ก
ิ าร (Operating Systems) 86