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

  ใบงานที่2

การจัดการ Process

นาย ธนาธิป เล็กกุล รหัส 6031280003


 โปรเซส หมายถึง โปรแกรมที่กำลังเอ็กซิคิวต์อยู่
 -ในขณะที่โปรเซสกำลังเอ็กซิคิวต์อยู่นั้นจะมีการใช้ทรัพยากร (Resource) ของระบบ เช่น CPU, หน่วยความจำ, ไฟล์, อุปกรณ์ อินพุต/เอาต์พุต
-ในระบบ Multiprogramming อาจประกอบด้วยโปรเซสมากมาย
   -OS จึงมีหน้าที่ในการจัดการโปรเซสในระบบทั้งหมด ไม่ว่าจะเป็นการสร้าง ลบ การจัดเวลา การจัดจังหวะและการติดต่อสื่อสารภายในโปรเซส
ส่วนประกอบของโปรเซส

1. ชื่อและหมายเลขประจำตัว
    เป็นชื่อหรือหมายเลขโปรเซส ซึ่งจะไม่มีการซ้ำกัน
2. คำสั่งโปรแกรม
    เป็นคำสั่งที่สามารถรันได้ทันที (ภาษาเครื่อง)
3. ข้อมูล
     คือ ข้อมูลที่โปรแกรมต้องการหรือนำไปใช้ประกอบการทำงาน ซึ่งข้อมูลนี้อาจจะเป็นข้อมูลของโปรเซสอื่นๆ ที่อาจใช้งานร่วมกันได้

