posted on 21 Aug 2008 22:50 by magnetic2008
1. รูปแบบของระบบ
2. เงื่อนไขของการเกิดวงจรอับ
3. การจัดการปัญหาของวงจรอับ
4. การป้องกันการเกิดวงจรอับ
5. การหลีกเลี่ยงการเกิดวงจรอับ
6. การตรวจจับวงจรอับ
7. การกู้ข้อมูลจากกการเกิดวงจรอับ
8. การแก้ไขปัญหาวงจรอับแบบผสมผสาน
ปัญหาของ Deadlock
เมื่อมี process
ในกลุ่มต้องการที่จะครอบครองทรัพยากรหนึ่ง
และรอคอยที่จะเข้าครอบครองทรัพยากรอีกอันหนึ่งภายในกลุ่ม หรือก็คือ
process มีการแย่งชิงทรัพยากรกันนั่นเอง
ตัวอย่างการข้ามสะพานของรถยนต์
- ข้ามได้ทีละ 1 ทางเท่านั้น
- สะพานก็คือทรัพยากร
- ถ้ามี deadlock เกิดขึ้น สามารถแก้ไขปัญหาได้ ถ้ารถยนต์ 1 คัน ถอยหลัง
(เมื่อมีการครอบครอง ทรัพยากร ก็มีการคืนค่าทรัพยากรให้แก่ระบบ)
- ถ้ามีรถยนต์หลายคันอาจจะทำให้เกิดรถติด และมีการเกิด deadlock
- มีการเกิดภาวะแช่แข็ง
รูปแบบของระบบ
1. ทรัพยากรจะแทนด้วย R1, R2, ..., Rm ทรัพยากร ได้แก่ จำนวนรอบของ cpu , พื้นที่ว่างของ memory, อุปกรณ์ input/output
2. แต่ละทรัพยากรจะแทนด้วย Ri โดยจะมี Wi เป็น instances
3. แต่ละ process สามารถใช้ทรัพยากรหนึ่งทรัพยากรได้ ดังนี้
- ร้องขอ
- ใช้
- คืนค่า
เงื่อนไขของการเกิด Deadlock
1. ทรัพยากรหนึ่งทรัพยากร process ไม่สามารถเข้ามาใช้งานร่วมกันได้
2. มีการถือครอง และรอคอย ถ้า process กำลังถือครองทรัพยากรหนึ่งอยู่ ในขณะเดียวกันก็สามารถทำการร้องขอทรัพยากรเพิ่มเติมได้
3. การทำงานในระบบไม่มีการแทรกกลางคัน
4. มีการเกิดวงจรรอคอย ถ้าเกิดวงจรลูกโซ่ของ process มากกว่า 2 ตัวขึ้นไป
ที่ต่างรอคอยทรัพยากรที่ถือครองโดย process ที่อยู่ในวงจรลูกโซ่นั้น
แผนการจัดสรรทรัพยากร
- V เป็นการแยกกลุ่มของ 2 กลุ่ม ได้แก่
1. P = {P1, P2, ..., Pn} โดยที่ภายในเซ็ตนั้น เป็น processes ทั้งหมดในระบบ
2. R = {R1, R2, ..., Rm} โดยที่ภายในเซ็นนั้น เป็นทรัพยากรทั้งหมดในระบบ
- การร้องขอแทนด้วยสัญลักษณ์ P1 - - -> Rj
- การถือครองแทนด้วยสัญลักษณ์ Rj ------> Pi
กฏเกณฑ์พื้นฐาน
- ถ้าไม่มีวงจรในกราฟ จะไม่มีการเกิด deadlock
- ถ้ามีวงจรในกราฟ
- ถ้ามี 1 instance ในทรัพยากร จะเกิด deadlock
- ถ้ามีหลาย instances ในทรัพยากร อาจจะเกิด deadlock
การจัดการปัญหาของ deadlock มี 3 วิธี ดังนี้
1. กำหนดกฏเกณฑ์บางอย่างขณะใช้ทรัพยากร เพื่อให้แน่ใจว่าจะไม่เกิด deadlock
2. ปล่อยให้เกิด deadlock แล้วทำการแก้ไขทีหลัง
3. มองข้ามปัญหาทั้งหมด ว่าไม่เคยมีการเกิด deadlock
การป้องกันการเกิด deadlock
1. การให้ใช้ทรัพยากรร่วมกันได้
- ระบบปฏิบัติการจะต้องจัดการให้ process ในระบบสามารถใช้งานทรัพยากรเหล่านั้นร่วมกันได้
2. การป้องกันการถือครองและรอคอย
- ให้ process ร้องขอทรัพยากรทั้งหมดก่อนเริ่มทำงาน
- ยินยอมให้ process ร้องขอทรัพยากรได้ก็ต่อเมื่อ process นั้นมิได้ถือครองทรัพยากรใดไว้เลย
3. ยอมให้มีการแทรกกลางคัน
- ถ้า process ถือครองทรัพยากรอยู่แล้ว ระบบจะต้องตรวจสอบเพื่อป้องกันไม่ให้ร้องขอทรัพยากรอื่นได้อีก
- ถ้าทรัพยากรถูกร้องขอด้วย process อื่น ระบบจะทำการให้แซง
เมื่อมีการแซงไปแล้วให้ทำการคืนทรัพยากรให้ process ตัวเดิม
เพื่อที่จะได้ทำงานต่อ
- ให้ทำการหยุด process ที่กำลังทำงานอยู่
4. การป้องกันการเกิดวงจรรอคอย
- กำหนดลำดับความสำคัญของทรัพยากรทั้งหมด
การหลีกเลี่ยงไม่ให้เกิด deadlock
การที่จะหลีกเลี่ยงไม่ให้เกิด deaklock นั้น
ระบบจะต้องมีความสามารถตัดสินใจว่าการร้องขอทรัพยากรใดๆนั้นจะทำให้ระบบ
ปลอดภัยหรือไม่ แล้วจะอนุญาตให้ process
นั้นได้ก็ต่อเมื่อระบบมีความปลอดภัย
สถานะปลอดภัยจาก deadlock
1. เมื่อ process หนึ่ง มีการร้องขอทรัพยากร ระบบจะต้องทำการตัดสินใจแบ่งสรรอย่างทันทีทันใดออกจากระบบภายในสถานะปลอดภัย
2. ระบบจะอยู่ในสถานะปลอดภัยถ้ามีการจัดลำดับความปลอดภัยของ processes ทั้งหมด
3. การจัดลำดับความปลอดภัยของแต่ละ process สามารถร้องขอทรัพยากร โดยการใช้ทรัพยากรที่มีอยู่ ทีมีการือครองโดย process ทั้งหมด
กฏเกณฑ์พื้นฐาน
- ถ้าระบบอยู่ในสถานะปลอดภัย จะมีไม่ deadlock
- ถ้าระบบอยู่ในสถานะไม่ปลอดภัย มีความเป็นไปได้ที่จะเกิด deadlock
- การหลีกเลี่ยง ก็ไม่ได้หมายความว่าทุกสถานะที่ไม่ปลอดภัย จะเดิก deadlock เสมอไป
วิธีการทำงานแบบนายธนาคาร
- มีทรัพยากรมากกว่า1
- แต่ละ process จะมีการอ้างสิทธิความสำคัญในการใช้งานอย่างเต็มที่
- เมื่อ process ร้องขอทรัพยากรหนึ่ง จะต้องมีการรอคอย
- เมื่อ processes ทั้งหมด ได้รับ ทรัพยากรทั้งหมดแล้ว จะต้องทำการคืนค่าทั้งหมดภายในขอบเขตเวลาที่กำหนด
การตรวจจับ deadlock
- ยินยอมให้ระบบเข้าไปยังพื้นที่ของ deadlock
- ขั้นตอนวิธีการตรวจจับ
- การวางแผนการกู้กลับคืน
การกู้กลับคืนค่า จากการยกเลิก process ในวงจร deadlock
1. ยกเลิก processes ทั้งหมดในระบบ
2. ยกเลิก process ในวงจร deadlock ทีละ process จนกระทั่งระบบเข้าสู่สภาวะปกติ
3. การยกเลิก processes ต้องพิจารณาปัจจัยดังต่อไปนี้
- ลำดับความสำคัญของ processes
- ดูว่า process นั้นใช้เวลามานานเท่าไหร่แล้ว และจะใช้เวลานานเท่าไหร่ถึงจะเสร็จ
- process นั้น ถือครองทรัพยากรประเภทใด
- process นั้น ถือครองทรัพยากรเป็นจำนวนเท่าไหร่
- มีจะนวนกี่ processes ที่ต้องทำการยกเลิก
- process นั้นเป็นแบบโต้ตอนทันที หรือแบบกลุ่ม
การแทรกกลางคัน
1. เลือกจาก process ที่ถูกแทรกกลางคัน และเสียค่าใช้จ่ายน้อยที่สุด
2. ให้ process ถอยกลับไปยัง สภาวะที่ปลอดภัย หรือกลับไม่ยังจุดเริ่มต้น
3. การสภาวะแช่แข็ง
จะมีการรับประกันได้อย่างไรว่าจะไม่เกิดการแช่แข็งในระบบ เช่น process
หนึ่งถูกแทรกกลางคัน ระหว่าง process นั้นกำลังใช้งานอยู่เสมอๆ
การแก้ไขปัญหา Deadlock แบบผสมผสาน
1. การแก้ไข deadlock ต้องใช้อย่างน้อย 3 วิธี
- ป้องกัน
- หลีกเลี่ยง
- ตรวจจับ และกู้คืน
การจะทำอย่างไรให้เกิดประโยชน์สูงสุดของแต่ละทรัพยากรในระบบ
2. การแบ่งทรัพยากรทั้งหมด ให้เป็นลำดับชั้นอย่างเป็นระเบียบ
3. ใช้วิธีการที่ทำให้เกิดประโยชน์สูงสุดในการแก้ไขปัญหา Deadlock ในแต่ละลักษณะ
edit @ 21 Aug 2008 22:52:07 by hern
posted on 21 Aug 2008 22:47 by magnetic2008
1. หลักความต้องการพื้นฐาน
2. ข้อพิจารณาในการจัดเวลา
3. Algorithm ของการจัดเวลา
4. การจัดเวลาของ Multiple-Processor
5. การจัดการเวลาแบบ Real-Time
6. การคัดเลือก Algorithm สำหรับการจัดเวลา CPU
หลักความต้องการพื้นฐาน
• เพื่อให้มีการใช้งาน cpu ได้อย่างเต็มที่ในการรันโปรแกรมหลายๆโปรแกรม
• การทำงานของ process ประกอบด้วยหนึ่งรอบของการทำงานของ cpu และการรอคอยอุปกรณ์ I/O
• เวลาในการใช้งานของ cpu
ช่วงเวลา Input/Output และช่วงเวลาใช้ CPU
ความสำคัญของการจัดเวลาของ cpu นั้น ขึ้นอยู่กับคุณลักษณะของ
process โดยทั่วๆไป การ execute process จะประกอบด้วยเวลาที่ใช้ cpu
และเวลาที่ต้องคอยอุปกรณ์ I/O ในขณะที่มีการ execute process
จะมีการสลับการทำงานระหว่าง 2 ช่วงเวลานี้เท่านั้น และจะเกิดไม่พร้อมกัน
การ execute มักจะเริ่มจากการใช้ cpu แล้วก็จะตามด้วยการคอย Input/Output
เมื่อจบการรอคอย ก็จะตามมาด้วยเวลาของ cpu สลับกันไปเรื่อยๆ จนกว่าจะจบการ
execute ซึ่งการสิ้นสุดการ execute นี้มักจะเป็นการใช้เวลา cpu
เพื่อทำการจบหรือสิ้นสุด process มากกว่าการรอคอย Input/Output
ตัวจัดการเวลา CPU
เมื่อใดก็ตามที่ cpu ว่าง ระบบปฏิบัติการจะต้องเข้ามาเลือก
process ตัวใดตัวหนึ่งที่คอยอยู่ในคิวเข้ามาใช้งาน cpu การเลือก process
เพื่อเข้ามาใช้ cpu นี้ จะถูกจัดการด้วยส่วนที่เรียกว่า
ตัวจัดการเวลาช่วงสั้น หรือ ตัวจัดการเวลา cpu ตัวจัดการเวลานี้จะเลือก
process ที่อยู่ในหน่วยความจำที่พร้อมในการ execute ที่สุด
เพื่อให้ครอบครองเวลา cpu และทรัพยากรที่เกี่ยวข้องกับ process นั้น
การให้สิทธิการจัดเวลา
การตัดสินใจของ cpu ในการเลือก execute process ใดๆ ขึ้นอยู่กับสถานการณ์ดังนี้
1. เมื่อมีการเปลี่ยนสถาะของ process จากสถานะรัน ไปเป็นสถานะคอย
2. เมื่อมีการเปลี่ยนสถานะของ process จากสถานะรัน เป็นสถานะพร้อม
3. เมื่อมีการเปลี่ยนสถานะของ process จากสถานะคอย เป็นสถานะพร้อม
4. เมื่อ process เสร็จสิ้นไปแล้ว
Despatcher
คอมโพเนนต์ที่สำคัญอีกตัวหนึ่งที่เกี่ยวข้องกับฟังก์ชันในการจัดเวลา cpu
ก็คือสิ่งที่เรียกว่า Dispatcher
ซึ่งเป็นโมดูลที่ทำหน้าที่ควบคุมการครอบครองเวลา cpu ของ process
ฟังก์ชันนี้ประกอบด้วย
• การย้าย Context
• การย้ายไป user mode
• กระโดดไปยังตำแหน่งที่เหมาะสมของโปรแกรม เพื่อที่จะเริ่มรันโปรแกรมนั้นใหม่อีกครั้ง
Dispatcher นี้ควรมีการทำงานที่เร็วที่สุดเท่าที่จะทำได้
เพราะว่ามันจะต้องทำงานทุกครั้งที่มีการย้าย process
ซึ่งเวลาที่ถูกใช้ไปกับการทำเช่นนี้เราเรียกว่า Dispatch Latency
ข้อพิจารณาในการจัดการเวลา
• CPU Utilization คือคำนึงถึงการใช้ประโยชน์จาก cpu อย่างสูงสุด
• Throughput ถ้าหากว่า cpu ทำงานตลอดเวลา
ก็หมายความว่างานก็กำลังถูกทำงานให้เสร็จ
ซึ่งเราสามารถที่จะวัดออกมาได้เป็นจำนวนงานที่เสร็จต่อหน่วยเวลา
• Turnaround Time คือช่วงเวลาทั้งหมดที่ใช้ในการทำงานใดงานหนึ่งตั้งแต่เริ่มต้นเข้าไปในระบบ จนงานถูกทำจนเสร็จเรียบร้อย
• Waiting Time คือช่วงเวลาที่งานใดงานหนึ่งต้องรอการทำงานของตัวจัดเวลา
โดยไม่รวมเวลาของการใช้ cpu และเวลาของการติดต่อ Input/Output
ส่วนใหญ่คือเวลาที่งานต้องคอยอยู่ในคิวนั่นเอง
• Response Time คือเวลาที่วัดระหว่างเวลาที่มีการร้องขอการกระทำใดๆ ต่อระบบแล้วมีการตอบรับกลับออกมา
Algorithm ของการจัดเวลา
หน้าที่ของตัวจัดคิวคือ
คัดเลือกโปรเซสซึ่งรออยู่ในสถานะพร้อมที่เหมาะสมที่สุดให้เข้าไปอยู่ในสถานะ
รัน (ได้ครอบครองซีพียู)
โดยแท้จริงแล้วการส่งโปรเซสที่ถูกเลือกแล้วให้เข้าไปอยู่ในสถานะรัน
เป็นหน้าที่ของโปรเซสของ OS ที่ชื่อตัวส่ง (dispatcher) ใน
แง่การทำงานแล้วตัวจัดคิวจะเป็นผู้คัดเลือกโปรเซสและเรียกให้ตัวส่งส่งโปรเซ
สที่ถูกเลือกแล้วเข้าไปในสถานะรันเป็นความรับผิดชอบของตัวจัดคิว
1. การจัดเวลาแบบมาก่อนได้ก่อน (FCFS : First-come First-served Scheduling)
การจัดคิวแบบ FCFS (first-come-first-served) วิธีการคัดเลือกแบบ FCFS นี้
เป็นวิธีที่ง่ายที่สุด คือ
โปรเซสไหนเข้ามารอในคิวก่อนจะได้ครอบครองซีพียูก่อน
ตามลำดับเวลาของการเข้ามาอยู่ในคิว คือ "มาก่อนได้ก่อน"
โปรเซสที่ได้ครอบครองซีพียูจะทำงานไปจนเสร็จ
ไม่มีระยะเวลาควอนตัมซึ่งจำกัดเวลาการครอบครองซีพียู
แต่ถ้าโปรเซสมีการเรียกใช้งานอุปกรณ์อินพุต-เอาต์พุต
หรือรอเหตุการณ์บางอย่าง โปรเซสนั้นต้องปลดปล่อยซีพียู
และออกจากสถานะรันไปอยู่ในสถานะติดขัด
เมื่อใดที่งานเสร็จสิ้นลงหรือเกิดเหตุการณ์ที่กำลังรออยู่
โปรเซสนั้นจึงค่อยกลับเข้าไปอยู่ต่อท้ายคิวของสถานะพร้อมใหม่อีกครั้ง
เราอาจแสดงการเปลี่ยนสถานะของโปรเซสโดยใช้การจัดคิวแบบ FCFS ซึ่ง
จะเห็นว่าแตกต่างกับรูปแสดงการเปลี่ยนสถานะของโปรเซสที่เคยกล่าวมาคือ
ไม่มีการเปลี่ยนสถานะของโปรเซสจากสถานะรันมายังสถานะพร้อมโดยตรง
2. การจัดเวลาแบบงานสั้นทำก่อน (SJF : Short-Job-First Scheduling)
การจัดคิวแบบ SJN (shortest job next) การ คัดเลือกโปรเซสด้วยวิธีนี้
จะคัดเลือกเอาโปรเซสที่ต้องการเวลาในการทำงานน้อยที่สุด
ทำให้โปรเซสที่ต้องการเวลาในการทำงานน้อยจบออกไปได้เร็วขึ้น
จำนวนโปรเซสในระบบที่รออยู่ในคิวมีก็จะมีจำนวนลดลง
และทำให้เวลาโดยเฉลี่ยในการทำงาน 1 งานเสร็จหรือเวลาครบงาน (turnaround
time)
น้อยลงแต่การจัดคิวแบบนี้เป็นผลเสียต่อโปรเซสที่ต้องการเวลาในการทำงานนาน
3. การจัดเวลาตามลำดับความสำคัญ (Priority Scheduling)
การจัดคิวแบบลำดับความสำคัญ (priority queue) คิว
แบบลำดับความสำคัญมีลักษณะแตกต่างกับคิวธรรมดา
ภายในคิวจะมีการจัดเรียงลำดับของโปรเซสต่าง ๆ
ตามลำดับความสำคัญของโปรเซสนั้น
โปรเซสที่อยู่ต้นคิวจะมีลำดับความสำคัญมากที่สุด และลดลงเรื่อย ๆ
โปรเซสที่อยู่ท้ายคิวคือโปรเซสที่มีลำดับความสำคัญต่ำสุด
การคัดเลือกโปรเซสจะเอาโปรเซสที่อยู่ต้นคิว (มีลำดับความสำคัญสูงสุด)
เข้าไปครอบครองซีพียูก่อน
ดังนั้นถึงแม้ว่าโปรเซสที่เข้าคิวทีหลังแต่มีลำดับความสำคัญสูงกว่าก็อาจได้
เข้าไปครอบครองซีพียูก่อน โปรเซส E เข้าคิวเป็นโปรเซสหลังสุด
แต่จะได้ครอบครองซีพียูก่อนโปรเซส C และ D
4. การจัดเวลาแบบวนรอบ (RR : Round-Robin Scheduling)
การจัดคิวแบบ RR (round-robin) การจัดคิวแบบ RR
อาจเรียกว่าเป็นการจัดคิวแบบมีการวนรอบ ลักษณะการคัดเลือก
โปรเซสในคิวจะเป็นแบบ FCFS คือ "มาก่อนได้ก่อน"
แต่ต่างกันนิดหน่อยตรงที่การครอบครองซีพียูของโปรเซสในสถานะรันจะถูกจำกัด
เวลาไว้ด้วยระยะเวลาควอนตัม
ทำให้โปรเซสที่ต้องการเวลาในการทำงานนานจะต้องเปลี่ยนสถานะหมุนระหว่างสถานะ
พร้อมและสถานะรัน การจัดคิวแบบ RR สามารถ
แก้ปัญหาการคอยนานของโปรเซสที่ต้องการเวลาทำงานน้อย ๆ
ได้ลองกลับไปพิจารณาเหตุการณ์สมมติซึ่งกล่าวไว้ในหัวข้อที่แล้ว
ถ้าระบบกำหนดเวลาควอนตัมเป็น 1 วินาที โปรเซส A
ต้องมีการวนรอบเปลี่ยนสถานะระหว่างสถานะรันและสถานะพร้อม 15 ครั้ง โปรเซส
B 1 ครั้ว โปรเซส C 10 ครั้ง เมื่อโปรเซส A
เข้าไปอยู่ในสถานะรันครั้งแรกและกลับออกมา โปรเซส B
จะได้ครอบครองซีพียูได้และ ทำงานเสร็จโปรเซส B
จบและออกจากระบบไปเลยเหลือเพียง 2 โปรเซสที่อยู่ในคิวของสถานะพร้อม
โปรเซสถัดไปที่จัดได้ครอบครองซีพียูคือ C โปรเซส C และ A
จะสลับกันครอบครองซีพียูกันโปรเซสละ 1 วินาที จนกระทั่งโปรเซส C จบ
เหลือโปรเซส A เพียงโปรเซสเดียว
เป็นแผนภาพแสดงการสลับกันทำงานของโปรเซสทั้ง 3
และเป็นผลที่เกิดขึ้นจากการจัดคิวแบบ RR
5. การจัดเวลาแบบคิวหลายระดับ (Multilevel Queue Scheduling)
เพื่อ ให้การจัดคิวเป็นไปอย่างมีประสิทธิภาพ จึงมีการนำหลาย ๆ
เทคนิคมาประยุกต์เข้าด้วยกัน เป็นการจัดคำแบบวนรอบ
ที่คำนึงถึงความสำคัญของงาน
ทำให้งานที่มีความสำคัญเหมือนกันอยู่ในคิวเดียวกัน และให้งานสำคัญน้อย ๆ
อยู่ในคิวที่สำคัญน้อยเช่นกัน
การจัดเวลาของ Multiple-Processor
การทำงานในลักษณะที่มี cpu หลายตัวต่างก็มีระบบการจัดเวลาของตัวเอง
จะต้องมีการออกแบบอย่างระมัดระวังในเรื่องของการที่ process แต่ละ process
อาจจะต้องการใช้ข้อมูลในฐานข้อมูลในเวลาเดียวกัน รวมทั้งต้องระวังไม่ให้
cpu ว่างงานพร้อมกัน
ในระบบคอมพิวเตอร์บางระบบที่มีการพัฒนาเพื่อให้ได้ประสิทธิภาพสูงสุด
ได้มีการใช้ cpu แยกต่างหากระหว่างงานภายในของระบบ
และกับงานที่เป็นของผู้ใช้ซึ่งการทำงานแยกกันของ cpu แบบนี้
ทำให้การออกแบบระบบปฏิบัติการมีความซับซ้อนน้อยลงมาก เนื่องจากมี cpu
เพียงตัวเดียวที่จะเข้าไปใช้ข้อมูลของระบบปฏิบัติการ เพราะว่า cpu
ตัวอื่นๆ ไม่ว่าจะกี่ตัวก็ตาม
จะเข้าถึงได้เฉพาะข้อมูลของผู้ใช้ภายนอกเท่านั้น
การจัดเวลาแบบ Real-Time
Hard real-time
คือระบบที่สามารถทำงานใดงานหนึ่งให้เสร็จตามเวลาที่กำหนดได้
ซึ่งงานที่จะรับเข้ามาแต่ละงานนั้นจะมีความต้องการของเวลาที่ต้องการให้
เสร็จมาด้วย
ดังนั้นตัวจัดเวลาจะต้องเป็นตัวตัดสินใจว่าจะรับงานเข้ามาทำหรือไม่
Soft real-time
คือระบบที่แบ่งเวลาธรรมดาที่มีการให้ระดับความสำคัญแก่งานบางประเภท
หรืองานที่ถูกเลือกไว้ล่วงหน้าว่าเป็นงานเร่งด่วน
ซึ่งอาจทำให้เกิดปัญหาของการทำงานในระดับต่ำๆ อาจไม่ได้รับเวลาของ cpu เลย
การคัดเลือก Algorithm สำหรับการจัดเวลา cpu
Deterministic Modeling
วิธีนี้เป็นวิธีการคัดเลือกที่เรียกว่า analytic evaluation ซึ่งจะนำเอา
Algorithm ชนิดต่างๆ และลักษณะของงานมาสร้างสูตร
เพื่อใช้ในการคำนวณหาตัวเลขของประสิทธิภาพที่สามารถวัดและเปรียบเทียบได้
Queuing Models
ลักษณะของงานที่เข้ามาในระบบคอมพิวเตอร์นั้นมักจะมีลักษณะที่ไม่แน่นอน
ในแต่ละวันที่มีการใช้ระบบคอมพิวเตอร์นั้น
งานต่างๆที่เข้ามาอาจมีลักษณะที่ไม่ซ้ำกันเลย
อย่างไรก็ตามมีสิ่งหนึ่งที่เราอาจจะสามารถทำนายหรือกำหนดได้ ก็คือ
การกระจายของเวลาในการใช้ cpu และของการใช้ Input/Output
ซึ่งเราสามารถที่จะกำหนดแบบคร่าวๆได้
ซึ่งก็เช่นเดียวกันกับเวลาของการมาถึงระบบของงานต่างๆที่เราก็สามารถกำหนด
ไว้แบบการกระจายเช่นกัน
Simulations
วิธีการจำลองระบบ การที่เราจะเลือกวิธีการ หรือเลือก Algorithm
ที่ถูกต้องต่อระบบใดๆ อย่างเป็นจริงเป็นจังแล้ว
เราสามารถใช้วิธีการของการจำลองระบบ
ซึ่งวิธีการนี้จะสามารถคำนวณตัวเลขต่างๆ ออกมาได้อย่างเที่ยงตรงมากขึ้น
การทำการจำลองระบบในที่นี้จะเกี่ยวข้องกับการใช้โปรแกรมคอมพิวเตอร์
ซึ่งจะต้องมีการเขียนโปรแกรมเพื่อใช้เป็นตัวแทนหรือหุ่นจำลองของระบบต่างๆ
ในคอมพิวเตอร์
นอกจากนี้ยังต้องมีการเขียนโปรแกรมเพื่อเป็นตัวแทนของสิ่งแวดล้อมที่เกี่ยว
ข้องกับระบบคอมพิวเตอร์นั้นๆอีกด้วย
Implementation
วิธีการสร้างขึ้นมาจริงๆ อย่างไรก็ตามการสร้างแบบจำลอง
ก็ยังคงเป็นการจำลองแบบที่ไม่มีทางจะเหมือนจริงได้ สิ่งที่ดีกว่าก็คือ
การสร้าง Algorithm ชนิดต่างๆ
เพื่อทดลองใช้กับโปรแกรมขัดการระบบจริงๆในระบบคอมพิวเตอร์ที่ใช้งานในสิ่ง
แวดล้อมจริง
edit @ 21 Aug 2008 22:48:43 by hern
posted on 21 Aug 2008 22:47 by magnetic2008
1. แนวคิดของ Process
2. การจัดเวลาของ Process
3. ระบบของ Process
4. Process สื่อประสาน
5. การติดต่อระหว่าง Process
ระบบปฏิบัติการที่ใช้งานได้หลายโปรแกรม
• ระบบการทำงานแบบกลุ่มกับการทำงานหลายๆโปรแกรม
• ระบบการแบ่งเวลาให้แก่ผู้ใช้โปรแกรม
• หนังสือถูกใช้ในการทำงานและประมวลผล
• โปรแกรมหนึ่งที่ถูกใช้งาน process ที่ทำงานจะต้องมีการเรียงลำดับกันไป
• สิ่งที่อยู่ภายใน process
- ตัวนับจำนวน
- Stack
- ประเภทของข้อมูล
สถานะของ Process
ในขณะที่ execute process อยู่นั้น process
อาจจะมีการเปลี่ยนสถานะก็ได้ การกำหนดสถานะของ process
จะเป็นไปตามกิจกรรมที่กำลังดำเนินอยู่ในขณะนั้น แต่ละ process
อาจจะมีสถานะดังต่อไปนี้
• สถานะเริ่มต้น เป็นสถานะที่เริ่มต้นสร้าง process
• สถานะพร้อม เป็นสถานะที่พร้อมจะครอบครอง cpu
ในทันทีที่ระบบปฏิบัติการมอบหมายงานให้ สถานะนี้จะยังไม่มีการรัน process
เพียงหยุดนิ่งเท่านั้น
• สถานะรัน เป็นสถานะที่ process ที่ครอบครอง cpu อยู่แล้วมีการรัน process นั้นโดยการ execute คำสั่งในโปรแกรมของ process
• สถานะรอ เป็นสถานะที่ process กำลังรอเหตุการณ์บางอย่างให้เกิดขึ้นก่อน
• สถานะบล็อก เป็นสถานะที่อาจจะต้องการใช้อุปกรณ์ Input/Output หรือจัดการ interrupt ให้เรียบร้อยก่อนจะกลับไปสถานะรันได้ต่อไป
• สถานะสิ้นสุด เป็นสถานะที่หยุดนิ่งอันเนื่องมาจากการที่ process ถูก execute หมดทุกคำสั่งในโปรแกรมแล้ว
ไดอะแกรมของสถานะของ process
บล็อกควบคุม Process
• สถานะของ process แสดงสถานะของ process ที่เป็นอยู่ในปัจจุบัน
• ตัวนับจำนวน เป็นตัวนับที่แสดงที่อยู่ของคำสั่งต่อไปที่จะถูก execute สำหรับ process นี้
• รีจิสเตอร์ ทำหน้าที่เก็บข้อมูลสถานะระบบเมื่อมี interrupt เกิดขี้น
เพื่อทำให้ process ดำเนินต่อไปได้ เมื่อกลับมาจาก interrupt
รีจิสเตอร์นี้จะมีค่า และประเภทที่เปลี่ยนแปลงได้
ขึ้นอยู่กับสถาปัตยกรรมของคอมพิวเตอร์
• ข้อมูลการจัดเวลาของ cpu เป็นข้อมูลที่ประกอบด้วยลำดับความสำคัญของ
process ที่ถูกกำหนดโดยระบบปฏิบัติการเมื่อ process ถูกสร้างขี้นมา
สามารถเปลี่ยนค่าได้ process
ใดที่มีความสำคัญมากระบบปฏิบัติการจะให้สิทธิมากกว่า process อื่น
• ข้อมูลการจัดการหน่วยความจำ เป็นข้อมูลเกี่ยวกับหน่วยความจำที่ระบบปฏิบัติการกำหนดไว้
• ข้อมูล account เป็นข้อมูลที่อาจจะประกอบด้วยจำนวน cpu เวลาที่กำหนด หมายเลข account หมายเลขงานหรือ process และอื่นๆ
• ข้อมูลสถานะ Input/Output เป็นข้อมูลที่แสดงรายการของ Input/Output device ที่ process นี้ใช้ และอื่นๆ
รูปแสดงบล็อกควบคุม process
การจัดเวลา Process
• Job queue ทำการตั้งค่า processes ทั้งหมดในระบบ
• Ready queue ทำการตั้งค่า processes ทั้งหมดใน หน่วยความจำหลัก ที่พร้อมและรอคอยที่จะทำการ execute
• Device queue ทำการตั้งค่า processes เพื่อรอคอยอุปกรณ์ Input/Output
• Process จะทำการเคลื่อนไประหว่าง queue ที่ต่างกัน
การจัดการการทำงาน
• Long-term scheduler จะทำการเลือก processes แล้วนำไปยัง ready queue
• Short-term scheduler จะทำการเลือก process แล้วจะ execute และจัดสรรให้แก่ cpu ต่อไป
• Short-term scheduler จะถูกเรียกบ่อยมาก
• Long-term scheduler จะถูกเรียกไม่บ่อยมากนัก
• Long-term scheduler จะทำการควบคุม degree ของการทำงานหลายๆโปรแกรมพร้อมกัน
Context Switch
เมื่อ cpu รัน process เสร็จเรียบร้อยแล้ว จะต้องมีการ switch ไปยัง
process ในคิวต่อไป ในระหว่างที่ switch นี้ไม่ได้มีการทำงานเลย
เวลาที่ใช้จะเปลี่ยนไปตามเครื่องซื่งขึ้นอยู่กับความเร็วของหน่วยความจำ
จำนวนรีจิสเตอร์ที่ถูก copy และคำสั่งพิเศษที่มีอยู่ในระบบ
โดยทั่วไปความเร็วจะอยู่ที่ 1 – 100 ไมโครวินาที จะเห็นว่า context switch
จะขึ้นอยู่กับการสนับสนุนของฮาร์ดแวร์
การสร้าง Process
• Process แม่ ทำการสร้าง processes ลูก ซึ่งในการสร้าง processes นั้น จะมีการร่างต้นไม้ของ processes
• การแบ่งทรัพยากร
- process แม่ และ processes ลูกจะทำการแบ่งทรัพยากรทั้งหมด
- processes ลูกจะทำการแบ่ง process ย่อยให้แก่ ทรัพยากรของ process แม่
- process แม่ และ processes ลูกไม่มีการแบ่งทรัพยากร
• Execution
- process แม่ และ processes ลูก จะทำการ execute พร้อมกัน
- process แม่ จะทำการรอ จนกระทั่ง processes ลูกสิ้นสุด
• พื้นที่ว่างของ address
- process ลูกจะทำการลอกแบบจาก process แม่
- process ลูกจะมีหนึ่งโปรแกรมที่โหลดไปยังตัวมันเอง
การสิ้นสุดของ process
Process จะสิ้นสุดลงเมื่อสิ้นสุดการ execute คำสั่งสุดท้าย
และแจ้งให้ระบบปฏิบัติการลบมันออกไปโดยใช้ system call ชื่อ exit
ในตอนนี้ระบบอาจจะคืนข้อมูลหรือผลลัพธ์ไปยัง process แม่
ทรัพยากรทั้งหมดของ process
รวมทั้งหน่วยความจำทางกายภาพและหน่วยความจำเสมือน การเปิดไฟล์
บัฟเฟอร์ของอุปกรณ์ Input/Output จะถูกกำหนดใหม่โดยระบบปฏิบัติการ
Processes สื่อประสาน
Process ที่ execute ในระบบปฏิบัติการนั้นอาจจะเป็น process อิสระ หรือ
process สื่อประสานก็ได้ จะเป็น process อิสระถ้า process
นั้นไม่มีผลกระทบหรือได้รับผลกระทบจาก process อื่น อาจกล่าว ได้ว่า
process อิสระจะไม่มีการแชร์ข้อมูล กับ process อื่น ในทางตรงกันข้าม
process จะเป็น process สื่อประสานถ้า process
นั้นมีผลกระทบหรือได้รับผลกระทบจาก process อื่นที่ execute อยู่ในระบบ
อาจกล่าวได้เช่นกันว่า process สื่อประสานจะมีการแชร์ข้อมูลกับ process
อื่นในระบบ มีเหตุผลที่น่าสนใจที่ทำให้เกิดการประสานระหว่าง process ดังนี้
• การแชร์ข้อมูลจ่าวสาร
เนื่องจากผู้ใช้อาจจะมีความต้องการข้อมูลเดียวกันในเวลานั้น
ระบบปฏิบัติการจะต้องเตรียมการเพื่อตอบสนองและยอมให้ผู้ใช้สามารถใช้ข้อมูล
นั้นได้พร้อมกัน การประสาน process จึงเป็นเรื่องจำเป็น
• การเพิ่มความเร็วในการคำนวณ ด้วยหลักการง่ายๆที่ว่า
ถ้าเราต้องการรันโปรแกรมพิเศษให้เร็วขึ้น
เราจะต้องแบ่งโปรแกรมนั้นออกเป็นส่วนย่อยๆ แล้ว execute
แต่ละส่วนพร้อมกับงานอื่น การที่เราจะเพิ่มความเร็วให้ระบบได้นั้น
ระบบจะต้องเป็นแบบ Multiprocessing
• ความสะดวก สิ่งนี้เกิดจากความต้องการของผู้ใช้แต่ล่ะคนที่ต้องการทำงานหลายอย่างในเวลาเดียวกัน
edit @ 21 Aug 2008 22:55:07 by hern