บทที่2 การจัดการ process
โดย นาย พัทธนันท์ อุรัตน์ รหัสนักศึกษา 6031280059

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

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

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)


 4.1 Pointer: ชี้ตำแหน่งของโปรเซสที่อยู่ในหน่วยความจำและตำแหน่งของ ทรัพยากร
     ที่โปรเซสครอบครองอยู่
 4.2 Process State: แสดงสถานะของโปรเซสที่เป็นอยู่ในปัจจุบัน  
 4.3 Process ID: หมายเลขประจำตัวของโปรเซส
 4.4 Program Counter: ตัวนับที่แสดงที่อยู่ของคำสั่งต่อไปที่จะถูกเอ็กซิคิวต์สำหรับ
     โปรเซส นี้  
 4.5 Register: เก็บข้อมูลสถานะระบบเมื่อมี Interrupt  
 4.6 CPU Scheduling Info: ข้อมูลลำดับความสำคัญของโปรเซส 
 4.7 Memory Management Info: ข้อมูลเกี่ยวกับหน่วยความจำที่ OS กำหนดไว้  
 4.8 Account Information: ข้อมูลประกอบด้วย จำนวน CPU, เวลาที่กำหนด,หมายเลข       Account, หมายเลขโปรเซส 
 4.9 I/O Status Information: ข้อมูลที่แสดงรายการของอุปกรณ์ I/O ที่โปรเซสนี้ใช้ 



 5. PSW (Program Status Word)     เป็นตัวควบคุมลำดับการ เอ็กซิคิวต์คำสั่งของ     โปรเซส และเก็บข้อมูลเกี่ยวกับสถานะของโปรเซส ที่อยู่ของคำสั่งที่จะเอ็กซิคิวต์ต่อไป
 

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

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

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


สถานะของโปรเซส 

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

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

 

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

2.Readyคือสถานะที่โปรเซสพร้อมที่จะใช้งานซีพียูทันทีที่โอเอสที่มอบหมายให้ โดยสถานะนี้อยู่

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

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

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

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

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



    


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


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

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



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



 ในสถานะ Running คือสถานะที่โปรเซสกำลังรันงานอยู่ เมื่อรันงานจนเสร็จสิ้นโปรเซสนั้นก็จะ Terminated หมายถึงการจบลงของโปรเซส ซึ่งการจบลงของโปรเซสนั้นอาจเกิดจากการรันงานจนเสร็จสิ้น หรือเกดิจากการยกเลิกการทำงานจากผู้ใช้ก็เป็นได้จากรูปที่ 2.5 เป็นรูปแบบการโปรเซสแบบง่ายๆ แต่ในกรณีที่มีหลายๆ โปรเซสต้องการใช้งานซีพียูเพื่อรันงานของตน เมื่อโปรเซสเปลี่ยนสถานะจาก Ready เป็น Running ซีพียูจะว่างก็ต่อเมื่อโปรเซสรันจบเท่านั้น ซึ่งหากโปรเซสนั้นมีช่วงระยะเวลาทำงานยาว ทำให้มีการครอบครองซีพียูยาวนาน ก็จะส่งผลให้โปรเซสอื่นๆ ที่อยู่ในสถานะ Ready รอคิวการใช้งานนาน ดังนั้นโอเอสจึงมีการกำหนดระยะเวลาควอนตัม (Quantum Time) ของแต่ละโปรเซสกล่าวคือหากมีครอบครองซีพียูจนครบระยะเวลาควอนตัม ก็จะทำการย้ายโปรเซสนั้นกลับไปอยู่สถานะ Ready เข้าไปต่อคิวใหม่ และนำโปรเซส Ready ที่อยู่ต้นคิวเข้ามารันในซีพียูแทน การทำงานจะทำงานในลักษณะเป็นรอบๆ วนไปเรื่อยๆ จนกระทั่งโปรเซสจบลงดังรูปต่อไปนี้



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


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







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








ลำดับชั้นของโปรเซส (Process Hierarchy) 

