200 likes | 215 Views
RTS: Kernel Design and Cyclic Executives. Chapter 4. Kernel & Device drivers. Servers (application ~, web ~, component ~). Shell. XWin. Thread lib. ftp. User applications. System call interface. Process, memory, file system, network managers. Kernel.
E N D
RTS: Kernel Design and Cyclic Executives Chapter 4 Amrita-UB-MSES-2013-4
Kernel & Device drivers Servers (application ~, web ~, component ~) Shell XWin Thread lib ftp User applications System call interface Process, memory, file system, network managers. Kernel Device drivers Hardware/controller Devices Amrita-UB-MSES-2013-4
Task characteristics of real workload • Each task Ti is characterized by the following temporal parameters: • Precedence constraints: specify any tasks need to precede other tasks. • Release or arrival time: ri,j: jth instance of ith task • Phase Φi: release time of first instant of ith task • Response time: time between activation and completion • Absolute deadline: instant by which task must complete • Relative deadline: maximum allowable response time • Period Pi: maximum length of intervals between the release times of consecutive tasks. • Execution time: the maximum amount of time required to complete a instance of the task assuming all the resources are available. Amrita-UB-MSES-2013-4
Simple kernels • Polled loop: Say a kernel needs to process packets that are transferred into the DMA and a flag is set after transfer: for(;;) { if (packet_here) { process_data(); packet_here=0; } } Excellent for handling high-speed data channels, a processor is dedicated to handling the data channel. Disadvantage: cannot handle bursts Amrita-UB-MSES-2013-4
Simple kernels: cyclic executives • Illusion of simultaneity by taking advantage of relatively short processes in a continuous loop: for(;;) { process_1(); process_2(); process_3(); … process_n(); } Different rate structures can be achieved by repeating tasks in the list: for(;;) { process_1(); process_2(); process_3(); process_3(); } Amrita-UB-MSES-2013-4
Cyclic Executives: Example: Interactive games • Space invaders: for(;;) { check_for_keypressed(); move_aliens(); check_for_keypressed(); check_collision(); check_for_keypressed(); update_screen(); } } check_keypressed() checks for three button pressings: move tank left or right and fire missiles. If the schedule is carefully constructed we could achieve a very efficient game program with a simple kernel as shown above. Amrita-UB-MSES-2013-4
Finite state automata and Co-routine based kernels void process_a(void){ for(;;) { switch (state_a) { case 1: phase_a1(); | case 2: phase_a2(); | …. case n: phase_an();}}} void process_b(void){ for(;;) { switch (state_b) { case 1: phase_b1(); | case 2: phase_b2(); | …. case n: phase_bn();}}} • state_a and state_b are state counters; • Communication between coroutines thru’ global variables; • Example: the famous CICS from IBM : Customer Information Control System • IBM’s OS/2 uses this in Windows presentation management. Amrita-UB-MSES-2013-4
Interrupt driven systems • Main program is a simple loop. • Various tasks in the system are schedules via software or hardware interrupts; • Dispatching performed by interrupt handling routines. • Hardware and software interrupts. • Hardware: asynchronous • Software: typically synchronous • Executing process is suspended, state and context saved and control is transferred to ISR (interrupt service routine) Amrita-UB-MSES-2013-4
Interrupt driven systems: code example void main() { init(); while(TRUE); } void int1(void){ save (context); task1(); retore (context);} void int1(void){ save (context); task1(); restore (context);} • Foreground/background systems is a variation of this where main does some useful task in the background; Amrita-UB-MSES-2013-4
Process scheduling • Scheduling is a very important function in a real-time operating system. • Two types: pre-run-time and run-time • Pre-run-time scheduling: create a feasible schedule offline to meet time constraints, guarantee execution order of processes, and prevents simultaneous accesses to shared resources. • Run-time scheduling: allows events to interrupt processes, on demand allocation of resources , and used complex run-time mechanisms to meet time constraints. Amrita-UB-MSES-2013-4
More on Cyclic Executives Simple loop cyclic executive Frame/slots Table-based predetermined schedule cyclic executive Periodic, aperiodic and interrupt-based task Lets design a cyclic-executive with multiple periodic tasks. 11 Amrita-UB-MSES-2013-4
The basic systems Several functions are called in a prearranged sequence Some kind of cooperative scheduling You a have a set of tasks and a scheduler that schedules these tasks Types of tasks: base tasks (background), interrupt tasks, clock tasks Frame of slots, slots of cycles, each task taking a cycle, burn tasks to fill up the left over cycles in a frame. 12 Amrita-UB-MSES-2013-4
Cyclic Executive Design 1 (pages 81-87) • Base tasks, clock tasks, interrupt tasks • Base: no strict requirements, background activity • Clock: periodic with fixed runtime • Interrupt: event-driven preemption, rapid response but little processing • Design the slots • Table-driven cyclic executive Amrita-UB-MSES-2013-4
Cyclic executive • Each task implemented as a function • All tasks see global data and share them • Cyclic executive for three priority level • The execution sequence of tasks within a cyclic executive will NOT vary in any unpredictable manner (such as in a regular fully featured Operating Systems) • Clock tasks, clock sched, base tasks, base sched, interrupt tasks • Each clock slot executes, clock tasks, at the end a burn task that is usually the base task • Study the figures in pages 83-86 of your text Amrita-UB-MSES-2013-4
RT Cyclic Executive Program • Lets examine the code: • Identify the tasks • Identify the cyclic schedule specified in the form of a table • Observe how the functions are specified as table entry • Understand the scheduler is built-in • Learn how the function in the table are dispatched Amrita-UB-MSES-2013-4
Implementation of a cyclic executive #include <stdio.h> #include <ctype.h> #include <unistd.h> #include <sys/times.h> #define SLOTX 4 #define CYCLEX 5 #define SLOT_T 5000 int tps,cycle=0,slot=0; clock_t now, then; struct tms n; void one() { printf("Task 1 running\n"); sleep(1); } void two() { printf("Task 2 running\n"); sleep(1); } Amrita-UB-MSES-2013-4
Implementation (contd.) void three() { printf("Task 3 running\n"); sleep(1); } void four() { printf("Task 4 running\n"); sleep(1); } void five() { printf("Task 5 running\n"); sleep(1); } Amrita-UB-MSES-2013-4
Implementation (contd.) void burn() { clock_t bstart = times(&n); while ((( now = times(&n)) - then) < SLOT_T * tps / 1000) { } printf (" brn time = %2.2dms\n\n", (times(&n)-bstart)*1000/tps); then = now; cycle = CYCLEX; } Amrita-UB-MSES-2013-4
Implementation (contd.) void (*ttable[SLOTX][CYCLEX])() = { {one, two, burn, burn, burn}, {one, three, four, burn, burn}, {one, two, burn, burn, burn}, {one, five, four, burn, burn}}; main() { tps = sysconf(_SC_CLK_TCK); printf("clock ticks/sec = %d\n\n", tps); then = times(&n); while (1) { for (slot=0; slot <SLOTX; slot++) for (cycle=0; cycle<CYCLEX; cycle++) (*ttable[slot][cycle])(); }} Amrita-UB-MSES-2013-4
Summary • The cyclic executive discussed the scheduler is built-in. You can also use clock ticks RTC etc to schedule the tasks • In order use the cyclic executive discussed here in other applications simply change table configuration, and rewrite the dummy functions we used. Amrita-UB-MSES-2013-4