บทที่ 3 การจัดการโปรเซสและเทรด
นาย ธนโชติ ฟ้าคะนอง เลขที่ 5
บทที่ 3
การจัดการโปรเซส และเทรด
การจัดการโปรเซส และเทรด
การจัดการโปรเซส Process Management
โปรเซส คือ โปรแกรมที่กาลังทางานอยู่ (Execute)ซึ่งในขณะที่โปรเซสกาลังเอ็กซิคิวอยู่นั้นจะมีการใช้ทรัพยากร (Resource) ของระบบ เช่น CPU, หน่วยความจำ, ไฟล์หรืออุปกรณ์อินพุต/เอาต์พุต
องค์ประกอบของโปรเซส Process
Process
-Process ID - หมายเลขโปรเซส มีไว้เพื่อกำหนดลำดับการเอ็กซิคิวต์ -Program Code - โค้ดคำสั่งที่เป็นภาษาเครื่องสามารถเอ็กซิคิวต์ได้ทันที -Data - ใช้สำหรับเก็บข้อมูลเพื่อสนับสนุนโปรเซสเอ็กซิคิวต์โปรแกรม-ProcessControlBlock(PCB) -ตารางข้อมูลที่ใช้เก็บข้อมูลต่างๆที่เกี่ยวข้องกับแต่ละกระบวนการ -Program Status Word(PSW) - ควบคุมลำดับการเอ็กซิคิวต์คำสั่งและเก็บที่อยู่ของคำสั่งที่เอ็กซิคิวต์ต่อไป -Property - คุณสมบัติของโปรเซส เช่นลำดับความสาคัญ,อำนาจหน้าที่ที่โปรเซสทำอะไรได้บ้าง สถานะของโปรเซส
การจัดเวลาของโปรเซส การจัดเวลาของโปรเซส มีขั้นตอนดังนี้
-จุดประสงค์หลัก ต้องการใช้ซีพียูอย่างคุ้มค่ามากที่สุด
-โปรเซสจะครอบครองซีพียูได้ครั้งละ 1โปรเซสเท่านั้น
-ระบบปฏิบัติการจะจัดหาหน่วยความจำให้แก่โปรเซส
-เมื่อโปรเซสถูกสร้างจะถูกเก็บอยู่ในคิวพร้อม
-ในระบบหลายโปรแกรมจะเกิดปัญหามาก
-โปรแกรมที่ถูกส่งมารันจะถูกจัดเข้าคิว
-โดยหลักการเบื้องต้นโปรเซสถูกรันจนกระทั่งสิ้นสุดกระบวนการ
เวลาควอนตัม(Quantum Time) คือระยะเวลาที่ระบบปฏิบัติการกาหนดไว้ให้กับโปรเซสในการอยู่ในสถานะRunning ของโปรเซสซึ่งจะเป็นระยะเวลาหน่วยเล็กที่สุด
3.1) ดีไวซ์คิว (Device Queue) สำหรับคิวของโปรเซสที่รอการตอบสนองจากการใช้อินพุต/เอาต์พุตดีไวซ์เรียกว่า “ดีไวซ์คิว (device queue)”3.2) คอนเท็กซ์สวิตช์ (Context switch) -เมื่อมีการเปลี่ยนสถานะการทำงานของ Process ในซีพียูจะต้องมีการเก็บสถานะปัจจุบันของกระบวนการเดิมไว้ใน PCB(Process Control Box) ก่อนแล้วค่อยโหลดสถานะของกระบวนการใหม่เข้ามา
4.1การสร้างโปรเซส -
กระบวนการหนึ่งๆ อาจสร้างกระบวนการใหม่เกิดขึ้น
โดยการใช้คาสั่งเรียกระบบสร้างกระบวนการ และกระบวนการใหม่ๆ
ที่เกิดขึ้นมานั้นอาจจะสร้างกระบวนการใหม่ๆ ต่อไปได้อีก - กระบวนการที่เป็นผู้สร้าง เรียกว่า กระบวนการแม่ (Parent Process) กระบวนการใหม่ที่ถูกสร้างขึ้นมาเรียกว่า กระบวนการลูก (Children Process)
การสร้างโปรเซสแม่และโปรเซสลูก หลังจากสร้างกระบวนการย่อยแล้ว โปรเซสแม่อาจทำงาน (execute) ได้ 2 วิธี -กระบวนการแม่ ทำงานพร้อมๆ กัน (concurrent) ไปกับกระบวนการลูก -กระบวนการแม่คอยจนกระทั่ง กระบวนการลูกทั้งหมด สิ้นสุดการทำงาน ในการระบุพื้นที่ว่างของกระบวนการใหม่(โปรเซสลูก) ทำได้ 2วิธี คือ -กระบวนการลูกทำสำเนา (duplicate) มาจากกระบวนการแม่ (จำลองมา) -กระบวนการลูกมีโปรแกรมที่ถูก load เข้ามาเอง (สร้างเอง)โอเปอร์เรชันของโปรเซส
4.2การสิ้นสุดของโปรเซสการสิ้นสุดโปรเซสด้วยเหตุผลดังนี้ •โปรเซสลูกใช้ทรัพยากรมากเกินกว่าที่กาหนดไว้ •ไม่มีความจำเป็นต้องใช้โปรเซสลูกอีกต่อไป •โปรเซสแม่สิ้นสุดลงไปแล้วและระบบปฏิบัติการไม่ยินยอมให้เอ็กซิคิวต์โปรเซสลูก เมื่อโปรเซสสิ้นสุดไป โปรเซสสื่อประสารการทำงานร่วมกันของโปรเซสมีดังนี้ •
การแชร์ข้อมูลข่าวสาร :
เนื่องจากผู้ใช้อาจต้องการข้อมูลเดียวกันในเวลานั้น
ระบบปฏิบัติการจะต้องเตรียมการเพื่อตอบสนองความต้องการของผู้ใช้ •
การเพิ่มความเร็วในการคำนวณ ด้วยหลักการง่ายๆ :
การที่จะเพิ่มความเร็วในระบบได้นั้น
ระบบหรือคอมพิวเตอร์จะต้องเป็นแบบมัลติโปรเซสซิง • ความสะดวก •IPC (InterProcessCommunication) จัดเตรียมกลไกลในการให้โปรเซสติดต่อสื่อสารและประสานงาน (Synchronize) กับกิจกรรมต่างๆ ของโปรเซส • ระบบข้อความ (Message System) เป็นระบบที่ดีที่สุดในการสนับสนุนการสื่อสารระหว่างโปรเซส
การติดต่อระหว่างโปรเซสการติดต่อแบบทางตรง (Direct Communication)
*การทำงานแบบทางตรง Process A จะรอจนกระทั้ง Process B ดึงข้อมูลเสร็จสิ้นแล้วจึงทำการวางข้อมูลใหม่ลงใหม่
เพื่อป้องกันข้อมูลขาดหาย ทำเช่นนี้จนกว่าข้อมูลจะหมด
กลไกที่ในการตรวจสอบเวลาที่เหมาะสมในการรับ-ส่งข้อมูลนี้เรียกว่า“การซินโครไนซ์โปรเซส” โครงสร้างพื้นฐาน (Basic Structure) ระบบข่าวสาร (Message System) คือระบบติดต่อสื่อสารของโปรเซสที่ไม่จาเป็นต้องใช้ตัวแปรร่วม (Share Variable) IPC แบ่งการทางานออกเป็น 2 ส่วนคือ •Send (Message) •Receive (Message) ถ้าโปรเซสใดต้องการ Message จากโปรเซสอื่น จะส่งคาร้องขอไปยังโปรเซสนั้นโปรเซสที่ถูกร้องขอจะส่ง Message นั้นไปให้การติดต่อระหว่างโปรเซส
การติดต่อแบบทางตรง (Direct Communication) • ถ้ากระบวนการ A และ B ต้องการติดต่อสื่อสารกัน ต้องส่งและรับข้อความซึ่งกันและกันผ่านหน่วยความจาร่วม • ขนาดของหน่วยความจำร่วมจะมีขนาดคงที่หรือไม่ก็ได้ • ก่อนจะมีการรับส่งข้อความจะต้องมีการสร้างลิงค์ให้พร้อม ทั้งลิงค์ทางกายภาพ (Physical) และทางตรรกะ (Logical)
คุณสมบัติการติดต่อแบบทางตรง (Direct Communication) • การสร้างลิงค์เป็นแบบอัตโนมัติระหว่างคู่โปรเซสที่ต้องการติดต่อ โปรเซสจะทราบหมายเลขโปรเซสที่จะติดต่อด้วย • ลิงค์หนึ่งๆ จะมีความสัมพันธ์เฉพาะโปรเซสสองโปรเซสเท่านั้น • ระหว่างโปรเซสแต่ละคู่จะมีเพียงลิงค์เดียวเท่านั้น • ลิงค์นี้เป็นแบบทิศทางเดียวและสองทิศทาง ปกติจะเป็นสองทิศทาง
การติดต่อแบบทางอ้อม (Indirect Communication) โดยจะติดต่อผ่านเมลล์บ็อกซ์ (Mailbox) อาจเรียกว่า พอร์ต (Port)
เมลล์บ็อกซ์เป็นออปเจ็กต์ที่เก็บแมสเสจจากโปรเซสหนึ่งเพื่อส่งไปอีกโปรเซสหนึ่งแต่ละเมลล์บ็อกซ์จะมีหลายเลขที่ไม่ซ้ำากับเมลล์บ็อกซ์อื่น
วิธีนี้ก็จะทำให้สามารถติดต่อโปรเซสอื่นผ่านทางเมลล์บ็อกซ์ได้หลายเมลล์บ็อกซ์ที่แตกต่างกันได้
ระบบปฏิบัติการมีกล่องรับจดหมายเป็นของตัวเอง โดยจะมีกลไกในการอนุญาตให้Process ใช้งาน mailbox ดังนี้• สร้าง mailbox ใหม่• ส่งและรับข้อความผ่าน mailbox• ลบหรือทำลาย mailbox
คุณสมบัติการติดต่อแบบทางอ้อม (Indirect Communication)• จะมีการสร้างลิงค์ระหว่างโปรเซสที่มีการแชร์เมลล์บ็อกซ์เท่านั้น (ใช้ mailbox ร่วมกัน)• ลิงค์ๆ หนึ่ง อาจจะมีความสัมพันธ์มากกว่าสองโปรเซสได้• ระหว่างโปรเซสแต่ละคู่นั้นอาจจะมีหลายลิงค์ที่ต่างกันได้ แต่ละลิงค์จะมีเพียง เมลล์บ็อกซ์เดียวเท่านั้น• การลิงค์อาจจะเป็นทิศทางเดียวหรือสองทิศทางก็ได้
การติดต่อแบบทางอ้อม (Indirect Communication)รูปแบบของ mailbox มี 3 แบบ คือ-เมลล์บ็อกซ์แบบคิว (Queue Mailbox) ตามลำดับก่อน-หลัง และความยาวคงที่-เมลล์บ็อกซ์แบบไปป์(Pipe Mailbox) เข้าก่อนถูกนำไปใช้ก่อน ความยาวไม่จำกัด-เมลล์บ็อกซ์แบบสแต็ก (Stack Mailbox)เข้าก่อนออกทีหลัง-เมลล์บ็อกซ์แบบคิว (Queue Mailbox) เป็นโครงสร้างที่ดึงข้อมูลออกจากเมลล์บ็อกซ์ตามลำดับก่อน-หลัง
ของข้อมูลที่ส่งเข้ามา
นั่นคือข้อมูลใดส่งเข้ามาในเมลล์บ็อกซ์ก่อนก็จะถูกดึงออกไปก่อนส่วนข้อมูลใดส่งเข้ามาภายหลังก็จะถูกดึงออกไปภายหลังเรียกการทำงานแบบนี้ว่า
FIFO (First InFirst Out)ลักษณะโครงสร้างเมลล์บ็อกซ์แบบคิวเป็นดังรูป
-เมลล์บ็อกซ์แบบไปป์(Pipe Mailbox) เป็นโครงสร้างที่คล้ายกับโครงสร้างแบบคิวข้อแตกต่างระหว่างเมลล์บ็อกซ์แบบคิวกับเมลล์บ็อกซ์แบบไปป์คือเมลล์บ็อกซ์แบบคิวจะมีขนาดบ็อกซ์คงที่ถ้าใส่ข้อมูลมากเกินไปเมลล์บ็อกซ์จะเต็ม
แต่ถ้าเป็นเมลล์บ็อกซ์แบบไปป์ขนาดของบ็อกซ์จะยืดหยุ่นได้ลักษณะโครงสร้างเมลล์บ็อกซ์แบบไปป์เป็นดังรูป
-เมลล์บ็อกซ์แบบสแต็ก(Stack Mailbox) เป็นโครงสร้างตรงข้ามกับเมลล์บ็อกซ์แบบคิวในการดึงข้อมูล
นั่นก็คือข้อมูลใดส่งเข้ามาเมลล์บ็อกซ์ก่อนจะถูกดึงออกไปใช้งานภายหลังโดยจะนำข้อมูลที่ส่งเข้ามาภายหลังออกไปใช้ก่อน
อาจเรียกการทำงานแบบนี้ว่า FILO (First In Last Out)ลักษณะโครงสร้างเมลล์บ็อกซ์แบบสแต็กเป็นดังรูป การซิงโครนัส หมายถึง -การทำงานของโปรเซส 2โปรเซสที่มีความเกี่ยวข้องกัน -ใช้รีซอร์สร่วมกัน -อาจเป็นการรอการเอ็กซิคิวต์โปรเซสหลังจากที่โปรเซสอื่นเอ็กซิคิวซ์ไปแล้วทำให้มีการรอจังหวะที่เหมาะสมเพื่อให้การทำงานนั้นถูกต้อง การซิงโครนัสโปรเซสอธิบาย จะเห็นว่าโปรเซส
B จะเริ่มเอ็กซิคิวต์ได้ก็ต่อเมื่อโปรเซส A
เอ็กซิคิวต์เสร็จเรียบร้อยไปแล้ว (ซึ่งต่างกับโปรเซส C
ที่ไม่ต้องรอโปรเซสใดเลยก้สามารถเอ็กซิคิวต์ได้ทันที
และไม่มีความเกี่ยวข้องกับโปรเซส A และ B เลย)
เธรด (Threads)เธรด หมายถึง ส่วนประกอบย่อยของโปรเซส• แนวคิด OS รุ่นใหม่จะมีหลายThreads• โปรเซสถูกแบ่งย่อยลงไปอีกเป็นส่วนของโค้ดโปรแกรม (Code Program)• อยู่ภายใต้สภาวะแวดล้อม (Environment) เดียวกัน• มีความเป็นอิสระ แยกกันทางาน• ลดเวลาการทางานโปรเซสลงมากเธรด คือ การแบ่งโปรเซสออกเป็นส่วนย่อยๆ อย่างน้อย 1เธรด
องค์ประกอบของเธรด• หมายเลขเธรด เป็นหมายเลขเธรดในโปรเซส• ตัวนับ เพื่อติดตามให้ทราบคำสั่งต่อไปที่จะเอ็กซิคิวต์• ชุดของรีจิสเตอร์ เพื่อเก็บค่าตัวแปรที่ทำงานอยู่• สแต็ก เพื่อเก็บประวัติการเอ็กซิคิวต์
เหตุผลที่ใช้เธรด• โปรเซสที่มีหลายๆ เธรดเหมาะกับการทาหน้าที่เป็น Server เช่น Web Server•เธรดสามารถใช้งานร่วมกันได้ จึงไม่จำเป็นต้องใช้ความสามารถของ OS ในเรื่องการสื่อสารระหว่างโปรเซส ซึ่งกินทรัพยากรมาก•เธรดมีคุณสมบัติพื้นฐานที่เหมาะกับการประมวลผลบนเครื่องที่มีหลายซีพียู เธรดนั้น มีค่าดำเนินการต่ำาในประเด็นที่ว่า -เธรดแต่ละตัวต้องใช้ทรัพยากรที่เป็นส่วนน้อยมาก -เธรดใช้ทรัพยากรของระบบปฏิบัติการน้อยมาก และสามารถใช้ทรัพยากรต่างๆรวมกับเธรดอื่นได้ -การทำการสลับการทำงานระหว่างเธรดต่างๆ (Context Switch) นั้นสามารถทำได้อย่างรวดเร็ว
ปัญหาการทำงานของโปรเซส - การตัดตอน (Preemptive) ถ้ามีโปรเซสอื่น(ที่มีความสาคัญสูงกว่า)
มาแย่งการครอบครองทรัพยากรของโปรเซสแรก
โปรเซสแรกต้องหยุดการครอบครองลงชั่วคราวและปลดปล่อยทรัพยากรนั้น -การอดตาย (Starvation) หรือ การเลื่อนไปอย่างไม่มีวันสิ้นสุด (Infinite Postponement)โปรเซสที่มีความสำคัญน้อยกว่า
จะต้องรอให้โปรเซสที่มีความสำคัญสูงกว่าเข้าครอบครองทรัพยากร
ซึ่งต้องรออย่างไม่มีวันสิ้นสุดปัญหาการทางานของโปรเซส - การตัดตอนไม่ได้ (Non-Preemptive) ถ้ามีโปรเซสอื่นมาแย่งการครอบครองทรัพยากรของโปรเซสหนึ่ง โปรเซสนี้ไม่ต้องปลดปล่อยทรัพยากรที่มันครอบครองอยู่ เช่น เครื่องพิมพ์ (Printer) - การติดตาย (Deadlock) การทางานของโปรเซสที่มีการครอบครองทรัพยากรแบบ
“ตัดตอนไม่ได้” และการครอบครองแบบ “ไม่เกิดร่วมกัน” คือ
โปรเซสเข้าไปครอบครองทรัพยากรได้ครั้งละ 1โปรเซส
มีการรอการใช้ทรัพยากรเป็นวงรอบ (Circular Waiting)
การติดตาย (Deadlock)
สถานะของโปรเซส
การจัดเวลาของโปรเซส
การจัดเวลาของโปรเซส มีขั้นตอนดังนี้
-จุดประสงค์หลัก ต้องการใช้ซีพียูอย่างคุ้มค่ามากที่สุด
-โปรเซสจะครอบครองซีพียูได้ครั้งละ 1โปรเซสเท่านั้น
-ระบบปฏิบัติการจะจัดหาหน่วยความจำให้แก่โปรเซส
-เมื่อโปรเซสถูกสร้างจะถูกเก็บอยู่ในคิวพร้อม
-ในระบบหลายโปรแกรมจะเกิดปัญหามาก
-โปรแกรมที่ถูกส่งมารันจะถูกจัดเข้าคิว
-โดยหลักการเบื้องต้นโปรเซสถูกรันจนกระทั่งสิ้นสุดกระบวนการ
เวลาควอนตัม(Quantum Time) คือระยะเวลาที่ระบบปฏิบัติการกาหนดไว้ให้กับโปรเซสในการอยู่ในสถานะRunning ของโปรเซสซึ่งจะเป็นระยะเวลาหน่วยเล็กที่สุด
3.1) ดีไวซ์คิว (Device Queue) สำหรับคิวของโปรเซสที่รอการตอบสนองจากการใช้อินพุต/เอาต์พุตดีไวซ์เรียกว่า “ดีไวซ์คิว (device queue)”
3.2) คอนเท็กซ์สวิตช์ (Context switch)
-เมื่อมีการเปลี่ยนสถานะการทำงานของ Process ในซีพียูจะต้องมีการเก็บสถานะปัจจุบันของกระบวนการเดิมไว้ใน PCB(Process Control Box) ก่อนแล้วค่อยโหลดสถานะของกระบวนการใหม่เข้ามา
4.1การสร้างโปรเซส
-
กระบวนการหนึ่งๆ อาจสร้างกระบวนการใหม่เกิดขึ้น
โดยการใช้คาสั่งเรียกระบบสร้างกระบวนการ และกระบวนการใหม่ๆ
ที่เกิดขึ้นมานั้นอาจจะสร้างกระบวนการใหม่ๆ ต่อไปได้อีก
- กระบวนการที่เป็นผู้สร้าง เรียกว่า กระบวนการแม่ (Parent Process) กระบวนการใหม่ที่ถูกสร้างขึ้นมาเรียกว่า กระบวนการลูก (Children Process)
การสร้างโปรเซสแม่และโปรเซสลูก
หลังจากสร้างกระบวนการย่อยแล้ว โปรเซสแม่อาจทำงาน (execute) ได้ 2 วิธี
-กระบวนการแม่ ทำงานพร้อมๆ กัน (concurrent) ไปกับกระบวนการลูก
-กระบวนการแม่คอยจนกระทั่ง กระบวนการลูกทั้งหมด สิ้นสุดการทำงาน
ในการระบุพื้นที่ว่างของกระบวนการใหม่(โปรเซสลูก) ทำได้ 2วิธี คือ
-กระบวนการลูกทำสำเนา (duplicate) มาจากกระบวนการแม่ (จำลองมา)
-กระบวนการลูกมีโปรแกรมที่ถูก load เข้ามาเอง (สร้างเอง)โอเปอร์เรชันของโปรเซส
4.2การสิ้นสุดของโปรเซส
การสิ้นสุดโปรเซสด้วยเหตุผลดังนี้
•โปรเซสลูกใช้ทรัพยากรมากเกินกว่าที่กาหนดไว้
•ไม่มีความจำเป็นต้องใช้โปรเซสลูกอีกต่อไป
•โปรเซสแม่สิ้นสุดลงไปแล้วและระบบปฏิบัติการไม่ยินยอมให้เอ็กซิคิวต์โปรเซสลูก เมื่อโปรเซสสิ้นสุดไป
โปรเซสสื่อประสาร
การทำงานร่วมกันของโปรเซสมีดังนี้
•
การแชร์ข้อมูลข่าวสาร :
เนื่องจากผู้ใช้อาจต้องการข้อมูลเดียวกันในเวลานั้น
ระบบปฏิบัติการจะต้องเตรียมการเพื่อตอบสนองความต้องการของผู้ใช้
•
การเพิ่มความเร็วในการคำนวณ ด้วยหลักการง่ายๆ :
การที่จะเพิ่มความเร็วในระบบได้นั้น
ระบบหรือคอมพิวเตอร์จะต้องเป็นแบบมัลติโปรเซสซิง
• ความสะดวก
•IPC (InterProcessCommunication) จัดเตรียมกลไกลในการให้โปรเซสติดต่อสื่อสารและประสานงาน (Synchronize) กับกิจกรรมต่างๆ ของโปรเซส
• ระบบข้อความ (Message System) เป็นระบบที่ดีที่สุดในการสนับสนุนการสื่อสารระหว่างโปรเซส
การติดต่อระหว่างโปรเซส
การติดต่อแบบทางตรง (Direct Communication)
*การทำงานแบบทางตรง Process A จะรอจนกระทั้ง Process B ดึงข้อมูลเสร็จสิ้นแล้วจึงทำการวางข้อมูลใหม่ลงใหม่ เพื่อป้องกันข้อมูลขาดหาย ทำเช่นนี้จนกว่าข้อมูลจะหมด กลไกที่ในการตรวจสอบเวลาที่เหมาะสมในการรับ-ส่งข้อมูลนี้เรียกว่า“การซินโครไนซ์โปรเซส”
โครงสร้างพื้นฐาน (Basic Structure)
ระบบข่าวสาร (Message System) คือระบบติดต่อสื่อสารของโปรเซสที่ไม่จาเป็นต้องใช้ตัวแปรร่วม (Share Variable) IPC แบ่งการทางานออกเป็น 2 ส่วนคือ
•Send (Message)
•Receive (Message)
ถ้าโปรเซสใดต้องการ Message จากโปรเซสอื่น จะส่งคาร้องขอไปยังโปรเซสนั้นโปรเซสที่ถูกร้องขอจะส่ง Message นั้นไปให้การติดต่อระหว่างโปรเซส
การติดต่อแบบทางตรง (Direct Communication)
• ถ้ากระบวนการ A และ B ต้องการติดต่อสื่อสารกัน ต้องส่งและรับข้อความซึ่งกันและกันผ่านหน่วยความจาร่วม
• ขนาดของหน่วยความจำร่วมจะมีขนาดคงที่หรือไม่ก็ได้
• ก่อนจะมีการรับส่งข้อความจะต้องมีการสร้างลิงค์ให้พร้อม ทั้งลิงค์ทางกายภาพ (Physical) และทางตรรกะ (Logical)
คุณสมบัติการติดต่อแบบทางตรง (Direct Communication)
• การสร้างลิงค์เป็นแบบอัตโนมัติระหว่างคู่โปรเซสที่ต้องการติดต่อ โปรเซสจะทราบหมายเลขโปรเซสที่จะติดต่อด้วย
• ลิงค์หนึ่งๆ จะมีความสัมพันธ์เฉพาะโปรเซสสองโปรเซสเท่านั้น
• ระหว่างโปรเซสแต่ละคู่จะมีเพียงลิงค์เดียวเท่านั้น
• ลิงค์นี้เป็นแบบทิศทางเดียวและสองทิศทาง ปกติจะเป็นสองทิศทาง
การติดต่อแบบทางอ้อม (Indirect Communication)
โดยจะติดต่อผ่านเมลล์บ็อกซ์ (Mailbox) อาจเรียกว่า พอร์ต (Port)
เมลล์บ็อกซ์เป็นออปเจ็กต์ที่เก็บแมสเสจจากโปรเซสหนึ่งเพื่อส่งไปอีกโปรเซสหนึ่งแต่ละเมลล์บ็อกซ์จะมีหลายเลขที่ไม่ซ้ำากับเมลล์บ็อกซ์อื่น
วิธีนี้ก็จะทำให้สามารถติดต่อโปรเซสอื่นผ่านทางเมลล์บ็อกซ์ได้หลายเมลล์บ็อกซ์ที่แตกต่างกันได้
ระบบปฏิบัติการมีกล่องรับจดหมายเป็นของตัวเอง โดยจะมีกลไกในการอนุญาตให้Process ใช้งาน mailbox ดังนี้
• สร้าง mailbox ใหม่
• ส่งและรับข้อความผ่าน mailbox
• ลบหรือทำลาย mailbox
คุณสมบัติการติดต่อแบบทางอ้อม (Indirect Communication)
• จะมีการสร้างลิงค์ระหว่างโปรเซสที่มีการแชร์เมลล์บ็อกซ์เท่านั้น (ใช้ mailbox ร่วมกัน)
• ลิงค์ๆ หนึ่ง อาจจะมีความสัมพันธ์มากกว่าสองโปรเซสได้
• ระหว่างโปรเซสแต่ละคู่นั้นอาจจะมีหลายลิงค์ที่ต่างกันได้ แต่ละลิงค์จะมีเพียง เมลล์บ็อกซ์เดียวเท่านั้น
• การลิงค์อาจจะเป็นทิศทางเดียวหรือสองทิศทางก็ได้
การติดต่อแบบทางอ้อม (Indirect Communication)
รูปแบบของ mailbox มี 3 แบบ คือ
-เมลล์บ็อกซ์แบบคิว (Queue Mailbox) ตามลำดับก่อน-หลัง และความยาวคงที่
-เมลล์บ็อกซ์แบบไปป์(Pipe Mailbox) เข้าก่อนถูกนำไปใช้ก่อน ความยาวไม่จำกัด
-เมลล์บ็อกซ์แบบสแต็ก (Stack Mailbox)เข้าก่อนออกทีหลัง
-เมลล์บ็อกซ์แบบคิว (Queue Mailbox)
เป็นโครงสร้างที่ดึงข้อมูลออกจากเมลล์บ็อกซ์ตามลำดับก่อน-หลัง
ของข้อมูลที่ส่งเข้ามา
นั่นคือข้อมูลใดส่งเข้ามาในเมลล์บ็อกซ์ก่อนก็จะถูกดึงออกไปก่อนส่วนข้อมูลใดส่งเข้ามาภายหลังก็จะถูกดึงออกไปภายหลังเรียกการทำงานแบบนี้ว่า
FIFO (First InFirst Out)ลักษณะโครงสร้างเมลล์บ็อกซ์แบบคิวเป็นดังรูป
-เมลล์บ็อกซ์แบบไปป์(Pipe Mailbox)
เป็นโครงสร้างที่คล้ายกับโครงสร้างแบบคิวข้อแตกต่างระหว่างเมลล์บ็อกซ์แบบคิวกับเมลล์บ็อกซ์แบบไปป์คือเมลล์บ็อกซ์แบบคิวจะมีขนาดบ็อกซ์คงที่ถ้าใส่ข้อมูลมากเกินไปเมลล์บ็อกซ์จะเต็ม
แต่ถ้าเป็นเมลล์บ็อกซ์แบบไปป์ขนาดของบ็อกซ์จะยืดหยุ่นได้ลักษณะโครงสร้างเมลล์บ็อกซ์แบบไปป์เป็นดังรูป
-เมลล์บ็อกซ์แบบสแต็ก(Stack Mailbox)
เป็นโครงสร้างตรงข้ามกับเมลล์บ็อกซ์แบบคิวในการดึงข้อมูล
นั่นก็คือข้อมูลใดส่งเข้ามาเมลล์บ็อกซ์ก่อนจะถูกดึงออกไปใช้งานภายหลังโดยจะนำข้อมูลที่ส่งเข้ามาภายหลังออกไปใช้ก่อน
อาจเรียกการทำงานแบบนี้ว่า FILO (First In Last Out)ลักษณะโครงสร้างเมลล์บ็อกซ์แบบสแต็กเป็นดังรูป
การซิงโครนัส หมายถึง
-การทำงานของโปรเซส 2โปรเซสที่มีความเกี่ยวข้องกัน
-ใช้รีซอร์สร่วมกัน
-อาจเป็นการรอการเอ็กซิคิวต์โปรเซสหลังจากที่โปรเซสอื่นเอ็กซิคิวซ์ไปแล้วทำให้มีการรอจังหวะที่เหมาะสมเพื่อให้การทำงานนั้นถูกต้อง
การซิงโครนัสโปรเซส
อธิบาย จะเห็นว่าโปรเซส
B จะเริ่มเอ็กซิคิวต์ได้ก็ต่อเมื่อโปรเซส A
เอ็กซิคิวต์เสร็จเรียบร้อยไปแล้ว (ซึ่งต่างกับโปรเซส C
ที่ไม่ต้องรอโปรเซสใดเลยก้สามารถเอ็กซิคิวต์ได้ทันที
และไม่มีความเกี่ยวข้องกับโปรเซส A และ B เลย)
เธรด (Threads)
เธรด หมายถึง ส่วนประกอบย่อยของโปรเซส
• แนวคิด OS รุ่นใหม่จะมีหลายThreads
• โปรเซสถูกแบ่งย่อยลงไปอีกเป็นส่วนของโค้ดโปรแกรม (Code Program)
• อยู่ภายใต้สภาวะแวดล้อม (Environment) เดียวกัน
• มีความเป็นอิสระ แยกกันทางาน
• ลดเวลาการทางานโปรเซสลงมาก
เธรด คือ การแบ่งโปรเซสออกเป็นส่วนย่อยๆ อย่างน้อย 1เธรด
การติดตาย (Deadlock)
องค์ประกอบของเธรด
• หมายเลขเธรด เป็นหมายเลขเธรดในโปรเซส
• ตัวนับ เพื่อติดตามให้ทราบคำสั่งต่อไปที่จะเอ็กซิคิวต์
• ชุดของรีจิสเตอร์ เพื่อเก็บค่าตัวแปรที่ทำงานอยู่
• สแต็ก เพื่อเก็บประวัติการเอ็กซิคิวต์
เหตุผลที่ใช้เธรด
• โปรเซสที่มีหลายๆ เธรดเหมาะกับการทาหน้าที่เป็น Server เช่น Web Server
•เธรดสามารถใช้งานร่วมกันได้ จึงไม่จำเป็นต้องใช้ความสามารถของ OS ในเรื่องการสื่อสารระหว่างโปรเซส ซึ่งกินทรัพยากรมาก
•เธรดมีคุณสมบัติพื้นฐานที่เหมาะกับการประมวลผลบนเครื่องที่มีหลายซีพียู เธรดนั้น มีค่าดำเนินการต่ำาในประเด็นที่ว่า
-เธรดแต่ละตัวต้องใช้ทรัพยากรที่เป็นส่วนน้อยมาก
-เธรดใช้ทรัพยากรของระบบปฏิบัติการน้อยมาก และสามารถใช้ทรัพยากรต่างๆรวมกับเธรดอื่นได้
-การทำการสลับการทำงานระหว่างเธรดต่างๆ (Context Switch) นั้นสามารถทำได้อย่างรวดเร็ว
ปัญหาการทำงานของโปรเซส
- การตัดตอน (Preemptive)
ถ้ามีโปรเซสอื่น(ที่มีความสาคัญสูงกว่า)
มาแย่งการครอบครองทรัพยากรของโปรเซสแรก
โปรเซสแรกต้องหยุดการครอบครองลงชั่วคราวและปลดปล่อยทรัพยากรนั้น
-การอดตาย (Starvation) หรือ การเลื่อนไปอย่างไม่มีวันสิ้นสุด (Infinite Postponement)
โปรเซสที่มีความสำคัญน้อยกว่า
จะต้องรอให้โปรเซสที่มีความสำคัญสูงกว่าเข้าครอบครองทรัพยากร
ซึ่งต้องรออย่างไม่มีวันสิ้นสุดปัญหาการทางานของโปรเซส
- การตัดตอนไม่ได้ (Non-Preemptive)
ถ้ามีโปรเซสอื่นมาแย่งการครอบครองทรัพยากรของโปรเซสหนึ่ง โปรเซสนี้ไม่ต้องปลดปล่อยทรัพยากรที่มันครอบครองอยู่ เช่น เครื่องพิมพ์ (Printer)
- การติดตาย (Deadlock)
การทางานของโปรเซสที่มีการครอบครองทรัพยากรแบบ
“ตัดตอนไม่ได้” และการครอบครองแบบ “ไม่เกิดร่วมกัน” คือ
โปรเซสเข้าไปครอบครองทรัพยากรได้ครั้งละ 1โปรเซส
มีการรอการใช้ทรัพยากรเป็นวงรอบ (Circular Waiting)














ความคิดเห็น
แสดงความคิดเห็น