เมื่อผู้ใช้ส่งงานให้กับระบบรัน OS จะทำการสร้างโปรเซสสำหรับงานนั้นขึ้นมา
การทำงานของ OS ก็ถือว่าเป็นงานของระบบดังนั้นจะมีการสร้างโปรเซสขึ้นเหมือนกัน
นอกจากนั้นโปรเซสที่ถูกสร้างขึ้นก็สามารถสร้างโปรเซสย่อยได้
โปรเซสที่ให้กำเนิด เราเรียกว่าโปรเซสแม่ (parent process)
โปรเซสย่อยที่เกิดขึ้น เราเรียกว่าโปรเซสลูก (child process) 




โดยทั่วไป เมื่อโปรเซสแม่จบลง โปรเซสต่าง ๆ ที่อยู่ภายใต้ตัวมันก็จะจบลงตามไปด้วย
แต่ OS บางตัวยอมให้โปรเซสแม่จบลง โดยที่โปรเซสลูกไม่ต้องจบลงตามไปด้วย ในกรณีนี้โปรเซสลูกก็จะไม่มีโปรเซสแม่





จากตัวอย่างในรูป โปรเซส A จะมีโปรเซสลูก 3 โปรเซสคือ B,C และ D
ถึงแม้ว่าโปรเซส A เป็นโปรเซสแม่ของโปรเซส B,C และ D แต่โปรเซส A ไม่ได้เป็นผู้ที่สร้างโปรเซส B,C และ D
ผู้ที่สร้างโปรเซสทั้งหมดได้แก่ OS ซึ่ง OS จะมีโปรเซสหนึ่งทำหน้าที่สร้างและยุติโปรเซส คือ “ตัวจัดคิวระยะยาว”
คำถาม
โปรเซส  F,G,H นั้นถูกสร้างโดยโปรเซส D ใช่หรือไม่
ใครเป็นผู้ที่สร้างโปรเซส A  




โปรเซสสื่อประสาน (Cooperating process) 
        โปรเซสที่ประมวลผลในระบบอาจเป็นได้มีได้ 2 

- แบบคือโปรเซสอิสระ (Independent process) ซึ่งทำงานโดยไม่มีผลกระทบ หรือได้รับผลกระทบจากโปรเซสอื่น เป็นอิสระที่ไม่มีการแบ่งปันทรัพยากรร่วมกับใคร  
- ส่วนโปรเซสสื่อประสาน (Cooperating process) อาจได้รับผลกระทบ หรือส่งผลกระทบต่อโปรเซสอื่น หรือกล่าวได้ว่ามีการใช้ทรัพยากรร่วมกับโปรเซสอื่น และเหตุที่ทำให้เกิดโปรเซสสื่อประสานอาจมีได้ดังนี้

เหตุผลที่ทำให้เกิดการประสานงานระหว่างโปรเซส
ต้องการใช้ข้อมูลร่วมกัน
ต้องการเพิ่มความเร็วในการคำนวณ




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

 


มื่อโปรเซส A ต้องการติดต่อกับโปรเซส B
โปรเซส A และ B จะต้องจองเนื้อที่ในหน่วยความจำในส่วนที่ว่างเอาไว้
ทั้ง 2 โปรเซสต้องรู้ว่าหน่วยความจำร่วมนี้อยู่ที่ใด
เมื่อโปรเซส A ส่งข้อมูลให้โปรเซส B ข้อมูลจะถูกส่งไปไว้ในหน่วยความจำร่วม



  
 *เมื่อโปรเซสต้องการใช้ข้อมูลของโปรเซสอื่น โปรเซสที่ถูกร้องขอจะส่งข้อมูลไปให้ การที่โปรเซสต่าง ๆ มีการติดต่อกันเช่นนี้ เราเรียกว่า การติดต่อระหว่างโปรเซส
*โดยทั่วไปการติดต่อระหว่างโปรเซสนั้นจะใช้วิธีการคือ การใช้หน่วยความจำร่วม (Shared memory)
*กลไกการรับส่งข้อมูลผ่านทางหน่วยความจำร่วมนี้ OS จะไม่ช่วยจัดการให้โปรเซสที่ต้องการติดต่อกันจะต้องจัดการเอาเอง




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


