Your SlideShare is downloading. ×
บทที่  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
Upcoming SlideShare
Loading in...5
×

Operating System Chapter 4

16,120

Published on

Computer Operating System Concept Chapter 4

Published in: Technology
2 Comments
18 Likes
Statistics
Notes
No Downloads
Views
Total Views
16,120
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
2
Likes
18
Embeds 0
No embeds

No notes for slide
  • Chapter 4: Processes Process Concept Process Scheduling Operations on Processes Cooperating Processes Interprocess Communication Communication in Client-Server Systems
  • Transcript of "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

    ×