การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร

Ẻ�֡�Ѵ



Ẻ�֡�Ѵ����� 3





ʶҹТͧ���������ú�ҧ ��͸Ժ��
���� Quantum Time �������
�ѭ�� DeadLock �Դ��������ҧ��
ʶҹ� Block �Դ��������ҧ��
��õԴ��͡ѹ�����ҧ Process ��˹�ҷ��ͧ��
Mutual exclusion �Դ��������ҧ��
���С�õԴ��� ������� ����觼ŵ���к���Ժѵԡ�����ҧ��
ͧ���Сͺ�ͧ���� �����ú�ҧ





Free TextEditor


Create Date :27 �á�Ҥ� 2554 Last Update :27 �á�Ҥ� 2554 22:06:19 �. Counter :Pageviews. Comments :6

  • twitter
  • google
  • การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร

  • Comment
    *�� code html ���觢�ͤ�����੾����Ҫԡ

  • ���


    ���2.���� Quantum Time �������


    �ͺ Quantum time ���� Time Quantum �繡�èѴ�����š��Է��㹵��ҧ�������Ǣ�� Round Rodin(RR) ������º��Ẻ Preemptive Scheduling Policy �¡�÷ӧҹ�����Թ�������ա��᫧���������ǧ���ҷ���˹�� Time slice ���� ���¡�ա���ҧ��� Time Quantum �¨��繵�ͧ��˹���� Time slice ����ǧ˹����Ҩ�����դ��������� ���ʹ� ��� �������� Process 㴼١�Ҵ�����ҹ�������������






    Free TextEditor
    ��: �Ҩ�������� (Jung Sang Byung
    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร
    ) 27 �á�Ҥ� 2554 22:20:58 �.
  • 6.Mutual exclusion �Դ��������ҧ��


    �ͺ �ѭ�ҹ���Դ�ҡ ��÷���к����͹حҵ��� Process ������2 Process �������Ѿ�ҡþ�����ѹ�� �������ö����� ��� ����觷�Ѿ�ҡ����Ѻ Process ��ҹ�����ѹ�� �� �������������� �¡�˹���� Process ����ͧ�����Ҷ֧����ö�����ҹ�����������ҧ���� 

    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร









    Free TextEditor
    ��: �Ҩ�������� (Jung Sang Byung
    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร
    ) 27 �á�Ҥ� 2554 22:28:36 �.
  • ���5.��õԴ��͡ѹ�����ҧ Process ��˹�ҷ��ͧ��

    �ͺ ��к��������������ա�û����ż���ٻẺ Mutiprograming ���ա�кǹ���˹�觷���դ����Ӥѭ��͡�÷ӧҹ�ͧ Process ��ҧ� ��͡�õԴ��������������ҧ Process ���к�����������§�ѹ��ٻẺ���͢��� ����Ҩ������ͧ��������������˹��»����żŨӹǹ�ҡ �����駡���觻ѹ��Ѿ�ҡ� �����ҹ Process �����ѹ�� ��õԴ���������������ҧ Process ��������¡��� Interprocess Communication (IPC) ��͡�кǹ��÷�� Process ˹�觵Դ��͡Ѻ�ա Process ˹��
    ��: �Ҩ�������� (Jung Sang Byung
    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร
    ) 1 �ԧ�Ҥ� 2554 22:50:32 �.
  • Block �Դ������ҧ��
    ��: ���� IP: 111.84.13.192 19 �ѹ��¹ 2554 20:03:00 �.
  • ����դӵͺ���������
    ��: samakom IP: 49.228.104.78 23 ��Ȩԡ�¹ 2554 20:16:17 �.
  • 4.ʶҹ� Block �Դ��������ҧ��

    �ػ�ó� input output �Դ�Ѵ��ͧ �� ����������� ����ͧprintter
    ��: ������ص� IP: 110.171.57.47 14 ��Ȩԡ�¹ 2555 12:00:22 �.

การศึกษาเรื่องโปรเซส เป็นหัวใจของการทำความเข้าใจของระบบคอมพิวเตอร์ที่มีผู้ใช้หลายคน ( multiuser computer system ) คำว่าโปรเซสถูกใช้ครั้งแรกโดยผู้ออกแบบระบบมัลติกส์ ( multics ) ในทศวรรษ 1690 มีการให้ความหมายของคำว่า "โปรเซส" ไว้หลายความหมายเช่น

