Generally, Embedded System(ES) means non-PC system, it consists of hardware and software. Hardware consists of MPU, memory and I/O ports etc. Software consists of applications and Embedded Operating System(EOS). Generally, EOS demands real-time and multitasks, the "real-time" here not only means correct output, but also demands output must be produced before deadline.ARMLinux is an EOS. It is significative for an EOS to decide whether a process could be scheduled depending on whether it could complete before absolute deadline. It is used in Multi-agents coordination, traffic watch and satellite etc fields. As a soft real-time EOS, ARMLinux certainly cann't provide this ability. Scheduling policy bases on RM can provide this ability, but it faces to period process. What is more, some systems only watch execution of a process, if a process exceeds deadline, the system only kills the process. This makes system do little work.In order to forecast the complete time of a new process, I make some modifications in ARMLinux kernel: ordering run queue by real-time priority; every timer interrupt, scheduling if there is a process in run queue with higher priority than current process; deleting SCHED_RR scheduling policy. After these modifications, the complete time of a process can be forecasted in new kernel. For a process that cann't be accepted directly, system will modify its priority and insert into run queue again and decide whether it could be accepted. This enhances probability of a process is accepted by system. If a process exceeds its estimate execution time, system will kill the process directly. This can avoid that other processes will overtime because of this process's overtime. During the test, I get some results that could prove the correctness and stability of this system.
|