4. บล็อกควบคุมโปรเซส (Process Control Bolck : PCB )                                                                                                                                 
    PCB เป็นโตรงสร้างข้อมูลชนิดหนึ่งที่โอเอสสร้างขึ้นในหน่วยความจำเพื่อไว้เก็บข้อมูลสำคัญๆ ของโปรเซสต่างๆ ไว้ เช่น
         -  หมายเลขประจำตัวโปรเซส (Process Identification Number : Process ID
         -  สถานะโปรเซส Process State

   -  ลำดับความสำคัญของโปรเซส (Process Piority)

   -  พอยน์เตอร์ชี้ไปยังตำแหน่งที่อยู่ของโปรเซสในหน่วยความจำ (Location of Process)
   -  พอยน์เตอร์ชี้ไปยังทรัพยากรต่างๆ ที่โปรเซสครอบครอง (Current Resource and Limits)

   -  พื้นที่ที่เก็บค่าของรีจิสเตอร์ (Resgister save area)
   -  ช่วงเวลาสูงสุด เวลาสะสมในการทำงานของโปรเซส (Maximum run time and accumulated run time)
      5. PSW (Program Status Words)
             เป็น ตัวควบคุมลำดับการรันคำสั่งของโปรเซส ซึ่งจะเก็บข้อมูลสถานะของโปรเซสแอดเดรสของคำสั่งต่อไปที่จะถูกรัน ซึ่งเปรียบ                         เสมือนโปรแกรม Counter
    6. คุณสมบัติของโปรเซส
            เป็นตัวกำหนดคุณสมบัติของแต่ละโปรเซส ซึ่งประกอบด้วย
            -  ลำดับความสำคัญ (Piority)โปรเซสแต่ละโปรเซสจะถูกกำหนดความสำคัญในขณะที่โปรเซสถูกสร้างขึ้น ความสำคัญโปรเซสนี้อาจเปลี่ยนแปลงได้หรือไม่ขึ้นอยู่กับตัวโอเอส แต่โอเอสจะให้สิทธิพิเศษกับโปรเซสที่มีความสำคัญสูง เช่น อาจให้ระยะเวลาในการครอบครองซีพียูที่ยาวนานกว่าโปรเซสอื่นๆ ทั่วไปหรือจะโปรเซสงานที่มีลำดับความสำคัญสูงเป็นอันดับแรกก่อน เป็นต้น

     -  อำนาจหน้าที่ (Authorityเป็นรายละเอียดที่บอกถึงโปรเซสนั้นๆ ว่าสามารถทำอะไรบ้าง ใช้อุปกรณ์ชิ้นไหนได้บ้าง ตัวอย่างเช่น โปรเซส เอ สามารถรับข้อมูลจากทุกๆโปรเซสในระบบได้ แต่ไม่สามารถใช้งานดิสก์ได้ เป็นต้น

     -  คุณสมบัติอื่นๆ ที่ตัวโอเอสเป็นตัวกำหนดให้มี 



 รูปที่ 2.3 Process Control Block (PCB)


       อาจกล่าวได้ว่า PCB นี้เป็นศูนย์กลางในเก็บข้อมูลสำคัญทั้งหลายของทุกๆ โปรเซส เช่น ในระยะเวลาควอนตัม (Quantum time) ที่กำลังโปรเซสงานหนึ่งอยู่ เมื่อครบเวลาแล้วแต่งานนั้นยังไม่เสร็จสิ้น ก็จำเป็นต้องพักงานชั่วคราวเพื่อไปทำงานโปรเซสในลำดับต่อไปช่วงเวลานี้เป็นช่วงเวลาที่สำคัญมาก เนื่องจากจะต้องเก็บข้อมูลสถานะต่างๆ ของโปรเซสนั้นไว้ใน PCB ก่อน ที่จะไปทำงานในโปรเซสอื่น ดังนั้นจะต้องพักงาน

ในโปรเซสนี้ชั่วคราวเพื่อไปทำงานในโปรเซสอื่น แต่หลังจากกลับมาทำงานต่อจากโปรเซสเดิมที่พักชั่วคราวไว้ โอเอสหรือระบบปฏิบัติการจะต้องสามารถจัดการสานงานต่อจากงานเดิมได้ ดังนั้นหน้าที่ของโอเอสจะต้องเก็บสถานะและรายละเอียดสำคัญๆ ของแต่ละโปรเซสไว้ใน PCB
สถานะของกระบวนการ (Process State)
    ระบบคอมพิวเตอร์แบบหลายโปรแกรม (Multiprogramming)และแบบผู้ใช้หลายคน (Multiuser)จะมีกระบวนการที่
ทำงานอยู่ในระบบหลายกระบวนการพร้อมๆกันโดยที่บางกระบวนการกำลังขอเข้าใช้งานหน่วยประมวลผลกลาง (CPU)บาง
กระบวนการกำลังใช้งานหน่วยประมวลผลกลางอยู่บางกระบวนการกำลังร้องขออุปกรณ์รับ-ส่งข้อมูลอยู่พฤติกรรมของกระบวนการ
เหล่านี้เรียกอีกอย่างว่า "สถานะกระบวนการ"(State of Process)กระบวนการ(Process)หมายถึงคำสั่งในโปรแกรมที่ถูก
ประมวลผลด้วยหน่วยประมวลผลกลางหรืออีกในหนึ่ง ณ เวลาใดๆจะมีเพียงอย่างมาหนึ่งคำสั่งที่ดำเนินการอยู่สถานะของ
กระบวนการ(Processtate)กระบวนการต่างๆที่กำลังทำงานอยู่ในระบบเดียวกันจะมีการเปลี่ยนแปลงสถานะของกระบวนการถึง
สถานะด้วยกัน ซึ่งสถานะดังกล่าวจะถูกกำหนดขึ้นโดยกิจกรรม ณ เวลาปัจจุบันที่กระบวนการนั้นๆกำลังกระทำอยู่โดยที่แต่ละ
กระบวนการจะตกอยู่ในสถานะใดสถานะหนึ่งจากสถานะทั้ง 5 ต่อไปนี้
            New              กระบวนการใหม่กำลังถูกสร้างขึ้น
            Running          กระบวนการกำลังทำงานตามคำสั่งในโปรแกรม
            Waiting          กระบวนการกำลังรอคอยให้เหตุการณ์บางอย่างเกิดขึ้น
            Ready            กระบวนการกำลังรอคอยที่จะเข้าใช้หน่วยประมวลผล
            Terminate        กระบวนการเสร็จสิ้นการทำงาน orde�.. f.-..0�.0.�. windowtext .5pt; mso-border-alt:solid windowtext .5pt;padding:0cm 5.4pt 0cm 5.4pt'>ตัวชี้หน่วยความจำที่ process ใช้อยู่Context dataข้อมูลที่อยู่ใน register ของ process ขณะถูกประมวลผลI/O status informationข้อมูลของ I/O ที่ process เกี่ยวข้องAccounting information ข้อมูลเกี่ยวกับเวลาของCPU ที่process ใช้, เวลาที่ใช้ไป, ช่วงเวลาที่สามารถใช้ได้และอื่นๆที่เกี่ยวข้อง            

แสดงแผนภาพสถานการณ์ของกระบวนการ
    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 Control Block)ระบบปฏิบัติการแทนกระบวนการต่างๆด้วยตารางข้อมูลของกระบวนการ PCB ซึ่งก็เป็นระเบียนหรือตารางข้อมูลที่ใช้เก็บข้อมูลต่างๆที่เกี่ยวข้องกับแต่ละกระบวนการโดย
เฉพาะ ดังรูปที่ 
  
       แสดงตารางข้อมูลประมวลผล
ข้อมูลต่างๆที่ปรากฏใน 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) เก็บ ผลลัพธ์จากการประมวลผลชั่วคราว

    -ข้อมูลในการจัดตารางทำงานของหน่วยประมวลผลกลาง(CPU-scheduling information)       
 เมื่อใดก็ตามที่ซีพียูว่างระบบปฏิบัติการจะเข้ามาเลือกโปรเซสตัวใดตัวหนึ่งที่พร้อมอยู่ในคิวเข้ามาใช้ซีพียูจะถูกจัดการด้วยส่วนที่ เรียกว่าตัวจัดตารางการทำงานระยะสั้น(Short-term scheduler)หรือตัวจัดตารางการทำงานของซีพียู CPU Scheduler)

    -สารสนเทศเกี่ยวกับการจัดการหน่วยความจำ(Memory-management information)

            หน่วยความจำหลักเป็นศูนย์กลางของการทำงานต่างๆของระบบคอมพิวเตอร์ในปัจจุบันซึ่งประกอบด้วยที่เก็บข้อมูลย่อยเป็นไบต์(Byte)หรือเวิร์ด(Word)โดยแต่ละไบต์จะมีเลขที่บอกตำแหน่ง(Address)ของตัวเองการใช้งานหน่อยความจำหลักทำได้โดยการอ่านหรือเขียนข้อมูลที่ตำแหน่งต่างๆเหล่านี้ซึ่งตามปกติหน่วยประมวลกลางจะเป็นผู้ใช้งาน 