- โปรแกรมที่กำลังถูกเอ็กซีคิ้ว- กิจกรรมที่มีการทำงานสัมพันธ์กัน- สิ่งที่ถูกมอบหมายไปให้โปรเซสเซอร์ได้- หน่วยซึ่งถูกส่งต่อได้ ( dispatchable )ยังไม่มีความหมายใดที่เป็นที่ยอมรับกันทุกคน แต่ความหมายที่ว่า โปรเซส คือ "โปรแกรมที่กำลังถูกเอ็กซีคิ้ว" นั้นถูกใช้บ่อยมากที่สุด ดังนั้นจึงเอาความหมายนี้เป็นความหมายของคำว่า โปรเซส เราอาจเปรียบเทียบโปรแกรมเหมือนกับรถยนต์ที่จอดนิ่งอยู่ที่พร้อมที่จะวิ่งไป ในระบบหลายโปรแกรม ( multiprogramming ) โปรเซสอาจเปรียบกับรถยนต์ที่วิ่งออกจากจุดเริ่มต้น ถ้ามีหลายโปรเซสอยู่ในระบบก็เหมือนกับการที่เรามีรถหลายคันที่จะต้องออกวิ่งไปพร้อม ๆ กัน ตัวซีพียูเปรียบได้กับคนขับรถ ถ้าซีพียูมีตัวเดียวก็เหมือนกับคนขับรถมีเพียงคนเดียว ดังนั้นเมื่อรถหลายคันออกวิ่งการที่คนขับคนเดียวจะพารถหลายๆ คันวิ่งไปต้องขับรถทีละคันให้วิ่งเดินหน้าไปทีละนิด เวียนเปลี่ยนไปจนครบทุกคัน จนถึงจุดหมายปลายทาง ( โปรแกรมสิ้นสุดลง ) นั้นคือเราสามารถมีโปรเซสหลายๆ โปรเซสทำงานไปพร้อมๆ กันได้โดยมีซีพียูเพียงตัวเดียว
1 องค์ประกอบของโปรเซส
1. หมายเลขโปรเซส (Process id)2. โค้ดโปรแกรม (Program code)3. ข้อมูล (Data)4. บล็อกควบคุมโปรเซส (Process control block)
    4.1 พอยเตอร์ (Pointer)4.2 สถานะของโปรเซส (Process state)4.3 หมายเลขโปรเซส (Program id)4.4 ตัวนับจำนวน (Program counter)4.5 รีจิสเตอร์ (Register)4.6 ข้อมูลการจัดเวลาของซีพียู (CPU scheduling information)4.7 ข้อมูลการจัดการหน่วยความจำ (Memory management information)4.8 ข้อมูลแอ็กเคาต์ (Account information)4.9 ข้อมูลสถานะอินพุต/เอาต์พุต (I/O status information)
pointerprocess stateprocess idprocess counter
registerslist of open files::::::5. PSW (Program status word)6. คุณสมบัติของโปรเซส (Properties of process)
    6.1 ลำดับความสำคัญของโปรเซส (Priority)6.2 อำนาจหน้าที่ของโปรเซส (Authority)6.3 คุณสมบัติอื่นที่ระบบปฏิบัติการกำหนดให้มี

2 สถานะของโปรเซสสถานะของโปรเซสแบ่งได้ 6 สถานะ1. สถานะเริ่มต้น (New : The process is being created.)2. สถานะพร้อม (Ready : The process is waiting to be assigned to a processor.)3. สถานะรัน (Running : Instructions are being executed.)4. สถานะรอ (Wait : The process is waiting for some event to occur.)5. สถานะบล็อก (Block : The process is blocked for some event to occur.)6. สถานะสิ้นสุด (Terminate : The process has finished execution.)สถานะของโปรเซสแบ่งได้อีกแบบมี 4 สถานะ1. สถานะพร้อม (ready state) คือสถานะที่โปรเซสพร้อมที่จะใช้ซีพียูทันทีที่ระบบปฏิบัติการมอบหมายให้ ในสถานะนี้ไม่มีการรันของโปรเซส2. สถานะรัน (running state) คือสถานะที่โปรเซสกำลังครอบครองซีพียูอยู่ มีการรันของโปรเซสจริงๆ เพราะโปรเซสใช้ซีพียูเอ็กซีคิ้วคำสั่ง หรือโค้ดโปรแกรมของโปรเซสนั้น3. สถานะติดขัด (blocked state) คือสถานะที่โปรเซสหยุดรอเหตุการณ์ใดเหตุการณ์หนึ่งให้เกิดขึ้น โปรเซสไม่จำเป็นต้องใช้ซีพียูและยังไม่พร้อมที่จะครอบครองซีพียู ซึ่งจะทำให้โปรเซสอื่นเข้ามาครอบครองซีพียูในช่วงนี้ได้4. สถานะพัก (suspend state) คือสถานะที่โปรเซสไม่มีการทำงานใดๆ หยุดนิ่งอย่างสมบูรณ์ ไม่มีการรอการใช้ซีพียูหรือเหตุการณ์ใดๆ ให้เกิดขึ้น
การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร
 