นอกจากการใช้หน่วยความจำร่วมแล้วยังมีวิธีอื่นที่มีความสะดวกมากกว่าและเป็นมาตรฐาน คือการใช้พอร์ท (Port)
พอร์ท คือพื้นที่ในหน่วยความจำส่วนหนึ่งที่ OS จัดไว้เพื่อให้โปรเซสต่าง ๆ ใช้ร่วมกันได้
โดย OS จะทำหน้าที่เป็นผู้ให้จังหวะในการรับส่งข้อมูลให้กับแต่ละโปรเซส เช่น
ถ้าโปรเซส A ต้องการใช้ข้อมูลจากโปรเซส B OS จะเป็นผู้ค้นหาข้อมูล B จากพอร์ท ถ้าพบก็จะให้โปรเซส A รับข้อมูลไป แต่ถ้าไม่พบก็จะให้โปรเซสนั้นหยุดรอจนกว่าจะมีข้อมูลถูกส่งมาไว้ที่พอร์ท

 พอร์ทในปัจจุบันมี 3 แบบ
พอร์ทแบบคิว โครงสร้างของพอร์ทแบบนี้ข้อมูลชุดใดที่ถูกส่งเข้าพอร์ทก่อนจะถูกดึงออกไปก่อน ข้อมูลชุดใดที่ถูกส่งเข้าพอร์ททีหลังจะถูกดึงออกไปทีหลัง





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


การเข้าจังหวะของโปรเซส (Process Synchronization)


ในการใช้ทรัพยากรโดยเฉพาะอย่างยิ่งข้อมูลอาจก่อให้เกิดปัญหาที่ทำให้การทำงานไม่ถูกต้อง
ตัวอย่าง
เริ่มต้นค่า X = 10
โปรเซสที่ 1 มีการเพิ่มค่า X จากเดิม 10
โปรเซสที่ 2 มีการลบค่า X ลง 10
ผลจากการทำงานจะเป็นดังนี้  (10+10-10) = 10
 






 









 




จากรูปจะเห็นว่าถ้าโปรเซสที่ 1 และ 2  มีการทำงานที่เป็นอิสระอาจทำให้ผลลัพธ์เกิดความผิดพลาดขึ้น
ดังนั้นเพื่อป้องกันความผิดพลาดที่เกิดขึ้น จะต้องมีการจัดจังหวะการทำงานให้กับแต่ละโปรเซสสำหรับการใช้ข้อมูลร่วมกัน
จากตัวอย่างควรกำหนดว่าเมื่อโปรเซสใดได้เข้ามาครอบครองข้อมูล โปรเซสอื่น ๆ ที่ต้องการใช้ข้อมูลตัวเดียวกันจะต้องหยุดรอให้โปรเซสแรกใช้งานให้เสร็จก่อน



จากรูปจะเห็นว่าถ้าโปรเซสที่ 1 และ 2  มีการทำงานที่เป็นอิสระอาจทำให้ผลลัพธ์เกิดความผิดพลาดขึ้น
ดังนั้นเพื่อป้องกันความผิดพลาดที่เกิดขึ้น จะต้องมีการจัดจังหวะการทำงานให้กับแต่ละโปรเซสสำหรับการใช้ข้อมูลร่วมกัน
จากตัวอย่างควรกำหนดว่าเมื่อโปรเซสใดได้เข้ามาครอบครองข้อมูล โปรเซสอื่น ๆ ที่ต้องการใช้ข้อมูลตัวเดียวกันจะต้องหยุดรอให้โปรเซสแรกใช้งานให้เสร็จก่อน
 




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

 ปัญหาที่ 1 : การอดตาย (Starvation) หรือ การเลื่อนไหลไปอย่างไม่มีวันสิ้นสุด (Infinite postponement)
ถ้าโปรเซส A และ B ต้องการใช้เครื่องพิมพ์พร้อมกัน โปรเซสที่จะได้ใช้ก่อนก็คือโปรเซสที่มีลำดับความสำคัญสูงกว่า
เช่น ถ้า โปรเซส B มีลำดับความสำคัญสูงกว่า A โปรเซส B ก็จะได้ใช้เครื่องพิมพ์ ส่วนโปรเซส A ต้องรอ