(เพิ่มเติมในบทที่8)

     - ข้อมูลทางการบัญชี(Accounting information)เป็นข้อมูลที่บอกว่ากระบวนการนี้ถูกเรียกใช้บ่อยแค่ไหนเป็นเวลาเท่าใด

       


    Process Scheduling
            วัตถุของหลายๆโปรแกรมจะมีบางกระบวนการที่ทำงานตลอดเวลาอยู่เพื่อประโยชน์สูงสุดของซีพียูtime sharingของวัตถุจะมีการสลับการเข้าใช้ซีพียูโดยกระบวนการจะมีความถี่ตามขณะที่ผู้ใช้กำลังตอบโต้กับโปรแกรมใช้งานที่กำลังทำงานอยู่วัตถุที่จะทำงานจะถูกเลือกโดยProcess scheduler
รูปที่ คิวที่พร้อมทำงานและ การเปลี่ยนแปลงคิวของอุปกรณ์ I/O

       สำหรับกระบวนการที่มีอยู่นั้นของโปรแกรมจะทำงานอยู่บนซีพียูถ้ามีหลายกระบวนการที่หลับอยู่จนกระทั่งซีพียูมีอิสระจะสามารถกลับเข้ามายัง Scheduler ได้อีก Scheduling Queuesเมื่อกระบวนการได้เข้าสู่ระบบ มันจะถูกนำเข้าไปใส่ไว้ใน job queue ซึ่งจะประกอบด้วย
