บทที่ 2 การจัดการ Process

บทที่ 2 การจัดการ Process
โดย นายอาทิตย์ ยลระบิล  6031280069  ปวส.1


     process หมายถึง โปรแกรมที่กำลังถูกประมวลผลในการทำงานทั่วไปในระบบคอมพิวเตอร์นั้นผู้ใช้อาจต้องการเรียกใช้ word processorหรือjava compilerหรือโปรแกรมอื่นซึ่งโปรแกรมเหล่านี้จะถูกเปลี่ยนให้เป็น processผ่านกระบวนการที่ได้กำหนดไว้ ช่วงชีวิตของโปรแกรมที่กำลังถูกประมวลผลนี้มีอยู่หลายสถานะ (process state) และตัวของprocessเองก็ต้องมีที่เก็บข้อมูลที่เกี่ยวข้องกับตัวมันเองซึ่งเราเรียกส่วนนี้ว่า process control block (PCB)

องค์ประกอบของโปรเซส
1. หมายเลขโปรเซส (Process id) ของโปรเซส ซึ่งต้องไม่ซ้ำกับโปรเซสอื่น
2. โค้ดโปรแกรม (Program code) เป็นคำสั่งที่สามารถเอ็กซีคิ้วได้ทันที (ภาษาเครื่อง)
3. ข้อมูล (Data) ที่โปรแกรมต้องการหรือจัดการ ข้อมูลนี้อาจเป็นของโปรเซสใดโปรเซส
4. บล็อกควบคุมโปรเซส (Process control block) หรือ PCB OS กำหนดเนื้อที่บาง
ส่วนในหน่วยความจำเพื่อทำเป็น PCB PCB เป็นโครงสร้างข้อมูลชนิดหนึ่งซึ่งเก็บข้อมูลที่สำคัญๆ ของโปรเซสนั้นๆ เอาไว้ ข้อมูลเหล่านี้ได้แก่
   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)
5. PSW (program status words) เป็นตัวควบคุมลำดับการเอ็กซีคิ้วคำสั่งของโปรเซส และยังเก็บข้อมูลเกี่ยวกับสถานะของโปรเซส แอดเดรสของคำสั่งต่อไปที่จะถูกเอ็กซีคิ้วจะถูกเก็บไว้ใน PSW PSW นี้จึงมีหน้าที่คล้ายๆ กับโปรแกรมเคาน์เตอร์บนเครื่องไมโครคอมพิวเตอร์
6. คุณสมบัติของโปรเซส ได้แก่
6.1 ลำดับความสำคัญ (Priority) ของโปรเซส โปรเซสแต่ละตัวจะถูกกำหนดความสำคัญขึ้นขณะที่โปรเซสถูกสร้างขึ้น ความสำคัญนี้อาจเปลี่ยนแปลงได้หรือไม่ได้สุดแล้วแต่ OS โปรเซสที่มีความสำคัญมาก OS ก็จะให้สิทธิพิเศษมากกว่าโปรเซสที่มีความสำคัญน้อย เช่น ให้เวลาของซีพียูนานกว่า (ให้ครอบครองซีพียูได้นานกว่า)
6.2 อำนาจหน้าที่ (authority) เป็นสิ่งที่บ่งบอกว่าโปรเซสนั้นๆ สามารถทำอะไรได้บ้าง ใช้อุปกรณ์ชิ้นไหนได้บ้างเป็นต้น ตัวอย่างเช่นโปรเซส A ห้ามใช้ดิสก์ใดๆ ทั้งสิ้นแต่สามารถรับข้อมูลจากทุกๆ โปรเซสในระบบได้
6.3 คุณสมบัติอื่นๆ ที่ OS จะกำหนดให้มี


ข้อมูลต่างๆที่ปรากฏใน PCB มีดังต่อไปนี้
สถานะของกระบวนการ (Process state)
    กระบวนการต่างๆที่กำลังทำงานอยู่ในระบบเดียวกันจะมีการเปลี่ยนแปลงสถานะของกระบวนการถึง5สถานะด้วยกันซึ่งสถานะดังกล่าวจะถูกกำหนดขึ้นโดยกิจกรรม ณ เวลาปัจจุบันที่กระบวนการนั้นๆกำลังกระทำอยู่โดยที่แต่ละกระบวนการจะตกอยู่ในสถานะใดสถานะหนึ่ง
    - ตัวชี้โปรแกรม (Program counter)
    ใช้ตัวย่อว่า PC เป็นตัวชี้หรือควบคุมลำดับการทำงานตามคำสั่งในโปรแกรมปกติจะทำงานโดยนับ 0,1,2,3.. ตามลำดับ การนับดังกล่าวจะชี้ให้เห็นตำแหน่งที่อยู่ของข้อมูลในหน่วยความจำซึ่งจะมีการนำไบต์ถัดไปของข้อมูลออกมา
    - รีจิสเตอร์ของหน่วยประมวลผล (CPU registers)
     เป็นหน่วยความจำชั่วคราวความเร็วสูงที่ใช้ในการเก็บคำสั่งและข้อมูลสำหรับการประมวลผลภายในCPU
