บทที่ 13 Real - time Software Design
เป็น software ลักษณะหนึ่งที่มีความสำคัญพอสมควรในกรณีที่เราต้องทำงานติดต่อกับ อุปกรณ์ Hardware เช่น การควบคุมเครื่องจักรให้ทำงาน
นิยาม คือ
ระบบใดๆก็ตามที่เมื่อถูกกระตุ้นให้ทำงานใดงานหนึ่งแล้วมันจะต้องทำงานนั้นๆให้เสร็จตามระยะเวลาที่กำหนด
เพราะฉะนั้นระบบ Real time แต่ละงานจะต้องมีตัวเลขเวลากำกับไว้เสมอว่าจะต้องเสร็จภายในเวลาที่กำหนดไว้
ส่วนใหญ่จะเป็น Software ที่ใช้กับ Hardware และพอมี hardware เข้ามาเกี่ยวข้องก็จะต้องมีอีก
2 ส่วนมาเกี่ยวข้องด้วย คือ
1. Sensor : ทำหน้าที่รับค่าต่างๆจากสภาพแวดล้อมเข้าสู่ระบบ
2. Actuator : คือการไปเปลี่ยนแปลงสภาพแวดล้อมต่างๆของระบบ
ระบบ Real time แบ่งออกเป็น 2 ชนิด
1. Soft Real time : เป็นระบบใดๆที่ถ้ายังทำงานไม่เสร็จทันตามเวลากำหนด
แล้วระบบจะไม่ถึงกับล่ม เพียงแต่ประสิทธิภาพเสื่อมลงเท่านั้นเอง
2. Hard Real time : เป็นระบบใดๆที่ถ้ายังทำงานไม่เสร็จทันตามเวลากำหนด
แล้วระบบล่มทันที เกิดความเสียหายหรือให้ข้อมูลที่ผิดพลาด เพราะฉะนั้นเราควรระบุเป็นเอกสารให้ชัดเจนว่าส่วนไหนเป็น
Hard RT หรือเป็น Soft RT
Stimulus / Response Systems
- Stimulus คือการกระตุ้นของระบบ เช่น User กดปุ่มหรือว่าค่าของอุณหภูมิขึ้นถึงขีดที่กำหนด
มันจะไปกระตุ้นการทำงานของตัว Sensor
- Response ก็คือส่วน Actuator เช่น เมื่ออุณหภูมิขึ้นถึงขีดหนึ่งมันจะไปสั่งให้พัดลมทำงานเพื่อลดอุณหภูมิ
การกระตุ้นแบ่งได้เป็น 2 กลุ่ม
คือ
- Periodic stimuli คือสิ่งที่มากระตุ้นที่สามารถค่ดการณ์ได้ว่าจะเกิดขึ้นเมื่อไรและเกิดขึ้นในช่วงเวลาไหน
เช่น Software ควบคุมลิฟท์ในอาคารจะมีการตั้งเวลาไว้ เวลา 8.00 น.ลิฟท์จะไปรอที่ชั้น
1 เพราะจะมีแต่คนขึ้น พอเวลา 5 โมงเย็นลิฟท์ก็จะไปรออยู่ชั้น10 เพราะจะมีแต่คนลง
- APeriodic stimuli คือ เหตุการณ์กระตุ้นที่ไม่สามารถคาดการณ์ได้ เช่น การขึ้นลงของอุณหภูมิจะไม่แน่นอน
Real
time System ประกอบด้วย
- Sensor control processor มักจะเป็นส่วน Hardware
- Data processor มักจะเป็น Software
- Actuator control มักจะเป็น Hardware
จากรูปตย. (slide7) เป็นตย.แผนผังการทำงาน อาจจะแบ่งได้เป็นส่วนส่วนบนเป็น Hardware และส่วนล่างเป็น Software
การออกแบบระบบ Real time
เวลาออกแบบระบบ Real timeเรามักจะออกแบบทั้ง Hardware และ Software ด้วยกันด้วยการแบ่งฟังก์ชันชัดเจนว่าอันไหนเป็นของ
Software อันไหนเป็นของ Hardware
ดังรูปตย.นี้
( slide9 ) ทาวด้านซีกซ้ายจะเป็นส่วนของ Software และทางด้านซีกขวาจะเป็นส่วนของ
Hardware
ขั้นตอนการออกแบบ Real time
1. กำหนดตัวกระตุ้นของระบบ
2. กำหนดการ Response ว่าจะ Response ยังไงกับการกระตุ้นนั้นๆ
3. กำหนดเวลาว่ามันจะต้อง Response ภายในเวลาเท่าไร
4. จับ Stimulus กับ Response มารวมกันเรียกว่าเป็น Concurrent process
ระบบ Real time ที่สำคัญเราจะต้องรู่ามี Concurrent process อยู่เท่าไร จะได้เห็นภาพรวมมากยิ่งขึ้น
5. ออกแบบ Algorithm , ลำดับขั้นในการตอบสนองจะมีอะไรบ้าง
6. กำหนด Schedule ว่าอะไรเริ่มเมื่อไร ควรจบเมื่อไร
7. Integrate ให้มันทำงานร่วมกับ Real time Executive หรือ Operationg System สำหรับ
Real time System นั่นเอง
Note : เวลาเราจะเขียน Model Real time system เรามักจะใช้ State machine |
การเขียนโปรแกรมของ Real time system
- ถ้าเป็น Hard Real time ควรใช้ภาษา Assembly เพราะว่าทำงานได้เร็วที่สุด และ
เข้าถึงอุปกรณ์ได้ทันที
- ภาษา C ไม่เหมาะสำหรับการเขียนเป็น Hard Real time แต่ถ้าเป็น Soft Real time
ยังพอใช้เขียนได้
- ภาษา Ada เหมาะกับการเขียนแบบ Real time และเป็นแบบ Hard Real time
JAVA
- เนื่องจากว่า java สนับสนุนการทำงานแบบ Concurrency ด้วย (ใน java เรียกว่า Thread
( อ่านว่าเทรด ) ) ซึ่งใน Java จะสนับสนุนแบบ Light Threads ทำให้เหมาะกับงานแบบ
Soft Real Time เท่านั้น
Real Time Executive คือ
OS ที่ควบคุมการทำงานในแบบลักษณะ Real Time นั่นเอง มันจะควบคุมโปรเซสต่างๆโดยเฉพาะอย่างยิ่ง
Concurrency process และคอยแจกจ่าย Resource ในการทำงานด้วย
องค์ประกอบย่อยใน Real Time System
1. Real time Clock เป็นนาฬิกาที่ใช้บอกจังหวะในการทำงาน
2. Interrupt Handler ใช้ดักจับ Interrupt ที่เกิดขึ้นจากอุปกรณ์ Hardware
3. Scheduler บอกว่า Process ไหนจะทำเมื่อไร
4. Resource Manager แจกจ่าย Resource ให้ Process ได้ใช้ Memory และ CPU
5. Dispatcher เป็นตัวกระตุ้นให้ Process เริ่มทำงาน
การจัด Schedule แบ่งเป็น
3 กลุ่ม
1. Non Pre-emptive scheduling หมายความว่าเมื่อโปรเซสนั้นเริ่มทำงานแล้วมันจะทำจจนจบหรือจนกว่าจะเกิด
error จะไม่สามารถหยุดการทำงานระหว่างทำงานได้ เช่น Controller ของ Floppy disk
2. Pre-emptive scheduling หมายความว่าโปรเซสสามารถหยุดงานก่อนได้ ถ้าหากว่ามีงานอื่นที่สำคัญกว่าเข้ามากระตุ้น
เช่น Software บนวินโดว์ส่วนใหญ่จะมีลักษณะนี้
3. Scheduling Algorithm แบ่งออกได้เป็น
3.1 Round Robin เป็นการผลัดกันทำงานตามเวลาที่กำหนดไว้ให้
3.2 Rate Monotonic เป็นการกำหนดความสำคัญให้แต่ละโปรเซสและก็จัดลำดับตามความสำคัญ
3.3 Shortest deadline first งานไหนที่ต้องการเวลาน้อยสุดจะมีสิทธิทำก่อนเสมอ
บรรยายเมื่อ 18 กพ. 2545 เทอม 2/44
ฺBack | Lesson 11 | Lesson 12 | Lesson 13 | Lesson 14 | Lesson 15 | Index | Mores |