กระบวนการทั้งหมดที่มีอยู่ในระบบ และกระบวนการจะถูกนำเข้าสู่หน่วยความจำหลักเพื่อเตรียมตัวและรอการเข้าไปประมวลผล โดยจะขึ้นอยู่กับรายการ ซึ่งจะถูกเรียกว่า ready queue โดยคิวจะมีรูปแบบในการเก็บทั่ว ๆ ไปคือ แบบ ลิงค์ลิสต์ ส่วนหัวของ ready queue จะประกอบไปด้วย pointer สำหรับชี้ไปยังตำแหน่งแรก หรือตำแหน่งสุดท้ายในรายการของ PCBs PCB จะรวมถึง pointer ที่จะชี้ไปยังจุด PCB ถัดไปภายใน ready queue
ระบบจะถูกรวมไปด้วยคิวอื่น ๆ เมื่อกระบวนการอยู่ในซีพียู มันจะทำงานซ้ำไปเรื่อย ๆ จนถึงเหตุการณ์ที่มันต้องหลุดออกไป ก็คือ การขัดจังหวะ หรือ รอให้เกิดเหตุการณ์ขึ้นมาอีกครั้ง  การแข่งขันของการร้องขอจาก I/O จะมีวัตถุประสงค์เพื่อให้กระบวนการสามารถที่จะใช้อุปกรณ์ร่วมกันได้ อย่างเช่น ฮาร์ดดิสก์ ตั้งแต่เมื่อมีหลายกระบวนการอยู่ภายในระบบ ฮาร์ดดิสก์จะยุ่งมากเมื่อ I/O ร้องขอการใช้งานจากกระบวนการอื่น ๆ ทำให้กระบวนการต้องรอเพื่อที่จะได้ใช้ฮาร์ดดิสก์    รายการการรอของกระบวนการสำหรับอุปกรณ์ I/O จะถูกเรียกว่า device queue  อย่างดังแสดงในรูปตัวอย่าง พื้นฐานในการแสดงคำอธิบายของ queuing diagram จะดังแสดงในรูป
                        รูปกล่องสี่เหลี่ยมจัตุรัสจะเป็นการนำแสนอคิว คิวจะมีสองประเภทคือ ready queue และ  เซตของ device queue  วงกลมจะนำเสนอในรูปแบบของทรัพยากรที่จะนำไปให้กับคิวและลูกศรจะแสดงการไหลของกระบวนการในระบบ
                        กระบวนการที่สร้างขึ้นมาใหม่จะถูกนำไปใส่ใน ready queue มันจะรอไปจนกระทั่งถูกเลือกขึ้นมาทำงาน หรือ dispatched เมื่อกระบวนการถูกนำเข้าไปทำงานบนซีพียู หนึ่งในหลายๆเหตุการณ์ก็จะสามารถเกิดขึ้นได้
.
Queuing diagram แสดงถึงตารางการทำงานของกระบวนการ
     กระบวนการสามารถที่จะสร้างกระบวนการย่อยได้และสำหรับการรอของกระบวนการย่อยจะสิ้นสุดลงด้วยตัวมันเองเราสามารถที่จะลบกระบวนการออกจากซีพียูได้โดยการบังคับซึ่งจะได้ผลลัพธ์ของการขัดจังหวะและจะถูกนำไปใส่ลงใน readyqueue
    ในหนึ่งสองกรณีที่เหตุการณ์ของกระบวนการที่จะทำการสลับจากสถานการณ์รอไปสู่สถานะพร้อมและมันจะถูกนำไปใส่ใน ready queueกระบวนการจะทำงานต่อเนื่องไปเป็นวงจรจนกระทั่งสิ้นสุดการทำงานและเมื่อเราลบออกจากคิวทั้งหมดแล้วPCB และทรัพยากรจะถูกนำกลับคืนมา
สถานะของโปรเซส



 ระบบมัลติโปรแกรมมิ่ง คือ การจัดให้ 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 ใด ๆ เข้าใช้พื้นที่

3.4 การปฏิบัติการบนโปรเซส
ขณะคอมพิวเตอร์ทำงานต้องการสร้าง และลบ 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 ไม่ยอมให้โปรเซสลูกทำงานต่อไป


โปรเซสสื่อประสาน (Cooperating process)
โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น 
4 การปฏิบัติการบนโปรเซส
    ขณะคอมพิวเตอร์ทำงานต้องการสร้าง และลบ 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]

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 คิวที่มีความยาวไม่จำกัด ผู้ส่งจะไม่ถูกปฏิเสธ

7 แบบของการประมวลผล 1. การประมวลผลแบบเดี่ยว (Single processing) หรือ Sequential processing (one result / m cycles)
2. การประมวลผลแบบพหุ (Multi processing) หรือ Pipelining (one result / cycle)
3. การประมวลผลแบบขนาน (Parallel processing) หรือ Parallel processing (n results / m cycles)

อ้างอิง:www.chantra.sru.ac.th



แบบฝึกหัดบทที่ 2