(ดังรูปที่ 3.4)
    รีจิสเตอร์จะอยู่ภายในหน่วยประมวลผลกลางและจะถูกจัดการและควบคุมโดยหน่วยควบคุม (Control Unit) ซึ่งจะใช้เป็นแหล่งเก็บข้อมูลและคำสั่งภายในโปรแกรมที่จะถูกนำมาประมวลผลโดยทั่วไปแล้วรีจิสเตอร์จะแบ่งออกได้หลายแบบตามหน้าที่ของรีจิสเตอร์แต่ละ ตัว
            1.Instruction Register - เก็บส่วนของคำสั่งโปรแกรม
            2.Address Register - เก็บส่วนแอดเดรสของคำสั่งโปรแกรม
            3.Storage Register - เก็บข้อมูลที่โอนย้ายมาจากRAM
            4.Accumulator - เก็บผลลัพธ์จากการประมวลผลชั่วคราว
ชนิดของรีจิสเตอร์ใช้เก็บข้อมูลที่จะทำการประมวลผลในทันทีได้แก่
            1.Program Counter (PC) ใช้เก็บตำแหน่งของคำสั่งถัดไป
            2.Instruction Register (IR) เก็บคำสั่งที่โหลดมาจากหน่วยความจำ(เก็บคำสั่งปัจจุบัน)
            3.Memory Address Register (MAR) เก็บตำแหน่งข้อมูลที่จะอ่านเขียนหน่วยความจำ
            4.Memory Buffer Register (MBR) เก็บข้อมูลที่จะอ่านหรือเขียนลงหน่วยความจำ
            5.Accumulator (AC) เก็บ ผลลัพธ์จากการประมวลผลชั่วคราว



Identifie
หมายเลขประจำตัวของ process
State
สถานะของ process ขณะประมวลผล
Priority
สิทธิของ process เมื่อเปรียบเทียบกับ process อื่น
Program counter
ตำแหน่งของการประมวลผลคำสั่งถัดไป
Memory pointers
ตัวชี้หน่วยความจำที่ process ใช้อยู่
Context data
ข้อมูลที่อยู่ใน register ของ process ขณะถูกประมวลผล
I/O status information
ข้อมูลของ I/O ที่ process เกี่ยวข้องAccounting information ข้อมูลเกี่ยวกับเวลาของ CPU ที่process ใช้, เวลาที่ใช้ไป, ช่วงเวลาที่สามารถใช้ได้ และอื่นๆ ที่เกี่ยวข้อง

สถานะของกระบวนการ (Process State)
    ระบบคอมพิวเตอร์แบบหลายโปรแกรม (Multiprogramming)และแบบผู้ใช้หลายคน (Multiuser)จะมีกระบวนการที่
ทำงานอยู่ในระบบหลายกระบวนการพร้อมๆกันโดยที่บางกระบวนการกำลังขอเข้าใช้งานหน่วยประมวลผลกลาง (CPU)บาง
กระบวนการกำลังใช้งานหน่วยประมวลผลกลางอยู่บางกระบวนการกำลังร้องขออุปกรณ์รับ-ส่งข้อมูลอยู่พฤติกรรมของกระบวนการ
เหล่านี้เรียกอีกอย่างว่า "สถานะกระบวนการ"(State of Process)กระบวนการ(Process)หมายถึงคำสั่งในโปรแกรมที่ถูก
ประมวลผลด้วยหน่วยประมวลผลกลางหรืออีกในหนึ่ง ณ เวลาใดๆจะมีเพียงอย่างมาหนึ่งคำสั่งที่ดำเนินการอยู่สถานะของ
กระบวนการ(Processtate)กระบวนการต่างๆที่กำลังทำงานอยู่ในระบบเดียวกันจะมีการเปลี่ยนแปลงสถานะของกระบวนการถึง
สถานะด้วยกัน ซึ่งสถานะดังกล่าวจะถูกกำหนดขึ้นโดยกิจกรรม ณ เวลาปัจจุบันที่กระบวนการนั้นๆกำลังกระทำอยู่โดยที่แต่ละ