3 การจัดเวลาโปรเซส
    ระบบมัลติโปรแกรมมิ่ง คือ การจัดให้ process สามารถเข้าประมวลผลได้ตลอดเวลา
    ระบบแบ่งเวลา คือ การสลับ process เข้าใช้ CPU บ่อย เท่าที่ผู้ใช้รู้สึกว่าทุก process ตอบสนองได้ตลอดเวลา
    1. Device queue คือ การจัดคิวของโปรเซสต่าง ๆ เช่น คิวของ I/O คิวของการรอ child process หรือคิวของอินเทอร์รัพต์ เป็นต้น
    เมื่อกระบวนการเข้าไปในระบบ จะถูกส่งเข้า job queue ซึ่ง queue จะรวบรวม process ทั้งหมดในระบบ และมีคำหลาย ๆ คำเกี่ยวกับการเข้าคิว เช่น ready, blocked และ running แต่ถ้า process รอเข้า I/O devices จะเรียกว่า device queue ซึ่งทุกอุปกรณ์จะมี device queue ของตนเองprocesses จะย้ายไปมาระหว่าง queue ต่าง ๆ โดยระบบปฏิบัติการมีหน้าที่เลือกตามวัตถุประสงค์ และความเหมาะสม ซึ่งถูกจัดการโดย scheduler สำหรับแต่ละ Device queue ต่างก็มี scheduler ของตนเอง และมี scheduler ส่วนกลาง ควบคุมการทำงานของ process ทั้งหมดอีกครั้งหนึ่ง
    2. Contect switch คือ การทำงานที่ขึ้นกับความสามารถของฮาร์ดแวร์ เป็นการเลื่อน process ไปยังคิวต่อไป ในกรณีที่มีจำนวนโปรเซสมากกว่าชุดของรีจิสเตอร์ที่มีอยู่ ระบบจะคัดลอกโปรเซสส่วนเกินไปเป็นอีกชุดหนึ่ง เพื่อให้โปรเซสที่จำเป็นต้องเข้ามาได้ใช้รีจิสเตอร์ปัจจุบันได้ สำหรับรายละเอียดการจัดการโปรเซสขึ้นกับความสามารถของ OS เป็นเทคนิคที่หลีกเลี่ยงปัญหาคอขวดของระบบ
    หลังประมวลผล Process หนึ่งเรียบร้อย ต้องย้ายไปยัง Process ใหม่ หรือ การย้ายจากหน่วยประมวลผลไปยังอีกกระบวนการหนึ่ง ต้องการ saving the stat of the old process and loading the saved state for the new process ซึ่งงานนี้ถูกเรียกว่า context switch สำหรับคำว่า context of process อาจแทนด้วย PCB of a process
    Mutual exclusion
    คือ การกีดกั้น ในบริเวณ หรือส่วนของโปรแกรมที่ process เข้าครอบครองรีซอร์ส ซึ่งเรียกว่า Critical region ซึ่งการกีดกั้นก็คือการไม่ยอมให้ process ใด ๆ เข้าใช้พื้นที่ ๆ เป็น Critical region ซึ่งมีคุณสมบัติอยู่ 4 ประการ
      คุณสมบัติของ mutual exclusion
    1. ไม่มี process อยู่ใน critical region พร้อมกัน
    2. ไม่มีสมมติฐาน และข้อจำกัด ด้านความเร็ว หรือจำนวนซีพียูมาเป็นปัจจัย
    3. ไม่มี process นอก critical region ที่ block การทำงานของ process อื่น
    4. ไม่มี process ที่รอเข้าใจ critical region ตลอดเวลา

    การแก้ปัญหา Mutual exclusion with busy waiting
    1. Disable interrupt
    2. Lock variable
    3. Strict alternation
    4. Peterson's solution
    5. TSL instruction