1.สถานะของโปรเซสมีอะไรบ้างจงอธิบาย
ตอบ สถานะต่างๆ ในการทำงานของโปรเซสจะมีสถานะใดสถานะหนึ่งเท่านั้น ซึ่งจะมีหลายสถานะด้วยกัน ดังนี้
 รูปที่ 2.4  โอเอสจะจัดสรรและจัดการโปรเซสจำนวนมากมายให้ทำงานได้อย่างไร
    1. New
        คือโปรเวสที่เพิ่งสร้างขึ้น
    2.Ready
        คือสถานะที่โปรเซสพร้อมที่จะใช้งานซีพียูทันทีที่โอเอสที่มอบหมายให้ โดยสถานะนี้อยู่ในสถานะพร้อมที่จะรันเท่านั้น ยังไม่มีการรันหรือเอ็กซ์คิวต์แต่อย่างใด
    3. Running
        คือสถานะที่โปรเซสครอบครองซีพียู หรือซีพียูมีการเอ็กซ์คิวต์คำสั่งของโปรเซสนั้น
    4. Waiting
        คือสถานะโปรเซสนั้นกำลังรอเหตุการณ์อะไรบ้างอย่าง
    5. Block
        คือสถานะที่เกิดการขัดจังหวะการอุปกรณ์อินพุต/เอาต์พุต ซึ่งก็คืออินเตอร์รัพต์
    6.Terminated
        คือสถานะของโปรเซสที่ประมวลผลเสร็จสิ้น                     
2.เวลาQuanyum timeคืออะไร 

ตอบ เวลาควอนตัม(Quantum Time) คือระยะเวลาที่ระบบปฏิบัติการกำหนดไว้ให้กับโปรเซสในการอยู่ในสถานะ Running ของโปรเซสซึ่งจะเป็นระยะเวลาหน่วยเล็กที่สุด

3.ปัญหาDeadLockเกิดขึ้นได้อย่างไร
   ตอบ การติดตายเกิดจากสาเหตุ 4 ประการ ดังนี้
1.การบังคับไม่ให้โปรเซสเข้าใช้ทรัพยากร ทำให้โปรเซสอื่นๆ ไม่สามารถเข้าใช้ทรัพยากรในขณะที่ทรัพยากรนั้นถูกครอบครองโดยโปรเซสใดโปรเซสหนึ่งอยู่
2.การครองทรัพยากรค้างไว้ในขณะที่ร้องขอใช้ทรัพยากรอีกอย่างหนึ่ง
3.การที่ไม่สามารถปลดปล่อยทรัพยากรที่ครองอยู่ได้ เนื่องจากจะก่อให้เกิดความเสียหายต่องานที่กำลังทำอยู่

4.สถานะBlockเกิดขึ้นได้อย่างไร
ตอบ เกิดการขัดจังหวะจากอุปกรณ์อินพุต/เอาต์พุต ซึ่งก็คือการอินเตอร์รัพต์

5.การติดต่อกันระหว่างProcessเปนหน้าที่ของใคร  
ตอบ หน่วยความจำร่วม

6.พอร์ทมีกี่เเบบอะไรบ้าง
ตอบ   3เเบบ
      1.พอร์ทเเบบคิว
      2.พอร์ตเเบบไปป์
           3.พอร์ทเเบบเเสต๊ก  
7.จงยกตัวอย่างพอร์ตเเบบเเสต๊ก
ตอบ ข้อมูลชุดใดที่ถูกส่งเข้ามาก่อนจะถูกดึงออกทีหลัง  ข้อมูลที่จะถูกดึงออกจากพอร์ทคือข้อมูลชุดหลังสุดที่ถูกส่งเข้ามาในพอร์ท

8. Mutual exclusion  เกิดขึ้นได้อย่างไร
ตอบ  การกีดกั้นไม่ยอมให้โปรเซสใด ๆ  เข้าใช้พื้นที่ที่เป็น Critical region


9. ปัญหาการอดตายเกิดขึ้นได้อย่างไร
ตอบ  เมื่อโปรเซสใดโปรเซสหนึ่ง  ต้องการใช้อุปกรณ์พร้อมกัน  โปรเซสที่จะได้ใช้ก่อนก็คือโปรเซสที่มีลำดับความสำคัญสูงกว่า

10. องค์ประกอบของโปรเซส  มีอะไรบ้าง

ตอบ 
1) หมายเลขโปรเซส                 5) PSW
       2) โค๊ดโปรแกรม                      6) คุณสมบัติของโปรเซส
       3) ข้อมูล
       4) บล็อคควบคุมโปรเซส   

 






























 

ความคิดเห็น

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

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

บทที่ 5 หน่วยความจำเสมือน