ในขณะที่โปรเซส A กำลังรอ ปรากฏว่ามีโปรเซสอื่น ๆ ที่มีลำดับความสำคัญสูงกว่าโปรเซส A ต้องการใช้เครื่องพิมพ์
สิ่งที่เกิดขึ้นกับโปรเซส A คือ โปรเซส A จะถูกโปรเซสอื่นแซงตลอดเวลา เราเรียกเหตุการณ์ที่เกิดขึ้นนี้ว่า “การอดตายของโปรเซส (Starvation) หรือ การเลื่อนไหลไปอย่างไม่มีวันสิ้นสุด (Infinite postponement)

ในขณะที่โปรเซส A กำลังรอ ปรากฏว่ามีโปรเซสอื่น ๆ ที่มีลำดับความสำคัญสูงกว่าโปรเซส A ต้องการใช้เครื่องพิมพ์
สิ่งที่เกิดขึ้นกับโปรเซส A คือ โปรเซส A จะถูกโปรเซสอื่นแซงตลอดเวลา เราเรียกเหตุการณ์ที่เกิดขึ้นนี้ว่า “การอดตายของโปรเซส (Starvation) หรือ การเลื่อนไหลไปอย่างไม่มีวันสิ้นสุด (Infinite postponement)








 
 


อ้างอิงแหล่งที่มา 
http://www.chantra.sru.ac.th/OS.html
https://sites.google.com/site/operatingsystemeng1/swn-prakxb-khxng-por-1
https://sites.google.com/site/operatingsystemeng1/srup-thay-bth-thi2
https://sites.google.com/site/bthreiynbththi99/1/kar-pramwl-phl-hrux-por-ses
http://csnon04.blogspot.com/2008/03/2-thread.html




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



 1.สถานะของโปรเซสมีอะไรบ้าง จงอธิบาย

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

    -Ready

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

    -Running

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

    -Waiting

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

    -Block

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

    -Terminated

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



2.เวลา Quantum Time คืออะไร

  ตอบ - เวลาที่ขอใช้งาน CPU 



3.ปัญหา DeadLock เกิดขึ้นได้อย่างไร

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

 

4.สถานะ Block เกิดขึ้นได้อย่างไร

  ตอบ -โปรเซสต้องการใช้อุปกรณ์ อินพุต/เอาต์พุต  หรือเกิดอินเทอร์รัพต์ระหว่างที่รันโปรเซส  ซึ่งจะต้องรอให้มีการจัดการอุปกรณ์อินพุต/เอาต์พุต  หรือจัดการอินเทอร์รับต์ให้เรียบร้อยก่อนจะกลับไปสถานะรันได้ต่อไป 

 

5.การติดต่อกันระหว่าง Process เป็นหน้าที่ของโคร

  ตอบ -โปรเซสสื่อประสาน (Cooperating Process)  

 

6. พอร์ท มีกี่แบบอะไรบ้าง

  ตอบ -  3 แบบ   1) พอร์ทแบบคิว
           2) พอร์ทแบบไปป์
           3) พอร์ทแบบสแต็ก

 

7.จงยกตัวอย่าง พอร์ทแบบสเต็ก

ตอบ  - ข้อมูลชุดใดที่ถูกส่งเข้ามาก่อนจะถูกดึงออกทีหลัง  ข้อมูลที่จะถูกดึงออกจากพอร์ทคือข้อมูลชุดหลังสุดที่ถูกส่งเข้ามาในพอร์ท

 

8.Mutual exclusion เกิดขึ้นได้อย่างไร

ตอบ  - การกีดกั้นไม่ยอมให้โปรเซสใด ๆ  เข้าใช้พื้นที่ที่เป็น Critical region 

 

9.ปัญหาการอดตาย เกิดขึ้นได้อย่างไร 

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

 

10. องค์ประกอบของโปรเซส มีอะไรบ้าง
  ตอบ - 1) หมายเลขโปรเซส        2) โค๊ดโปรแกรม                
    3) ข้อมูล                4) บล็อคควบคุมโปรเซส

    5) PSW                6) คุณสมบัติของโปรเซส

ความคิดเห็น