4 การปฏิบัติการบนโปรเซส
    ขณะคอมพิวเตอร์ทำงานต้องการสร้าง และลบ process ตลอดเวลา จึงต้องมีการควบคุมให้ระบบคงสภาพอยู่ตลอดเวลา โปรเซสแม่ (Parent process) และโปรเซสลูก (Children process) ต้องถูกสร้าง และหยุดทำงานได้อย่างสอดคล้อง เพื่อให้เข้าใจเรื่องของ process จึงขอแสดง tree of process on a typical UNIX system ประกอบการอธิบาย

    1. การสร้างโปรเซส (Process creation)
    ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณาการ execute1. โปรเซสแม่ยังประมวลผลต่อไป พร้อมโปรเซสลูก(The parent continues to execute concurrently with its children.)2. โปรเซสแม่ต้องรอให้โปรเซสลูกบางตัว หรือโปรเซสลูกทั้งหมดสิ้งสุด จึงจะเริ่มประมวลผลได้ใหม่(The parent waits until some or all of its children have terminated.)ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณา address ของโปรเซสใหม่1. โปรเซสลูกเป็นสำเนาของโปรเซสแม่ คือใช้ address เดียวกับแม่(The child process is a duplicate of the parent process.)2. โปรเซสลูกมีตำแหน่งของ load address ของตนเอง(The child process has a program loaded into it.)
    2. การสิ้นสุดของโปรเซส (Process termination)
    3 เหตุผลที่ โปรเซสแม่จะหยุดการประมวลผลของโปรเซสลูก1. โปรเซสลูกใช้ resource มากกว่าที่กำหนดไว้2. ไม่มีความจำเป็นต้องใช้โปรเซสนั้นอีกแล้ว3. โปรเซสแม่สิ้นสุด และ OS ไม่ยอมให้โปรเซสลูกทำงานต่อไป
      ตัวอย่าง process ที่ประมวลผลใน Linux [root@yn1 root]# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 1376 84 ? S Oct08 0:12 init root 1482 0.0 0.0 1440 156 ? S Oct08 0:32 syslogd -m 0 root 1486 0.0 0.0 1368 4 ? S Oct08 0:00 klogd -x rpc 1504 0.0 0.0 1540 0 ? SW Oct08 0:00 [portmap] rpcuser 1523 0.0 0.0 1680 0 ? SW Oct08 0:00 [rpc.statd] named 1620 0.0 1.9 41836 5040 ? S Oct08 6:16 [named] root 1635 0.0 0.1 3508 300 ? S Oct08 0:05 /usr/sbin/sshd root 1649 0.0 0.1 2024 368 ? S Oct08 0:02 xinetd -stayalive root 1659 0.0 0.0 1596 88 ? S Oct08 0:00 /usr/sbin/vsftpd root 1680 0.0 0.2 5920 548 ? S Oct08 0:52 [sendmail] smmsp 1689 0.0 0.1 5716 316 ? S Oct08 0:00 [sendmail] apache 9825 99.9 0.0 0 0 ? RW Oct08 15286:48 [httpd] root 10719 0.0 0.0 17200 96 ? S Oct18 0:02 /usr/sbin/httpd apache 15017 0.0 3.0 22708 7860 ? S Oct18 0:07 [httpd] apache 15018 0.0 2.8 23940 7312 ? S Oct18 0:06 [httpd] apache 18350 0.0 3.3 27072 8604 ? S 08:23 0:06 [httpd] root 22018 0.0 0.8 6268 2108 ? S 13:16 0:00 [sendmail]

5 โปรเซสสื่อประสาน (Cooperating process)
    โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้1. การแบ่งปันข่าวสารข้อมูลร่วมกัน (Information sharing)2. เพิ่มความเร็วในการคำนวณ (Computation speedup)3. แบ่งงานตามหน้าที่เป็นโมดูล (Modularity)4. ความสะดวก (Convenience)
