Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
บทที่  4  โปรเซส  Processes <ul><li>แนวคิดของโปรเซส  Process Concept </li></ul><ul><li>การลำดับการทำงานของโปรเซส  Process ...
แนวคิดของโปรเซส  Process Concept <ul><li>การที่ระบบปฏิบัติการทำการเอ็กซ์ซีคิวท์หลายๆ โปรแกรมพร้อมกัน </li></ul><ul><ul><li...
สถานะของโปรเซส  Process State <ul><li>เมื่อโปรเซสถูกเอ็กซ์ซีคิวท์ จะเกิดการเปลี่ยนสถานะต่างๆ ขึ้น </li></ul><ul><ul><li>เร...
ไดอะแกรมแสดงการเปลี่ยนแปลงสถานะของโปรเซส  Diagram of Process State
บล๊อกควบคุมโปรเซส  Process Control Block (PCB) <ul><li>สารสนเทศที่สัมพันธ์กับแต่ละโปรเซส  </li></ul><ul><ul><li>สถานะของโป...
Process Control Block (PCB)
CPU Switch From Process to Process การที่หน่วยประมวลผลกลางเปลี่ยนการเอ็กซ์ซีคิวท์โปรเซสหนึ่งไปยังอีกโปรเซสหนึ่ง
คิวการจัดลำดับการทำงานของโปรเซส  Process Scheduling Queues <ul><li>คิวการทำงาน  Job queue   หมายถึงเซ็ตของทุกๆ โปรเซสในระบ...
คิวพร้อมทำงาน และคิวของอุปกรณ์แบบต่างๆ  Ready Queue And Various I/O Device Queues
แสดงขั้นตอนการลำดับการทำงานของโปรเซส  Representation of Process Scheduling
การจัดลำดับการทำงาน  Schedulers <ul><li>ผู้จัดลำดับการทำงานระยะยาว  Long-term scheduler   ทำหน้าที่เลือกโปรเซสที่เหมาะสมไป...
การจัดลำดับการทำงานแบบระยะกลาง  Addition of Medium Term Scheduling
ผู้จัดลำดับการทำงาน  Schedulers (Cont.) <ul><li>ผู้จัดลำดับการทำงานระยะสั้น  Short-term scheduler   จะถูกเรียกให้ทำงานบ่อย...
การสลับสภาพแวดล้อมในการทำงาน  Context Switch <ul><li>เมื่อหน่วยประมวลผลสลับการทำงานไปทำงานกับโปรเซสอื่น ระบบจำเป็นต้องบันท...
การสร้างโปรเซส ใหม่ขึ้น  Process Creation <ul><li>โปรเซสต้นกำเนิด จะทำการสร้างโปรเซสลูก โดยการสร้างโปรเซสใดๆ จะอยู่ในรูปลำ...
Process Creation (Cont.) <ul><li>พื้นที่ของแอดเดรส  Address space </li></ul><ul><ul><li>โปรเซสลูกจะซ้ำกับโปรเซสต้นกำเนิด  ...
โครงสร้างโปรเซสแบบต้นไม้ในระบบยูนิกซ์  Processes Tree on a UNIX System
การสิ้นสุดการทำงานของโปรเซส  Process Termination <ul><li>เมื่อโปรเซสทำการเอ็กซ์ซีคิวคำสั่งสุดท้าย และสอบถามระบบปฏิบัติการเ...
โปรเซสที่ปฏิบัติงานร่วมกัน  Cooperating Processes <ul><li>โปรเซสอิสระจะไม่สามารถกระทำการใดที่กระทบต่อหรือได้รับผลกระทบจากก...
ปัญหาของผู้ผลิตกับผู้บริโภค  Producer-Consumer Problem <ul><li>ตัวอย่างสาธิตของโปรเซสที่ทำงานร่วมกัน ผู้ผลิตโปรเซสจะผลิตสา...
IPC  การสื่อสารระหว่างโปรเซส  Interprocess Communication (IPC) <ul><li>กลไกวิธีที่โปรเซสใช้สื่อสารและการเข้าจังหวะในกิจกรร...
คำถามในการนำไปใช้งาน Implementation Questions <ul><li>การเชื่อมต่อสถาปนาขึ้นอย่างไร  </li></ul><ul><li>การเชื่อมต่อสามารถม...
การสื่อสารข้อมูลทางตรง Direct Communication <ul><li>มักกำหนดให้โปรเซสดังนี้  </li></ul><ul><ul><li>ส่ง ( P,  ข้อความ )  se...
การสื่อสารแบบทางอ้อม  Indirect Communication <ul><li>ข้อถูกส่งมาจากหรือรับมาจากตู้จดหมาย  ( อาจอ้างโดยพอร์ต )  </li></ul><...
การสื่อสารทางอ้อม   Indirect Communication <ul><li>การปฏิบัติงาน  </li></ul><ul><ul><li>สร้างตู้จดหมายขึ้นใหม่  </li></ul>...
Indirect Communication <ul><li>การแบ่งปันตู้จดหมาย  </li></ul><ul><ul><li>P1, P2  และ  P3  แบ่งปันการใช้ตู้จดหมาย  A  ร่วม...
การเข้าจังหวะสัมพันธ์  Synchronization <ul><li>การส่งผ่านข้อความอาจถูกบล๊อกหรือไม่บล๊อกก็ได้ </li></ul><ul><li>การบล๊อก  B...
การทำบัฟเฟอร์  Buffering <ul><li>คิวของข้อความที่ส่งในการเชื่อมต่อ กระทำด้วยวิธีใดวิธีหนึ่งจากสามวิธีดังนี้  </li></ul><ul...
การสื่อสารของไคลเอนท์เซอร์ฟเวอร์  Client-Server Communication <ul><li>ซ๊อคเก็ต Sockets </li></ul><ul><li>การเรียกโพรซีเยอร...
ซ๊อคเก็ต  Sockets <ul><li>ซ๊อคเก็ต หมายถึงจุดสิ้นสุดสำหรับการสื่อสาร  </li></ul><ul><li>เป็นการเชื่อมโยงระหว่าง ไอพีแอดเดร...
การสื่อสารแบบซ๊อคเก็ต  Socket Communication
การเรียกโพรซีเยอร์ระยะไกล  Remote Procedure Calls <ul><li>การเรียกโพรซีเยอร์ระยะไกล เป็นการเรียกโพรซีเยอร์เชิงนัยระหว่างโพ...
การเอ็กซ์ซีคิวท์   Execution of RPC
Remote Method Invocation <ul><li>การร้องขอแมทธอดระยะไกล  ( ในภาษาจาวา )  Remote Method Invocation </li></ul><ul><li>การร้อ...
การจัดเรียงพารามิเตอร์  Marshalling Parameters
เธรด  Threads <ul><li>เธรด หรือโปรเซสขนาดเล็ก เป็นหน่วยพื้นฐานของการเพิ่มประสิทธิภาพการทำงานของหน่วยประมวลผล ที่ประกอบด้วย...
Threads (Cont.) <ul><li>ในงานที่มีหลายเธรด หรือมัลติเธรด เมื่อเธรดของเซอร์ฟเวอร์หนึ่งถูกบล็อกและเข้าสู่สถานะรอคอย เธรดลำดั...
การทำงานหลายเธรดในงานหนึ่งๆ Multiple Threads within a Task
การทำงานของเธรดในโซลาริส  2 Threads Support in Solaris 2 <ul><li>โซลาริส  2 Solaris 2  เป็นยูนิกซ์รุ่นหนึ่งที่รองรับการทำง...
Solaris 2 Threads
Nächste SlideShare
Wird geladen in …5
×