กระบวนการจะตกอยู่ในสถานะใดสถานะหนึ่งจากสถานะทั้ง 5 ต่อไปนี้
  New              กระบวนการใหม่กำลังถูกสร้างขึ้น
  Running          กระบวนการกำลังทำงานตามคำสั่งในโปรแกรม
  Waiting          กระบวนการกำลังรอคอยให้เหตุการณ์บางอย่างเกิดขึ้น
  Ready            กระบวนการกำลังรอคอยที่จะเข้าใช้หน่วยประมวลผล
  Terminate        กระบวนการเสร็จสิ้นการทำงาน
 แสดงแผนภาพสถานการณ์ของกระบวนการ
     
    1.New เป็นสถานะของกระบวนการใหม่ที่กำลังถูกสร้างขึ้นหรือกระบวนการเลือกมาจากหน่วยความจำสำรอง(Disk)ซึ่งเป็นคำสั่งที่ผู้ใช้เรียกใช้ผ่าน Command Interpreterแปลเป็นคำสั่งไปเรียกระบบปฏิบัติการให้ดึงข้อมูลหรือโปรแกรมมาตามคำสั่งของผู้ใช้เพื่อเข้ามาประมวลผลในระบบ เมื่อคำสั่งต่างๆถูกเรียกเข้ามาคำสั่งเหล่านั้นจะมาเข้าแถวรอในแถวงาน(Job Queue) เตรียมเปลี่ยนสถานะเพื่อทำงาน
    2. Ready เป็นสถานะของกระบวนการที่เตรียมตัวเข้าไปใช้งานหน่วยประมวลผลกลางในสถานะนี้จะเปลี่ยนมาจาก New หรือ Waiting หรือ Running ก็ได้ กระบวนการที่มาจาก New, Waiting หรือ Running จะเข้าแถวคอยเพื่อเข้าไปใช้หน่วยประมวลผลกลางแถวคอยนี้เราเรียกว่า(Ready Queue)
    3. Runningเป็นสถานะของกระบวนการที่ได้เข้าไปใช้งานหน่วยประมวลผลกลาง ณ เวลาใดเวลาหนึ่งจะมีเพียง 1 กระบวนการเท่านั้นที่อยู่ในสถานะนี้ของระบบ1ระบบ(มีเพียงกระบวนการเดียวเท่านั้นที่จะได้ใช้หน่วยประมวลผลกลางของแต่ละระบบ) เนื่องจากข้อจำกัดของประมวลผลกลางทำงานด้วยความเร็วสูงมาก จึงไม่มีปัญหาในเรื่องการรอ
    4.Terminate เป็นสถานะของกระบวนการที่ได้รับการประมวลผลเสร็จเรียบร้อยแล้วหรือกระบวนการ มีการทำงานที่ผิดปกติ เช่น มีการหารด้วยศูนย์ระบบจะหยุดการทำงานของกระบวนการนั้น แล้วแจ้งให้ทราบถึงข้อผิดพลาดที่เกิดขึ้น (Error)
    5. Waiting เป็นสถานะของกระบวนการที่ได้เข้าไปใช้หน่วยประมวลผลกลางแล้วและมีการเรียกใช้อุปกรณ์รับ - ส่งข้อมูลหรืออุปกรณ์ต่างๆซึ่งทรัพยากรเหล่านั้นยังไม่ว่างหรือมีกระบวนการอื่นใช้อยู่(เนื่องจาก CPU ทำงานเร็วกว่าอุปกรณ์รับส่งข้อมูลมาก)กระบวนการเล่านั้นจะเปลี่ยนจากRunningมารอในสถานะนี้อาจมีกระบวนการหลายกระบวนการรออยู่จึงมีการจัดคิวในการรอทรัพยากรต่างๆเรียกว่า Device Queue หรือ Waiting Queue

การจัดเวลาโปรเซส 
     ระบบมัลติโปรแกรมมิ่ง คือ การจัดให้ 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. Context 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 ประการ 
  • ไม่มี process อยู่ใน critical region พร้อมกัน
  • ไม่มีสมมติฐาน และข้อจำกัด ด้านความเร็ว หรือจำนวนซีพียูมาเป็นปัจจัย
  • ไม่มี process นอก critical region ที่ block การทำงานของ process อื่น
  • ไม่มี process ที่รอเข้าใจ critical region ตลอดเวลา

