วันอังคารที่ 31 ตุลาคม พ.ศ. 2560

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


การจัดการ Process

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

องค์ประกอบของโปรเซส
โปรเซสที่สมบูรณ์มีองค์ประกอบดังนี้ 1. ชื่อและหมายเลขโปรเซส (Process ID) เป็นหมายเลขประจำโปรเซสเพื่อกำหนดลำดับการเอ็กซีคิ้วต์
2. โค้ดโปรแกรม (Program code) เป็นโค้ดคำสั่งที่เป็นภาษาเครื่องที่สามารถเอ็กซิคิวต์ได้ทันที
3. ข้อมูล (Data) เป็นข้อมูลของโปรเซสหนึ่ง หรืออาจใช้ร่วมกับโปรเซสอื่น ๆ ก็ได้
4. บล็อกควบคุมโปรเซส (Process Control Block : 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 Word)
6. คุณสมบัติของโปรเซส (Properties of process)
6.1 ลำดับความสำคัญของโปรเซส (Priority)
6.2 อำนาจหน้าที่ของโปรเซส (Authority)
6.3 คุณสมบัติอื่นที่ระบบปฏิบัติการกำหนดให้มี

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

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

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

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

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

เมื่อโปรเซสถูกสร้างขึ้นมาใหม่จะอยู่ในสถานะพร้อมก่อน ยังไม่สามารถเข้าไปใช้งาน CPU ได้
สาเหตุที่โปรเซสไม่สามารถเข้าใช้งาน CPU ได้ทันที
- เนื่องจากระบบคอมพิวเตอร์ในปัจจุบันเป็นระบบที่มีผู้ใช้หลายคนในเวลาเดียวกัน
- ทำให้มีโปรเซสมากมายเกิดขึ้น ซึ่งโปรเซสเหล่านี้ต้องการใช้ CPU ทั้งสิ้น
- ต้องมีการจัดคิวและแจ้งสถานะพร้อมให้กับโปรเซสไว้ก่อน
- เมื่อโปรเซสที่ใช้งาน CPU ทำงานเสร็จสิ้นหรือถูกยกเลิก ทำให้ CPU จะว่าง โปรเซสต่อไปที่อยู่ในคิวก็จะเลื่อนเข้าไปใช้ CPU (เปลี่ยนสถานะจากพร้อมเป็นสถานะรัน)
- เหตุการณ์ทั้งหมดผู้ที่ทำหน้าที่ควบคุมการทำงานคือ OS
กรณีที่โปรเซสใดใช้เวลารันเป็นเวลานานก็จะครอบครองซีพียูเป็นเวลานาน
ทำให้โปรเซสอื่น ๆ เสียเวลาในการรอนานเกินไป
เพื่อแก้ปัญหานี้ OS จะกำหนดเวลาในการอยู่ในสถานะการรันของทุกโปรเซสไว้ เรียกว่า “เวลาควันตัม (Quantum time)”
ถ้าโปรเซสใดใช้เวลาครอบครอง CPU เกินกว่าเวลาควันตัม ระบบปฏิบัติการจะย้ายโปรเซสนั้นไปต่อคิวใหม่และเปลี่ยนเป็นสถานะพร้อม และนำโปรเซสที่อยู่ในคิวต่อไปมารัน
ภายในระยะเวลาควันตัม ถ้าโปรเซสจบลง โปรเซสก็จะออกจากระบบ ทรัพยากรต่าง ๆ ที่โปรเซสครอบครองก็จะถูกส่งคืนให้กับระบบ
กรณีที่โปรเซสกำลังอยู่ในสถานะรัน มีความต้องการใช้อุปกรณ์อินพุต/เอาท์พุต หรืออาจจะเกิดอินเทอร์รัพต์ (Interrupt) ขึ้น
OS ก็จะย้ายโปรเซสจากสถานะรันไปอยู่ในสถานะบล็อก และดึงโปรเซสที่อยู่ในคิวต่อไปมารัน
กรณีที่ระบบมีงานมากเกินไป OS ไม่สามารถตอบสนองการทำงานของโปรเซสทั้งหมดได้
OS จะนำเอาโปรเซสบางโปรเซสไปเก็บไว้ในสถานะรอชั่วคราวก่อน รอจนจำนวนโปรเซสในระบบลดลงมาอยู่ในระดับปกติ จึงค่อยย้ายโปรเซสเหล่านั้นกลับมาทำงาน
การติดต่อระหว่างโปรเซส (Interprocess communication)

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

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



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

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


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

                             แบบฝึกหัด


1.สถานะของโปรเซสมีอะไรบ้าง จงอธิบาย
ตอบ 6 สถานะ
สถานะเริ่มต้น (New)
สถานะพร้อม (Ready) สถานะรัน (Running)
สถานะรอ (Wait)
สถานะบล็อก (Block)
สถานะสิ้นสุด (Terminate)

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

3.ปัญหา DeadLock เกิดขึ้นได้อย่างไร
ตอบ เหตุการณ์ที่ทรานแซกชันรอการใช้ข้อมูลที่ถูกล็อกโดยการทรานแซกชันอื่นอย่างไม่รู้จบในลักษณะเป็นลูกโซ่ เหมือนงูกินหาง

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) คุณสมบัติของโปรเซส

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

CCV