Operating System Chapter 4

21.442 Aufrufe

Veröffentlicht am

Computer Operating System Concept Chapter 4

Veröffentlicht in: Technologie
  • Login to see the comments

Operating System Chapter 4

  1. 1. บทที่ 4 โปรเซส Processes <ul><li>แนวคิดของโปรเซส Process Concept </li></ul><ul><li>การลำดับการทำงานของโปรเซส Process Scheduling </li></ul><ul><li>การปฏิบัติงานของโปรเซส Operations on Processes </li></ul><ul><li>การปฏิบัติงานร่วมกันของโปรเซส Cooperating Processes </li></ul><ul><li>การสื่อสารระหว่างโปรเซส Interprocess Communication </li></ul><ul><li>การสื่อสารในระบบไคลเอนท์เซอร์ฟเวอร์ Communication in Client-Server Systems </li></ul>
  2. 2. แนวคิดของโปรเซส Process Concept <ul><li>การที่ระบบปฏิบัติการทำการเอ็กซ์ซีคิวท์หลายๆ โปรแกรมพร้อมกัน </li></ul><ul><ul><li>ระบบแบทช์ Batch system งาน </li></ul></ul><ul><ul><li>ระบบแบ่งสรรเวลา Time-shared systems โปรแกรมของผู้ใช้ หรืองาน </li></ul></ul><ul><li>หนังสือส่วนใหญ่ใช้ งานกับโปรเซส อธิบายแทนกันได้ </li></ul><ul><li>โปรเซส โปรแกรมที่กำลังถูกเอ็กซ์ซีคิวท์ โดยการเอ็กซ์ซีคิวท์ชั่นโปรเซสมักกระทำในรูปแบบเชิงลำดับ </li></ul><ul><li>โปรเซสประกอบด้วย </li></ul><ul><ul><li>โปรแกรมเคาน์เตอร์ program counter </li></ul></ul><ul><ul><li>แสต็ค stack </li></ul></ul><ul><ul><li>ส่วนของข้อมูล data section </li></ul></ul>
  3. 3. สถานะของโปรเซส Process State <ul><li>เมื่อโปรเซสถูกเอ็กซ์ซีคิวท์ จะเกิดการเปลี่ยนสถานะต่างๆ ขึ้น </li></ul><ul><ul><li>เริ่ม new สถานะที่โปรเซสถูกสร้างขึ้น </li></ul></ul><ul><ul><li>ทำงาน running คำสั่งต่างๆ ในโปรเซสถูกทำการเอ็กซ์ซีคิวท์ </li></ul></ul><ul><ul><li>รอคอย waiting โปรเซสหยุดทำงานชั่วคราวหรือรอคอยเมื่อเกิดเหตุการณ์บางอย่างขึ้น </li></ul></ul><ul><ul><li>พร้อม ready โปรเซสรอที่จะกลับเข้าไปเพื่อการเอ็กซ์ซีคิวท์ต่อไป </li></ul></ul><ul><ul><li>สิ้นสุด terminated โปรเซสถูกเอ็กซ์ซีคิวท์เสร็จสิ้น จบการทำงาน </li></ul></ul>
  4. 4. ไดอะแกรมแสดงการเปลี่ยนแปลงสถานะของโปรเซส Diagram of Process State
  5. 5. บล๊อกควบคุมโปรเซส Process Control Block (PCB) <ul><li>สารสนเทศที่สัมพันธ์กับแต่ละโปรเซส </li></ul><ul><ul><li>สถานะของโปรเซส Process state </li></ul></ul><ul><ul><li>โปรแกรมเคาน์เตอร์ ตัวนับโปรแกรม Program counter </li></ul></ul><ul><ul><li>รีจีสเตอร์ของหน่วยประมวลผลกลาง CPU registers </li></ul></ul><ul><ul><li>สารสนเทศการจัดลำดับการทำงานของหน่วยประมวลผลกลาง CPU scheduling information </li></ul></ul><ul><ul><li>สารสนเทศของการบริหารจัดการหน่วยความจำ Memory-management information </li></ul></ul><ul><ul><li>สารสนเทศของการทำบัญชีต่างๆ Accounting information </li></ul></ul><ul><ul><li>สารสนเทศของสถานะของอินพุทเอ้าท์พุท I/O status information </li></ul></ul>
  6. 6. Process Control Block (PCB)
  7. 7. CPU Switch From Process to Process การที่หน่วยประมวลผลกลางเปลี่ยนการเอ็กซ์ซีคิวท์โปรเซสหนึ่งไปยังอีกโปรเซสหนึ่ง
  8. 8. คิวการจัดลำดับการทำงานของโปรเซส Process Scheduling Queues <ul><li>คิวการทำงาน Job queue หมายถึงเซ็ตของทุกๆ โปรเซสในระบบ </li></ul><ul><li>คิวพร้อมทำงาน Ready queue หมายถึง เซ็ตของทุกๆ โปรเซสที่ยังคงมีพื้นที่อยู่ในหน่วยความจำ พร้อมและรอคอยที่จะถูกทำการเอ็กซ์ซีคิวท์ </li></ul><ul><li>คิวของอุปกรณ์ Device queues หมายถึง เซ็ตของทุกๆ โปรเซสที่กำลังรอคอยเพื่อเข้าใช้งานอุปกรณ์อินพุทเอ้าท์พุท </li></ul><ul><li>โปรเซสจะย้ายเปลี่ยนไปอยู่ได้ในทุกๆ คิวขึ้นอยู่กับสถานะการทำงาน </li></ul>
  9. 9. คิวพร้อมทำงาน และคิวของอุปกรณ์แบบต่างๆ Ready Queue And Various I/O Device Queues
  10. 10. แสดงขั้นตอนการลำดับการทำงานของโปรเซส Representation of Process Scheduling
  11. 11. การจัดลำดับการทำงาน Schedulers <ul><li>ผู้จัดลำดับการทำงานระยะยาว Long-term scheduler ทำหน้าที่เลือกโปรเซสที่เหมาะสมไปไว้ยังคิวพร้อมการทำงาน </li></ul><ul><li>ผู้จัดลำดับการทำงานระยะสั้น Short-term scheduler หรือผู้จัดลำดับการทำงานหน่วยประมวลผลกลาง ทำหน้าที่เลือกโปรเซสที่เหมาะสมเพื่อทำการเอ็กซ์ซีคิวท์และใช้งานหน่วยประมวลผลกลาง </li></ul>
  12. 12. การจัดลำดับการทำงานแบบระยะกลาง Addition of Medium Term Scheduling
  13. 13. ผู้จัดลำดับการทำงาน Schedulers (Cont.) <ul><li>ผู้จัดลำดับการทำงานระยะสั้น Short-term scheduler จะถูกเรียกให้ทำงานบ่อยมากในระดับมิลลิวินาที จึงต้องทำงานเร็วมาก </li></ul><ul><li>ผู้จัดลำดับการทำงานระยะยาว Long-term scheduler จะถูกเรียกให้ทำงานไม่บ่อยเท่า ในระดับ วินาที และนาที จึงอาจทำงานช้ากว่า </li></ul><ul><li>ผู้จัดลำดับการทำงาน ระยะยาวทำการควบคุมความมากน้อยของการทำมัลติโปรแกรมมิ่ง </li></ul><ul><li>สามารถกำหนดขอบเขตและคำจำกัดความของโปรเซส ได้ดังนี้ </li></ul><ul><ul><li>โปรเซสที่ผูกพันอยุ่กับอินพุทเอ้าท์พุท I/O- bound process จะเสียเวลาอยู่กับอินพุทเอ้าท์พุท มากกว่าการคำนวณ โดยจะใช้งานหน่วยประมวลผลเพียงชั่วระยะเวลาสั้นๆ </li></ul></ul><ul><ul><li>โปรเซสที่ผูกพันอยู่กับหน่วยประมวลผล CPU - bound process จะเสียเวลาส่วนใหญ่อยู่กับการทำการคำนวณใดๆ เป็นส่วนใหญ่ โดยจะใช้งานหน่วยประมวลผลเป็นระยะเวลาที่ยาวนานกว่า </li></ul></ul>
  14. 14. การสลับสภาพแวดล้อมในการทำงาน Context Switch <ul><li>เมื่อหน่วยประมวลผลสลับการทำงานไปทำงานกับโปรเซสอื่น ระบบจำเป็นต้องบันทึกสถานะต่างๆ ของโปรเซสเดิมไว้ก่อน และต้องทำการโหลดหรือนำสถานะเดิมของโปรเซสที่จะนำมาเอ็กซ์ซีคิวท์ กลับขึ้นมาเป็นสภาพแวดล้อมในการทำงานอีกครั้ง </li></ul><ul><li>โดยเวลาที่ใช้ไปกับการสลับสภาพแวดล้อมในการทำงาน ถือเป็นต้นทุนอย่างหนึ่ง เนื่องจากระบบไม่สามารถทำงานอื่นได้ในขณะทำการสลับสภาพแวดล้อม </li></ul><ul><li>โดยเวลาที่ใช้ขึ้นกับการทำงานของฮาร์ดแวร์ </li></ul>
  15. 15. การสร้างโปรเซส ใหม่ขึ้น Process Creation <ul><li>โปรเซสต้นกำเนิด จะทำการสร้างโปรเซสลูก โดยการสร้างโปรเซสใดๆ จะอยู่ในรูปลำดับแบบต้นไม้ </li></ul><ul><li>การแบ่งสรรทรัพยากร Resource sharing </li></ul><ul><ul><li>โปรเซสต้นกำเนิดและโปรเซสลูกจะแบ่งสรรทรัพยากรทั้งหมดเพื่อใช้ทำงานร่วมกัน </li></ul></ul><ul><ul><li>โปรเซสลูกจะร่วมใช้ทรัพยากรส่วนหนึ่งของโปรเซสต้นกำเนิดของตนเอง </li></ul></ul><ul><ul><li>โปรเซสต้นกำเนิดและโปรเซสลูกไม่ได้แบ่งสรรทรัพยากรเพื่อใช้งานร่วมกัน </li></ul></ul><ul><li>การเอ็กซ์ซีคิวท์ Execution </li></ul><ul><ul><li>โปรเซสต้นกำเนิดและโปรเซสลูกสามารถถูกเอ็กซ์ซีคิวท์ไปพร้อมๆ กัน </li></ul></ul><ul><ul><li>โปรเซสต้นกำเนิดจะคอยจนกว่าโปรเซสลูกจะสิ้นสุดการทำงาน </li></ul></ul>
  16. 16. Process Creation (Cont.) <ul><li>พื้นที่ของแอดเดรส Address space </li></ul><ul><ul><li>โปรเซสลูกจะซ้ำกับโปรเซสต้นกำเนิด </li></ul></ul><ul><ul><li>โปรเซสลูกมีโปรแกรมที่ทำการโหลดเข้าไปไว้ยังพื้นที่ของแอดเดรส </li></ul></ul><ul><li>ตัวอย่างของยูนิกส์ </li></ul><ul><ul><li>ระบบฟอร์ค fork system จะทำการเรียกเพื่อสร้างโปรเซสขึ้นใหม่ </li></ul></ul><ul><ul><li>ระบบเอ็กซ์เซก exec system ถูกเรียกหลังจาก ฟอร์คทำการนำโปรแกรมใหม่ไปไว้แทนที่ในพื้นที่หน่วยความจำสำหรับโปรเซส </li></ul></ul>
  17. 17. โครงสร้างโปรเซสแบบต้นไม้ในระบบยูนิกซ์ Processes Tree on a UNIX System
  18. 18. การสิ้นสุดการทำงานของโปรเซส Process Termination <ul><li>เมื่อโปรเซสทำการเอ็กซ์ซีคิวคำสั่งสุดท้าย และสอบถามระบบปฏิบัติการเพื่อตัดสินใจว่าจะสิ้นสุดการทำงาน </li></ul><ul><ul><li>เอ้าพุทข้อมูลจากโปรเซสลูกไปยังโปรเซสต้นกำเนิด ( ผ่านสถานะรอคอย ) </li></ul></ul><ul><ul><li>ทรัพยากรที่ถูกใช้โดยโปรเซส จะถูกปลดปล่อยโดยระบบปฏิบัติการ </li></ul></ul><ul><li>โปรเซสต้นกำเนิดอาจทำลายหรือหยุดการเอ็กซ์ซีคิวท์ของโปรเซสลูกได้ ( โดยการยกเลิก ) </li></ul><ul><ul><li>โปรเซสลูกอาจมีการใช้ทรัพยากรเกินกว่าที่กำหนด </li></ul></ul><ul><ul><li>งานที่ถูกมอบหมายให้กับโปรเซสลูกไม่ถูกเรียกใช้เป็นเวลานาน </li></ul></ul><ul><ul><li>หากโปรเซสต้นกำเนิดจบการทำงาน </li></ul></ul><ul><ul><ul><li>ในระบบปฏิบัติการบางระบบไม่อนุญาตให้โปรเซสลูกสามารถทำงานต่อไปได้ </li></ul></ul></ul><ul><ul><ul><ul><li>โปรเซสลูกทั้งหมดก็จะต้องถูกทำลายหรือสิ้นสุดการทำงานไปด้วย หรือเรียกว่า การสิ้นสุดการทำงานเชิงสัมพันธ์ </li></ul></ul></ul></ul>
  19. 19. โปรเซสที่ปฏิบัติงานร่วมกัน Cooperating Processes <ul><li>โปรเซสอิสระจะไม่สามารถกระทำการใดที่กระทบต่อหรือได้รับผลกระทบจากการเอ็กซ์ซีคิวท์ของโปรเซสอื่นๆ </li></ul><ul><li>โปรเซสที่ปฏิบัติงานร่วมกันจะสามารถกระทำการใดที่กระทบต่อหรือได้รับผลกระทบจากการเอ็กซ์ซีคิวท์ของโปรเซสอื่นๆ </li></ul><ul><li>ประโยชน์ของโปรเซสแบบทำงานร่วมกัน </li></ul><ul><li>แบ่งปันสารสนเทศ Information sharing </li></ul><ul><li>การคำนวณมีความรวดเร็วมากยิ่งขึ้น Computation speed-up </li></ul><ul><li>สามารถแบ่งออกเป็นโมดูลได้ Modularity </li></ul><ul><li>ความสะดวก Convenience </li></ul>
  20. 20. ปัญหาของผู้ผลิตกับผู้บริโภค Producer-Consumer Problem <ul><li>ตัวอย่างสาธิตของโปรเซสที่ทำงานร่วมกัน ผู้ผลิตโปรเซสจะผลิตสารสนเทศที่ถูกใช้โดยโปรเซสผู้บริโภค </li></ul><ul><li>บัฟเฟอร์ที่ไม่มีความสัมพันธ์กัน unbounded-buffer ในทางปฏิบัติจะไม่มีข้อจำกัดในด้านขนาดของบัฟเฟอร์ </li></ul><ul><li>บัฟเฟอร์ทีมีความสัมพันธ์กัน bounded-buffer จะมีขนาดของบัฟเฟอร์ที่คงที่แน่นอน </li></ul>
  21. 21. IPC การสื่อสารระหว่างโปรเซส Interprocess Communication (IPC) <ul><li>กลไกวิธีที่โปรเซสใช้สื่อสารและการเข้าจังหวะในกิจกรรมใดๆ </li></ul><ul><li>ระบบการสื่อสารด้วยข้อความ คือการสื่อสารระหว่างโปรเซส โดยปราศจากการพึ่งพิงการแบ่งสรรตัวแปรใดๆ </li></ul><ul><li>การสื่อสารระหว่างโปรเซส โดยปฏิบัติการสองแบบ </li></ul><ul><ul><li>ส่งข้อความ send ( message ) ขนาดของข้อความคงที่หรือแปรผัน </li></ul></ul><ul><ul><li>รับข้อความ receive ( message ) </li></ul></ul><ul><li>เมื่อโปรเซส P และ Q ต้องการสื่อสารกัน จำเป็นต้องมีสิ่งต่างๆ ดังนี้ </li></ul><ul><ul><li>สถาปนาการสื่อสารระหว่างสองโปรเซส </li></ul></ul><ul><ul><li>แลกเปลี่ยนข้อความโดยการส่งและรับ </li></ul></ul><ul><li>การใช้งานการเชื่อมต่อการสื่อสาร </li></ul><ul><ul><li>เชิงกายภาพ เช่น แบ่งสรรหน่วยความจำ และการสื่อสารผ่านบัสของฮาร์ดแวร์ </li></ul></ul><ul><ul><li>เชิงตรรก เช่น คุณสมบัติการส่งข้อมูลทางตรรก </li></ul></ul>
  22. 22. คำถามในการนำไปใช้งาน Implementation Questions <ul><li>การเชื่อมต่อสถาปนาขึ้นอย่างไร </li></ul><ul><li>การเชื่อมต่อสามารถมีความสัมพันมากกว่าสองโปรเซสได้หรือไม่ </li></ul><ul><li>สามารถมีจำนวนของการเชื่อมต่อได้มากเท่าไรระหว่างการสื่อสารของสองโปรเซส </li></ul><ul><li>อะไรคือความจุของการเชื่อมต่อ </li></ul><ul><li>ขนาดของข้อความในการสื่อสารที่การเชื่อมต่อสามารถใช้งานได้ทั้งแบบคงที่หรือแบบแปรผัน ใช่หรือไม่ </li></ul><ul><li>ใช่การเชื่อมต่อหรือไม่ ที่สามารถมีได้ทิศทางเดียวหรือสองทิศทาง </li></ul>
  23. 23. การสื่อสารข้อมูลทางตรง Direct Communication <ul><li>มักกำหนดให้โปรเซสดังนี้ </li></ul><ul><ul><li>ส่ง ( P, ข้อความ ) send ( P, message ) ส่งข้อความไปยังโปรเซส P </li></ul></ul><ul><ul><li>รับ (Q, ข้อความ ) receive ( Q, message ) รับข้อความจากโปรเซส Q </li></ul></ul><ul><li>ลักษณะสำคัญของการเชื่อมต่อเพื่อการสื่อสาร </li></ul><ul><ul><li>การเชื่อมต่อถูกสถาปนาขึ้นโดยอัตโนมัติ </li></ul></ul><ul><ul><li>การเชื่อมต่อที่สัมพันธ์กันเกิดจากการสื่อสารระหว่างโปรเซสหนึ่งคู่ </li></ul></ul><ul><ul><li>ระหว่างการสื่อสารหนึ่งคุ่เกิดจากการเชื่อมต่อหนึ่งการเชื่อมต่อ </li></ul></ul><ul><ul><li>การเชื่อมต่ออาจมีทิศทางเดียวแต่โดยส่วนมากเป้นแบบสองทิสทาง </li></ul></ul>
  24. 24. การสื่อสารแบบทางอ้อม Indirect Communication <ul><li>ข้อถูกส่งมาจากหรือรับมาจากตู้จดหมาย ( อาจอ้างโดยพอร์ต ) </li></ul><ul><ul><li>ตู้จดหมายแต่ละแห่งมีเลขหมายเฉพาะเป็นของตนเอง </li></ul></ul><ul><ul><li>โปรเซสจะสื่อสารกันได้เฉพาะที่แบ่งปันการใช้งานตู้จดหมายร่วมกัน </li></ul></ul><ul><li>ลักษณะสำคัญของการเชื่อมต่อเพื่อการสื่อสาร </li></ul><ul><ul><li>การเชื่อมต่อถูกสถาปนาขึ้นเฉพาะเมื่อโปรเซสแบ่งปันการใช้งานตู้จดหมายร่วมกัน </li></ul></ul><ul><ul><li>การเชื่อมต่ออาจสัมพันธ์กับหลายโปรเซส </li></ul></ul><ul><ul><li>โปรเซสแต่ละคู่อาจแบ่งปันการเชื่อมต่อเพื่อการสื่อสารหลายคู่ </li></ul></ul><ul><ul><li>การเชื่อมต่ออาจเป็นได้ทั้งทิศทางเดียวหรือสองทิศทาง </li></ul></ul>
  25. 25. การสื่อสารทางอ้อม Indirect Communication <ul><li>การปฏิบัติงาน </li></ul><ul><ul><li>สร้างตู้จดหมายขึ้นใหม่ </li></ul></ul><ul><ul><li>ส่งและรับข้อความผ่านตู้จดหมาย </li></ul></ul><ul><ul><li>ทำลายตู้จดหมายหลังใช้งานเสร็จสิ้น </li></ul></ul><ul><li>คำจำกัดความอย่างง่าย </li></ul><ul><ul><li>ส่ง ( A, ข้อความ ) send ( A, message ) ส่งข้อความไปยังตู้จดหมาย A </li></ul></ul><ul><ul><li>รับ (A, ข้อความ ) receive ( A, message ) รับข้อความจากตู้จดหมาย A </li></ul></ul>
  26. 26. Indirect Communication <ul><li>การแบ่งปันตู้จดหมาย </li></ul><ul><ul><li>P1, P2 และ P3 แบ่งปันการใช้ตู้จดหมาย A ร่วมกัน </li></ul></ul><ul><ul><li>P1 ส่งข้อความ P2, P3 รับข้อความ </li></ul></ul><ul><ul><li>ใครเป็นผู้รับสาร </li></ul></ul><ul><li>โซลูชั่น Solutions </li></ul><ul><ul><li>ทำให้การเชื่อมต่อสามารถมีความสัมพันธ์กันได้ถึงสองโปรเซส </li></ul></ul><ul><ul><li>ทำให้โปรเซสเพียงโปรเซสเดียวในเวลาหนึ่งทำการเอ็กซ์ซีคิวท์การรับข้อความ </li></ul></ul><ul><ul><li>ทำให้ระบบสามารถเลือกผู้รับแบบไม่เฉพาะเจาะจง ผู้ส่งเป็นผู้ระบุว่าใครคือผู้รับ </li></ul></ul>
  27. 27. การเข้าจังหวะสัมพันธ์ Synchronization <ul><li>การส่งผ่านข้อความอาจถูกบล๊อกหรือไม่บล๊อกก็ได้ </li></ul><ul><li>การบล๊อก Blocking ถูกพิจารณาด้วยการเข้าจังหวะเชิงสัมพันธ์ </li></ul><ul><ul><li>การบล๊อกการส่ง Blocking send ผู้ส่งจะถูกบล๊อกจนกว่าข้อความจะถูกรับไป </li></ul></ul><ul><ul><li>การบล๊อกการรับ Blocking receive ผู้รับจะถูกบล๊อกจนกว่าข้อความจะพร้อมหรือถูกส่งมาเรียบร้อยแล้ว </li></ul></ul><ul><li>การไม่บล๊อก Non-blocking ถูกพิจารณาด้วยการเข้าจังหวะแบบไม่สัมพันธ์ </li></ul><ul><ul><li>การไม่บล๊อกการส่ง Non-blocking ผู้ส่งสามารถส่งข้อความไปโดยต่อเนื่องไม่ต้องรอ </li></ul></ul><ul><ul><li>การไม่บล๊อกการรับ Non-blocking ผู้รับสามารรับข้อความที่สมบูรณ์หรือไม่รับเลย </li></ul></ul>
  28. 28. การทำบัฟเฟอร์ Buffering <ul><li>คิวของข้อความที่ส่งในการเชื่อมต่อ กระทำด้วยวิธีใดวิธีหนึ่งจากสามวิธีดังนี้ </li></ul><ul><li>ความจุเป็นศูนย์ Zero capacity หรือศูนย์ข้อความ ผู้ส่งต้องคอยผู้รับ </li></ul><ul><li>ความจุแบบจำกัด Bounded capacity โดยที่ n ข้อความมีขนาดจำกัด ผู้ส่งต้องคอยเมื่อการเชื่อมต่อเต็ม </li></ul><ul><li>ความจุแบบไม่จำกัด Unbounded capacity มีขนาดไม่จำกัด ผู้ส่งไม่จำเป็นต้องคอย </li></ul>
  29. 29. การสื่อสารของไคลเอนท์เซอร์ฟเวอร์ Client-Server Communication <ul><li>ซ๊อคเก็ต Sockets </li></ul><ul><li>การเรียกโพรซีเยอร์ระยะไกล Remote Procedure Calls </li></ul><ul><li>การร้องขอแมทธอดระยะไกล ( ในภาษาจาวา ) Remote Method Invocation (Java) </li></ul>
  30. 30. ซ๊อคเก็ต Sockets <ul><li>ซ๊อคเก็ต หมายถึงจุดสิ้นสุดสำหรับการสื่อสาร </li></ul><ul><li>เป็นการเชื่อมโยงระหว่าง ไอพีแอดเดรส และพอร์ต </li></ul><ul><li>อาทิเช่น ซ๊อคเก็ต 161.25.19.8:1625 หมายถึง พอร์ต 1625 บนโฮสต์ที่ 161.25.19.8 </li></ul><ul><li>การสื่อสารประกอบขึ้นจาก คู่ของซ๊อคเก็ต </li></ul>
  31. 31. การสื่อสารแบบซ๊อคเก็ต Socket Communication
  32. 32. การเรียกโพรซีเยอร์ระยะไกล Remote Procedure Calls <ul><li>การเรียกโพรซีเยอร์ระยะไกล เป็นการเรียกโพรซีเยอร์เชิงนัยระหว่างโพรเซสบนระบบเครือข่าย </li></ul><ul><li>สตับส์ Stubs หมายถึงพร๊อกซี่ฝั่งไคลเอนท์ ที่รองรับการทำงานการเรียกใช้โพรซีเยอร์บนเซิอร์ฟเวอร์ </li></ul><ul><li>สตับฝั่งไคลเอนท์จะอยู่ที่เซอร์ฟเวอร์ และจัดสรรพารามิเตอร์ต่างๆ ให้เหมาะสม </li></ul><ul><li>สตับฝั่งเซอร์ฟเวอร์ จะรับข้อความ ทำการแกะข้อความออกจากแพค จัดสรรพารามิเตอร์ต่างๆให้เหมาะสม และแจ้งบอกโพรซีเยอร์บนเซอร์ฟเวอร์ </li></ul>
  33. 33. การเอ็กซ์ซีคิวท์ Execution of RPC
  34. 34. Remote Method Invocation <ul><li>การร้องขอแมทธอดระยะไกล ( ในภาษาจาวา ) Remote Method Invocation </li></ul><ul><li>การร้องขอแมทธอดระยะไกล เป็นกลไกในภาษาจาวาที่แตกต่างจาก RPC </li></ul><ul><li>RMI ทำให้โปรแกรมภาษาจาวาที่ทำงานอยู่บนเครื่องหนึ่งสามารถเรียกใช้แมทธอดจากออบเจ็กระยะไกลได้ </li></ul>
  35. 35. การจัดเรียงพารามิเตอร์ Marshalling Parameters
  36. 36. เธรด Threads <ul><li>เธรด หรือโปรเซสขนาดเล็ก เป็นหน่วยพื้นฐานของการเพิ่มประสิทธิภาพการทำงานของหน่วยประมวลผล ที่ประกอบด้วยสิ่งต่างๆ ดังนี้ </li></ul><ul><ul><li>โปรแกรมเคาน์เตอร์ program counter </li></ul></ul><ul><ul><li>เซ็ตของรีจิสเตอร์ register set </li></ul></ul><ul><ul><li>พื้นที่ของแสต็ค stack space </li></ul></ul><ul><li>แบ่งเธรดออกเป็นเธรดเพียร์ ดังนี้ </li></ul><ul><ul><li>ส่วนของโค้ด code section </li></ul></ul><ul><ul><li>ส่วนของข้อมูล data section </li></ul></ul><ul><ul><li>ทรัพยากรของระบบปฏิบัติการ operating-system resources </li></ul></ul><ul><li>ทั้งหมดรวมเรียกว่างาน </li></ul><ul><li>โปรเซสขนาดปกติทั่วไป หมายถึงงานที่มีหนึ่งเธรด </li></ul>
  37. 37. Threads (Cont.) <ul><li>ในงานที่มีหลายเธรด หรือมัลติเธรด เมื่อเธรดของเซอร์ฟเวอร์หนึ่งถูกบล็อกและเข้าสู่สถานะรอคอย เธรดลำดับที่สองในงานเดียวกันก็จะสามารถทำงานได้ </li></ul><ul><ul><li>การปฏิบัติงานร่วมกันของเธรดหลายเธรดในงานเดียวกัน ทำให้ได้ผลลัพธ์และประสิทธิภาพเพิ่มมากขึ้น </li></ul></ul><ul><ul><li>แอพพลิเคชั่นที่ต้องการการแบ่งสรรบัฟเฟอร์ทั่วไปร่วมกัน ( ในผู้ผลิตและผู้บริโภค ) คือประโยชน์ที่ได้รับจากการนำเธรดมาใช้ </li></ul></ul><ul><li>เธรดรองรับรับกลไกการทำงานที่ทำให้โปรเซสแบบลำดับสามารถบล็อกการเรียกใช้ระบบเมื่อเกิดการทำงานแบบขนานขึ้น </li></ul><ul><li>เคอร์แนล ที่รองรับการทำงานแบบเธรด ( แมค และโอเอสทู ) </li></ul><ul><li>เธรดในระดับผู้ใช้ รองรับการทำงานบนเคอร์แนล ผ่านเซตของการเรียกใช้ไลบรารี่ ในระดับชั้นของผู้ใช้ </li></ul><ul><li>การนำกลยุทธแบบไฮบริด ระหว่างระดับการทำงานของผู้ใช้และรองรับการทำงานแบบเธรดของเคอร์แนล </li></ul>
  38. 38. การทำงานหลายเธรดในงานหนึ่งๆ Multiple Threads within a Task
  39. 39. การทำงานของเธรดในโซลาริส 2 Threads Support in Solaris 2 <ul><li>โซลาริส 2 Solaris 2 เป็นยูนิกซ์รุ่นหนึ่งที่รองรับการทำงานแบบเธรดด้วยเคอร์แนลและระดับผู้ใช้ การทำงานหลายโปรเซสแบบสมมาตร และการจัดลำดับการทำงานแบบเรียลไทม์ </li></ul><ul><li>LWP – intermediate level ในระดับชั้นขั้นเริ่มต้นระหว่างเธรดของระดับผู้ใช้ และ เรดระดับเคอร์แนล </li></ul><ul><li>ความต้องการการใช้ทรัพยากร ของเธรดประเภทต่างๆ </li></ul><ul><li>เคอร์แนลเธรด Kernel thread หมายถึงโครงสร้างข้อมูลขนาดเล็ก และแสต็ก การสลับการทำงานของเธรด ไม่จำเป็นต้องการสารสนเทศในการเข้าถึงหน่วยความจำ ( เชิงสัมพันธ์รวดเร็ว ) </li></ul><ul><li>LWP PCB ด้วยการลงทะเบียนด้วยสารสนเทศ ข้อมูล บัญชี และหน่วยความจำ การสลับการทำงานระหว่าง LWP มีความสัมพันธ์ที่ช้า </li></ul><ul><li>เธรดในระดับผู้ใช้ User-level thread: มีความต้องการเพียงแสต็คและโปรแกรมเคาน์เตอร์ ไม่ต้องการการทำงานการสลับเปลี่ยนการทำงานจากเคอร์แนล เคอร์แนลมองเพียงว่า LWP นั้นสามารถรองรับการทำงานเธรดระดับผู้ใช้ </li></ul>
  40. 40. Solaris 2 Threads

×