6 การสื่อสารในโปรเซส (Interprocess communication : IPC)
    การสื่อสารในโปรเซส หรือระหว่างโปรเซสมีเรื่องที่ต้องพิจารณาหลายเรื่อง
    6.1 ระบบการผ่านข่าวสาร (Message-passing system)
    การอำนวยความสะดวกของ IPC มีอย่างน้อย 2 กระบวนการคือ การส่งข่าวสาร Send(message) หรือ การรับข่าวสาร Receive(message) นอกจากนี้การบ่งบอกถึงการเชื่อมโยงข่าวสาร และการรับ-ส่งข่าว มีหลายวิธีดังนี้- Direct or indirect communication (ทางตรง)- Symmetric or asymmetric communication (สมมาตร)- Automatic or explicit buffering (Explicit = แน่นอน)- Send by copy or send by reference- Fixed-sized or variable-sized messages
    6.2 การตั้งชื่อ (Naming)
    6.2.1 Direct communication
    ทุกโปรเซสที่ติดต่อกันต้องมีการอ้างชื่ออย่างชัดเจน และแน่นอน เช่นการส่งข่าวสารจากโปรเซส A ไปโปรเซส B ก็ต้องระบุให้ชัดเจนว่าส่งจากไหนไปไหนsend(B,message) หมายถึง ส่งไปให้โปรเซส B
    6.2.2 Indirect communication
    receive(A,message) หมายถึง รับจากโปรเซส Aการติดต่อสื่อสารทางอ้อม เป็นการติดต่อผ่าน mailbox หรือ port ซึ่งทำหน้าที่เก็บโปรเซส แล้วส่งให้อีกโปรเซสหนึ่ง วิธีนี้ทำให้โปรเซสหนึ่งติดต่อโปรเซสอื่นผ่าน mail box ได้หลาย mail box เมื่อ share mail box ก็จะทำให้การสื่อสารมีประสิทธิภาพจากแนวคิดเรื่องการใช้ mail box ทำให้มีแบบของ mail box ขึ้น 3 แบบ1. Queue mailbox มาก่อนออกก่อน แต่มีขนาด block คงที่ ใส่มากเกินไปก็จะเต็ม (First In First Out)2. Pipe mailbox มีขนาดยืดหยุ่น ใส่ข้อมูบได้เท่าที่ต้องการ3. Stack mailbox มาก่อนออกหลัง (First In Last Out)
    6.3 การซิงโครไนซ์ (Synchronization)
    การส่งข้อมูลระหว่างโปรเซสต้องใช้พื้นที่ในการเรียก send และ receive จึงต้องออกแบบให้การเรียกเป็นไปอย่างมีประสิทธิภาพ ซึ่งใช้ความรู้เรื่องการเข้า blocking และ nonblocking ไม่ให้เกิด deadlock ขึ้น จึงมีเรื่องต้องพิจารณา 4 เรื่องดังนี้- Blocking send : The sending process is blocked until the message is received by the receiving process or by the mailbox.- Nonblocking send : The sending process sends the message and resumes operation.- Blocking receive : The receiver blocks until a message is available.- Nonblocking receive: The receiver retrieves either a valid message or a null.
    6.4 บัฟเฟอร์ (Buffering)
    โดยพื้นฐานแล้วการส่งข่าวสารผ่านคิว จะมีลักษณะคิวอยู่ 3 แบบ- Zero capacity ไม่มีคิวอยู่ คือไม่มีการคอย ผู้ส่งต้องหยุดรอจนกระทั่งผู้รับได้รับ- Bounded capacity คิวที่มีความยาวจำกัด หรือมีขอบเขตแน่นอน- Unbounded capacity คิวที่มีความยาวไม่จำกัด ผู้ส่งจะไม่ถูกปฏิเสธ 
  • สถานะของโปรเซส

     

                  สถานะต่างๆ ในการทำงานของโปรเซสจะมีสถานะใดสถานะหนึ่งเท่านั้น ซึ่งจะมีหลายสถานะด้วยกัน ดังนี้

    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร

     รูปที่ 2.4  โอเอสจะจัดสรรและจัดการโปรเซสจำนวนมากมายให้ทำงานได้อย่างไร

        1. New

            คือโปรเวสที่เพิ่งสร้างขึ้น

        2.Ready

            คือสถานะที่โปรเซสพร้อมที่จะใช้งานซีพียูทันทีที่โอเอสที่มอบหมายให้ โดยสถานะนี้อยู่ในสถานะพร้อมที่จะรันเท่านั้น ยังไม่มีการรันหรือเอ็กซ์คิวต์แต่อย่างใด

        3. Running

            คือสถานะที่โปรเซสครอบครองซีพียู หรือซีพียูมีการเอ็กซ์คิวต์คำสั่งของโปรเซสนั้น

        4. Waiting

            คือสถานะโปรเซสนั้นกำลังรอเหตุการณ์อะไรบ้างอย่าง

        5. Block

            คือสถานะที่เกิดการขัดจังหวะการอุปกรณ์อินพุต/เอาต์พุต ซึ่งก็คืออินเตอร์รัพต์

        6.Terminated

            คือสถานะของโปรเซสที่ประมวลผลเสร็จสิ้น    


    ขั้นตอนการเปลี่ยนสถานะของโปรเซส

    การเปลี่ยนสถานะของโปรเซส


                           


       เมื่อมีโปรเซสใหม่ (New) เข้ามาในระบบ โปรเซสนั้นจะอยู่ใน


    สถานะพร้อมหรือ Ready ก่อน โดยจะไม่สามารถเข้าไป

    ครอบครองซีพียูได้ทันที 


    เพราะในขณะนั้นอาจมีโปรเซสอื่นๆ ต่างก็ต้องการเข้ามาใช้งานซี

    พียูเช่นกัน แต่มีซีพียูเพียงผู้เดียวในระบบ จึงมีโปรเซสหลายๆ 

    โปรเซสด้วยกันที่ต้องการ

    ใช้งานซีพียูเพื่อรันโปรเซสตน เมื่อโปรเซสหนึ่งเข้าไปครอบครอง

    ซีพียู โปรเซสอื่นจะไม่สามารถเข้าไปใช้งานได้ โปรเซสนั้นจะ

    ต้องอยู่สถานะ Ready

     พร้อมทั้งลำดับคิวของตนเพื่อรอคอยการใช้งานซีพียูต่อไป เมื่อ

    ซีพียูว่างลงด้วยสาเหตุการรันงานนั้นเสร็จหรือหมดช่วงระยะ

    เวลาในการโปรเซสหรือด้วย

    เหตุใดๆ ก็ตาม โอเอสก็จะนำโปรเซส Ready ที่อยู่ต้นคิวเข้ามา

    ใช้งานในซีพียูต่อไป 

     

    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร

    รูปที่ 2.5 การเปลี่ยนสถานะ (State) ของโปรเซส

                   ในสถานะ Running คือสถานะที่โปรเซสกำลังรัน

    งานอยู่ เมื่อรันงานจนเสร็จสิ้นโปรเซสนั้นก็จะ Terminated 

    หมายถึงการจบลงของโปรเซส ซึ่ง

     การจบลงของโปรเซสนั้นอาจเกิดจากการรันงานจนเสร็จสิ้น 

    หรือเกดิจากการยกเลิกการทำงานจากผู้ใช้ก็เป็นได้

                  จากรูปที่ 2.5 เป็นรูปแบบการโปรเซสแบบง่ายๆ 

    แต่ในกรณีที่มีหลายๆ โปรเซสต้องการใช้งานซีพียูเพื่อรันงาน

    ของตน เมื่อโปรเซสเปลี่ยนสถานะ

    จาก Ready เป็น Running ซีพียูจะว่างก็ต่อเมื่อโปรเซสรันจบ

    เท่านั้น ซึ่งหากโปรเซสนั้นมีช่วงระยะเวลาทำงานยาว ทำให้มีการ

    ครอบครองซีพียูยาวนาน ก็

    จะส่งผลให้โปรเซสอื่นๆ ที่อยู่ในสถานะ Ready รอคิวการใช้งาน

    นาน ดังนั้นโอเอสจึงมีการกำหนดระยะเวลาควอนตัม (Quantum 

    Time) ของแต่ละโปรเซส

     กล่าวคือหากมีครอบครองซีพียูจนครบระยะเวลาควอนตัม ก็จะ

    ทำการย้ายโปรเซสนั้นกลับไปอยู่สถานะ Ready เข้าไปต่อคิวใหม่ 

    และนำโปรเซส Ready ที่

     อยู่ต้นคิวเข้ามารันในซีพียูแทน การทำงานจะทำงานในลักษณะ

    เป็นรอบๆ วนไปเรื่อยๆ จนกระทั่งโปรเซสจบลงดังรูปที่ 2.

     

    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร


    รูปที่ 2.6 การเปลี่ยนสถานะของโปรเซสระหว่าง Running และ Ready


               ในระยะเวลาควอนตัม หากโปรเซสจบลงด้วยเหตุใดๆ ก็

    ตามโปรเซสนั้นๆ ก็จะเสร็จสิ้นหรือ Terminated ไป ทรัพยากร  

    Resource ต่างๆ ที่โปรเซสนั้น

     ครอบครองอยู่ก็ถูกส่งคืนให้แก่ระบบ แต่ถ้าในขณะนั้นโปรเซส

     กำลังรอเหตุการณ์บางอย่าง ไม่ว่าจะเป็นรอสัญญาณหรือ

    อุปกรณ์อินพุตเอาต์พุต โปรเซ

     สนั้นก็จะเปลี่ยนจากสถานะ Running ไปเป็น Waiting ซึ่งช่วง

    ระหว่างการรอเหตุการณ์ ระบบปฏิบัติการก็อาจนำโปรเซสในคิวที่

    อยู่ในสถานะ Ready มา

    ทำการเอ็กซ์คิวต์แทน

                  

    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร


    รูปที่ 2.7 การเปลี่ยนสถานะของโปรเซสระหว่าง Running Ready และ Waiting

     นอกจากนี้ ยังมีเหตุการณ์หนึ่งซึ่งเป็นขัดจังหวะจากอุปกรณ์ กล่าวคือ ซีพียูอาจถูกขัดจังหวะด้วยอุปกรณ์อินพุต เอาต์พุต ซึ่งเรียกว่าการอินเตอร์รัพต์ โดยพิจารณาจากรูปที่ 2.8 ดังนี้

    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร

     รูปที่ 2.8 โปรเซสถูกอินเตอร์รัพต์

    จากรูปที่2.8 สามารถอธิบายได้ว่า

    1. โปรเซสถูกบล็อกด้วยอุปกรณ์อินพุต เช่น คีย์บอร์ด

    2. ตัวจัดลำดับงาน (Seheduler) นำโปรเซสอื่นเข้ามา

    3. ตัวจัดลำดับงานทำงานนั้นไปโปรซส

    4. รับอินพุตทางคีย์บอร์ด

    เราเรียกเหตุการณ์ดังกล่าวนี้ว่าการอินเตอร์รัพต์ ซึ่งในช่วงเวลานั้นโปรเซสถูกบล็อกด้วยอุปกรณ์อินพุตก็จริง แต่เพื่อมิให้ซีพียูว่าง ระบบปฏิบัติการก็นำ

    โปรเซสต้นคิวที่ Ready มารันแทน จนกระทั่งอุปกรณ์คีย์บอร์ดพร้อมใช้งาน ก็จะทำการรันในลักษณะดังกล่าวต่อไปเรื่อยๆ


    การติดต่อกันระหว่าง process เป็นหน้าที่ของใคร

                

    รูปที่ 2.9 การจัดลำดับคิว (Scheduling Queues)

                      

     การติดต่อระหว่างโปรเซส 

    .การติดต่อสื่อสารระหว่างโปรเซส (Inter Process Communication:IPC) หมายถึงการที่โปรเซสต่างๆ ทาการติดต่อ ประสานกัน เพื่อให้การทางานเสร็จสิ้นตามต้องการ โครงสร้างพื้นฐานของการ ติดต่อสื่อสารระหว่างโปรเซส ในการส่งข้อความ (Message) ระหว่างโปรเซสนั้น โปรเซสที่ต้องการข้อความ จากโปรเซสอื่น จะต้องส่งคาร้องไปยังโปรเซสนั้นเมื่อโปรเซสได้รับคาร้องแล้วจึง ส่งข้อความไปให้เปรเซสที่ร้องขอซึ่ง ขนาดของข้อความไม่จาเป็นต้องเท่ากัน ในการติดต่อสื่อสารระหว่างโปรเซสจะมีการสร้างลิงค์ (Link) ขึ้นมา ระหว่างโปรเซส ซึ่งมีทั้งลิงค์ทางกายภาพ (Physical Link)เช่น หน่วยความจา ร่วม บัส หรือเครือข่าย และลิงค์ทางตรรกะ (Logical Link)

    1. ปัญหาในการสร้างลิงค์ทางตรรกะ 1.จะสร้างลิงค์อย่างไร 2. ลิงค์ที่สร้างนั้นมีความสัมพันธ์กับโปรเซสมากกว่า 2 โปรเซสหรือไม่ 3. ต้องสร้างลิงค์จานวนเท่าไร ระหว่างโปรเซส 2 โปรเซส 4. แต่ละลิงค์ต้องการพื้นที่เพื่อใช้เก็บข้อความจานวนเท่าไร 5. ขนาดของข้อความควรเป็นเท่าไร และแต่ละลิงค์จะต้องรองรับ ข้อความแบบ Variable Size หรือ Fixed Size 6. แต่ละลิงค์เป็นลิงค์ทางเดียว (Unidirectional) หรือลิงค์สองทาง (Bidirectional)
    2. การรับและส่งข้อความ หรือการใช้ลิงค์สามารถทาได้ ดังนี้ 1. การติดต่อสื่อสารเป็นแบบทางตรงหรือทางอ้อม 2. การติดต่อสื่อสารเป็นแบบสมมาตร (Symmetric) หรือไม่สมมาตร (Asymmetric) 3. พื้นที่ที่ใช้เก็บข้อความเป็นแบบอัตโนมัติหรือใช้บัฟเฟอร์เฉพาะแบบ 4. ส่งข้อความแบบสาเนา (Copy) หรือแบบอ้างอิง (Reference) 5. ข้อความมีขนาดคงที่หรือไม่คงที่
    3.  การตั้งชื่อ (Naming) โปรเซสที่ด้องการติดต่อสื่อสารกัน จาเป็นต้องมีการอ้างถึงซื่อของ ผู้รับและผู้ส่ง ซึ่งการอ้างถึงนี้สามารถทาได้ทั้งทางตรงหรือทางอ้อม การสื่อสารทางตรง (Direct Communication) การติดต่อแบนนี้จะต้องกาหนดซื่อเฉพาะในการติดต่อทั้งผู้รับและผู้ ส่งลิงค์แบบนี้มีคุณสมบัติคือ 1. ลิงค์จะเกิดขึ้นโดยอัตโนมัติ ระหว่างโปรเซสทั้งสอง โดยแต่ละโปรเซสต้อง รู้จักซื่อของอีกโปรเซสหนึ่ง 2. ลิงค์ 1 ลิงค์ จะเชื่อมระหว่าง 2 โปรเซสเท่านั้น 3. ลิงค์อาจเป็นแบบลิงค์ทางเดียวหรือลิงค์สองทางก็ได้ แต่ปกติมักเป็นแบบ ลิงค์สองทาง
    4.   การสื่อสารทางอ้อม (Indirect Communication) เป็นการติดต่อสื่อสารระหว่างโปรเซสโดยผ่านกล่องจดหมาย (Mail Box)หรือผ่านทางพอร์ต (Port) โดยข้อความที่ส่งไปมาระหว่าง โปรเซสจะถูกน่ามาเก็บไว้ในกล่องจดหมายก่อนที่จะส่งไปให้ โปรเซสผู้รับ กล่องจดหมายแต่ละกล่องจะมีหมายเลขที่ไม่ซ้ากัน ลิงค์แบบนี้มีคุณสมบัติ คือ 1. มีการสร้างลิงค์ระหว่างโปรเซส เมื่อโปรเซสมีการร่วมกันใช้กล่อง จดหมาย 2. ลิงค์หนึ่ง ๆ อาจมีความสัมพันธ์กันมากกว่า 2 โปรเซส 3. โปรเซสแต่ละคู่ อาจมีหลายลิงค์ที่แตกต่างกันได้ และแต่ละลิงค์จะ ติดต่อผ่านกล่อง จดหมายเดียว 4. ลิงค์อาจเป็นแบบลิงค์ทางเดียว หรือลิงค์สองทางก็ได้
    • การพักข้อมูล (Buffering) ในการสร้างลิงค์ นอกจากจะต้องกาหนดเส้นทางแล้วยังต้องมีพื้นที่ ส่วนหนึ่งเพื่อใช้เก็บข้อมูลชั่วคราว ซึ่งการเก็บข้อมูลนี้จะเก็บในลักษณะของคิว โดยพื้นฐานแล้วคิวนี้มีความจุ 3 รูปแบบคือ 1.ความจุแบบศูนย์ (Zero Capacity) เป็นคิวแบบมีความจุเป็น 0 คือ จะไม่มีการเก็บข้อความไว้ในคิวเลย เมื่อคิวได้รับข้อความแล้วจะส่งไปยัง ปลายทางทันที ในกรณีนี้ผู้ส่งจะต้องรอจนกว่าผู้รับจะได้รับข้อความ 2.ความจุแบบมีขอบเขต (Bounded Capacity) เป็นคิวที่มีขนาด ความจุคงที่ เมื่อใดที่ข้อความยังไม่เต็ม คิวจะรับข้อความเข้ามาอยู่ในคิว จนกว่าจะเต็ม เมื่อเต็มแล้วต้องรอจนกว่าจะมีที่ว่าง ข้อความใหม่จึงจะเข้ามาใน คิวได้ 3.ความจุแบบไร้ขอบเขต (Unbounded Capacity)เป็นคิวที่มีความจุ ไม่คงที่สามารถรับข้อความได้ตลอดเวลา ทาให้ผู้ส่งไม่ต้องรอเลย