การแก้ปัญหา Mutual exclusion with busy waiting

  1. Disable interrupt
  2. Lock variable
  3. Strict alternation
  4. Peterson's solution
  5. TSL instruction

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

    1. การสร้างโปรเซส (Process creation)
    ถ้า process สร้าง process ขึ้นใหม่ เมื่อพิจารณาการ execute
    1. โปรเซสแม่ยังประมวลผลต่อไป พร้อมโปรเซสลูก
    (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]
       
       
      โปรเซสสื่อประสาน (Cooperating process)
        โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้
        1. การแบ่งปันข่าวสารข้อมูลร่วมกัน (Information sharing)
        2. เพิ่มความเร็วในการคำนวณ (Computation speedup)
        3. แบ่งงานตามหน้าที่เป็นโมดูล (Modularity)
        4. ความสะดวก (Convenience)
       
      การสื่อสารในโปรเซส (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 คิวที่มีความยาวไม่จำกัด ผู้ส่งจะไม่ถูกปฏิเสธ

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

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

        ปัญหาการทำงานของโปรเซส

        ปัญหาที่เกิดขึ้นกับระบบปฏิบัติการเป็นปัญหาที่หน้าสนใจและถกเถียงกันอย่างกว้างขวางตลอดจนมีการวิเคราะห์โดยการใช้วิธีการด้านซินโครไนต์จะกล่าวถึง3ปัญหาดังนี้ 
        1.TheDiningPhilosophersProblemปัญหาแรกนี้ไดจก์สตราได้เสนอไว้โดยสมมุติว่ามีนักปราชญ์5ท่านนั่งรอบโต๊ะกลมเพื่อทานอาหารที่วางตรงหน้าในการทานอาหารนักปราชญ์แต่ละท่านต้องใช้ตะเกียบทั้ง2ข้าง 
        ที่วางอยู่ซ้ายมือและขวามือ 
        เมื่อทานเสร็จในรอบนั้นจะต้องวางตะเกียบลงเพื่อเปิดโอกาสให้ทานอื่นได้ทานอาหารบ้างจะเกิดDeadlock เมื่อทั้ง5ท่านหยิบตะเกียบท่านละ1ข้างพร้อมกันสมมุติว่าทุกท่านหยิบตะเกียบข้างซ้ายมือพร้อมกันทุกท่านจะต้อรอตะเกียบข้างขวาว่างจึงจะทานอาหารได้ 
        2. The Readers-Writers Problem 
        ปัญหาการทานอาหารของนักปราชญ์มีประโยชน์มากสำหรับการเป็นโมเดลของโปรเซสที่ช่วยแก้ปัญหาการใช้รีซอร์สที่แชร์กันอยู่อย่างจำกัดยังมีปัญหาอีกอย่างคือ 
         Readers-Writers Problem 
        เป็นปัญหาเกี่ยวข้องกับระบบคอมพิวเตอร์ที่มีกลุ่มข้อมูลใช้งานร่วมกันซึ่งมีโปรเซสอยู่ 
         2 ประเภทคือ อ่านข้อมูลร่วมและที่บัญทึกหรือเขียนข้อมูล 
        -The Sleeping 
        Barber Problem ปัญหาที่ 3 เป็นปัญหาที่เกิดในร้านตัดผมที่มีช่างตัดผม 1 คน 
         เก้าอี้ตัดผม 1 ตัวและมีเก้าอี้ที่นั่งรอคิวอีกจำนวน 1 
        ถ้าไม่มีลูกค้าช่างตัดผมจะนอนพักผ่อนบนเก้าอี้ตัดผมเทื่อลูกค้าเข้ามาในร้านจะปลุกช่างตัดผมเข้ามาตัดผมถ้ามีลุกค้าเดินมาเข้าร้านเพิ่มอีกก็จะนี่งรอหรือไม่ก็ออกจากร้านไป 
        การแก้ปัญหาจะใช้ 3 Semaphore ดังนี้ 
        - Customers ที่นับจำนวนลูกค้า 
        - Barbers ที่นับจำนวนช่างตัดผม 0 หรือ 1 
        -Mutex ที่ใช้สำหรับ Mutual Exclusion
                         แบบฝึกหัด
        1.สถานะของโปรเซสมีอะไรบ้าง จงอธิบายตอบ
        ตอบ 1.New คือโปรเวสที่เพิ่งสร้างขึ้น      2.Ready คือสถานะที่โปรเซสพร้อมที่จะใช้งานซีพียูทันทีที่โอเอสที่มอบหมายให้ โดยสถานะนี้อยู่ในสถานะพร้อมที่จะรันเท่านั้น ยังไม่มีการรันหรือเอ็กซ์คิวต์แต่อย่างใด      3. Running คือสถานะที่โปรเซสครอบครองซีพียู หรือซีพียูมีการเอ็กซ์คิวต์คำสั่งของโปรเซสนั้น     4. Waiting คือสถานะโปรเซสนั้นกำลังรอเหตุการณ์อะไรบ้างอย่าง     5. Block คือสถานะที่เกิดการขัดจังหวะการอุปกรณ์อินพุต/เอาต์พุต ซึ่งก็คืออินเตอร์รัพต์ 
            6.Terminated คือสถานะของโปรเซสที่ประมวลผลเสร็จสิ้น
        2.เวลา Quantum Time คืออะไร  
        ตอบ เวลาที่ขอใช้งาน CPU
        3.ปัญหา DeadLock เกิดขึ้นได้อย่างไร
        ตอบ  - ทรัพยากรเป็นแบบใช้ร่วมกันไม่ได้           • 1 โปรเซสเท่าั้นั้นที่จะใช้ทรัพยากรได้  อีกโปรเซสต้องรอ      - ไม่มีการแทรกกลางคัน           • ทรัพยากรจะถูกคืนเมื่อโปรเซสต้องการค้น  หากไ่ม่คืน OS ทำอะไรไม่ได้
        4.สถานะ Block เกิดขึ้นได้อย่างไร
        ตอบ คือสถานะที่เกิดการขัดจังหวะการอุปกรณ์อินพุต/เอาต์พุต ซึ่งก็คืออินเตอร์รัพต์  
        5.การติดต่อกันระหว่าง Process เป็นหน้าที่ของโคร
        ตอบ IPC สนับสนุนกลไดเพื่อให้โปรเซสสามารถติดต่อซึ่งกันและกันได้อย่างมีประสิทธิภาพ IPC สนับสนุนอบ่างน้อย 2 ประการคือ กาส่งแมสเสจ และรับแมสเสจ ซึ่งการสนับสนุนจะต้องคำนึงถึงสิ่งเหล่านี้
          6.พอร์ท มีกี่แบบอะไรบ้าง
        ตอบ 3 แบบ  1) พอร์ทแบบคิว            2) พอร์ทแบบไปป์            3) พอร์ทแบบสแต็ก 7.จงยกตัวอย่าง พอร์ทแบบสเต็ก
        ตอบ ข้อมูลชุดใดที่ถูกส่งเข้ามาก่อนจะถูกดึงออกทีหลัง  ข้อมูลที่จะถูกดึงออกจากพอร์ทคือข้อมูลชุดหลังสุดที่ถูกส่งเข้ามาในพอร์ท
          8.Mutual exclusion เกิดขึ้นได้อย่างไร
        ตอบ การกีดกั้นไม่ยอมให้โปรเซสใด ๆ  เข้าใช้พื้นที่ที่เป็น Critical region
          9.ปัญหาการอดตาย เกิดขึ้นได้อย่างไร
        ตอบ เมื่อโปรเซสใดโปรเซสหนึ่ง  ต้องการใช้อุปกรณ์พร้อมกัน  โปรเซสที่จะได้ใช้ก่อนก็คือโปรเซสที่มีลำดับความสำคัญสูงกว่า
          
        10.องค์ประกอบของโปรเซส มีอะไรบ้าง
        ตอบ 1) หมายเลขโปรเซส        5) PSW     2) โค๊ดโปรแกรม           6) คุณสมบัติของโปรเซส     3) ข้อมูล     4) บล็อคควบคุมโปรเซส
        ที่มาของแหล่งข้อมูล

        https://sites.google.com/site/bthreiynbththi99/1/kar-pramwl-phl-hrux-por-ses


        http://oknation.nationtv.tv/blog/surawit/2008/08/20/entry-6

        http://csnon04.blogspot.com/2008/03/2-thread.html
        https://www.slideshare.net/thanapornsingsuk/ss-43479538
         
         
       




ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

บทที่ 3 การจัดเวลาซีพียู (CPU Scheduling)

บทที่ 4 การจัดการหน่วยความจำ