Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems...

33
Real Time Operating Systems The Kernel Luca Abeni Real Time Operating Systems – p. 1

Transcript of Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems...

Page 1: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Real Time Operating SystemsThe Kernel

Luca Abeni

Real Time Operating Systems – p. 1

Page 2: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Real-Time Operating Systems

Real-Time operating system (RTOS): OS providingsupport to Real-Time applications

Operating System:Set of computer programsInterface between applications and hardwareControl the execution of application programsManage the hardware and software resourcesAbstracts the physical machine, multiplexing itbetween executing tasks

OS as...A Service Provider for user programs (POSIX API...)A Resource Manager

Real Time Operating Systems – p. 2

Page 3: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Operating System Services

Services (Kernel Space):Process / Thread SchedulingProcess Synchronisation, Inter-ProcessCommunication (IPC)I / OVirtual Memory

Provided to user tasks through an APIRT-POSIX interface

Real Time Operating Systems – p. 3

Page 4: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Task Scheduling

The core part of the OS (the kernel) implements avirtual processor abstraction

A task set T composed by N tasks runs on M

CPUs, with M < N

All tasks τi have the illusion to run in parallelTemporal multiplexing between tasks

Two core components:The scheduler is responsible for deciding which taskis executedThe dispatcher actually switches the CPU context tothe context of the scheduled task (context switch)

Real Time Operating Systems – p. 4

Page 5: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Synchronization and IPC

The kernel must also provide a mechanism for allowingtasks to communicate and synchronize

Two possible programming paradigms:Shared memory (threads)

The kernel must provide semaphores or / andmutexes + condition variablesReal-time resource sharing protocols (PI, HLP,NPP, ...) must be implemented

Message passing (processes)Interaction models: pipeline, client / server, ...The kernel must provide some IPC mechanism:pipes, message queues, mailboxes, RemoteProcedure Calls (RPC), ...Some real-time protocols can still be used

Real Time Operating Systems – p. 5

Page 6: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Real-Time Scheduling in Practice

An adequate scheduling of systemresources removes the need forover-engineering the system, and isnecessary for providing a predictableQoSAlgorithm + Implementation = Scheduling

RT theory provides us with good algorithms...

...But which are the prerequisites for correctlyimplementing them?

Real Time Operating Systems – p. 6

Page 7: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Theoretical and Actual Scheduling

Scheduler, IPC subsystem, and device drivers → mustrespect the theoretical model saw in previous lessons

Scheduling is simple: fixed prioritiesIPC, HLP, or NPP are simple too...But what about timers?

we already noticed some problems...

Problem:Are we sure that the scheduler is able to select ahigh-priority task as soon as it is ready?And the dispatcher?

Real Time Operating Systems – p. 7

Page 8: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Periodic Task Example

Consider a periodic task1 /* ... */2 while(1) {3 /* Job body */4 clock_nanosleep(CLOCK_REALTIME, TIMER_ABSTIME, &r, NULL);5 timespec_add_us(&r, period);6 }

The task expects to be executed at time r (= r0 + jT )...

...But is sometimes delayed to r0 + jT + δ

Real Time Operating Systems – p. 8

Page 9: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Example - Theoretical Schedule

0 2 4 6 8 10 12 14 16 18 20 22

τ1

τ2

τ3

Real Time Operating Systems – p. 9

Page 10: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Example - Actual Schedule

0 2 4 6 8 10 12 14 16 18 20 22

τ1

τ2

τ3

Real Time Operating Systems – p. 10

Page 11: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Kernel Latency

The delay δ in scheduling a task is due to kernel latency

Kernel latency can be modelled as a blocking time∑N

k=1Ck

Tk≤ Ulub → ∀i, 1 ≤ i ≤ n,

∑i−1

k=1Ck

Tk+Ci+δ

Ti≤ Ulub

Ri = Ci+∑i−1

h=1

Ri

Th

Ch → Ri = Ci+ δ+∑i−1

h=1

Ri

Th

Ch

∃0 ≤ t ≤ Di : Wi(0, t) = Ci +∑i−1

h=1

t

Th

Ch ≤ t →

∃0 ≤ t ≤ Di : Wi(0, t) = Ci +∑i−1

h=1

t

Th

Ch ≤ t− δ

Real Time Operating Systems – p. 11

Page 12: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Kernel Latency

Scheduler → triggered by internal (IPC, signal, ...) orexternal (IRQ) events

Time between the triggering event and dispatch:Event generationEvent delivery (example: interrupts may be disabled)Scheduler activation (example: non-preemptablesections)Scheduling time

Scheduler

Event Delivery DispatchEvent Time Latency

Real Time Operating Systems – p. 12

Page 13: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Theoretical Model vs Real Schedule

In real world, high priority tasks often suffer fromblocking times coming from the OS (more precisely,from the kernel)

Why?How?What can we do?

To answer the previous questions, we need to recallhow the hardware and the OS work...

Real Time Operating Systems – p. 13

Page 14: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

System Architecture

System bus,interconnecting:

One or more CPU(s)System memory (RAM)I/O Devices

Secondary memory(disks, etc. . .)Network cardsGraphic cardsKeyboard, mouse, etc

CPU

Memory I/O Devices

Bus

Real Time Operating Systems – p. 14

Page 15: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

The CPU

Some general-purpose registersCan be accessed by all theprogramsdata registers or address registers

Program Counter (PC) register (alsoknown as Instruction Pointer)

Stack Pointer (SP) register

Flags register (also know as ProgramStatus Word)

Some “special” registersControl how the CPU worksMust be “protected”

PC

SP

FGP

Reg

iste

rsReal Time Operating Systems – p. 15

Page 16: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

The CPU - Protection

Regular user programs should not be allowed to:Influence the CPU mode of operationPerform I/O operationsReconfigure virtual memory

⇒ Need for “privileged” mode of execution (SupervisorMode)

Regular registers vs “special” registersRegular instructions vs privileged instructions

User programs run at a low privilege level (User Level)

Part of the OS (generally the kernel) runs in SupervisorMode

Real Time Operating Systems – p. 16

Page 17: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

An Example: Intel x86

Real CPUs are more complex. Example: Intel x86Few GP registers: EAX, EBX, ECX, EDX(accumulator registers - containing an 8bit part and a16bit part), EBP, ESI, EDI

EAX: Main accumulatorEBX: Sometimes used as base for arraysECX: Sometimes used as counterEBP: Stack base pointer (for subroutines calls)ESI: Source IndexEDI: Destination Index

Segmented architecture → segment registers CS(code segment), DS (data segment), SS (stacksegment), GS, FSVarious modes of operation: RM, PM, VM86, . . .

Real Time Operating Systems – p. 17

Page 18: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

The Kernel

Part of the OS which manages the hardware

Runs with the CPU in privileged mode (high privilegelevel), or Supervisor Mode

We often say that the privilege level is the KernelLevel (KL), or execution is in Kernel SpaceRegular programs run at User Level (UL), in UserSpace

Some mechanism is needed for increasing the privilegelevel (from US to KS) in a controlled way

Interrupts (+ traps / hw execptions)CPUs provide a way to switch to KL: softwareinterrupts / instructions causing an hardwareexception

Real Time Operating Systems – p. 18

Page 19: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Interrupts and Hardware Exceptions

Switch the CPU from User Level to Supervisor ModeEnter the kernelCan be used to implement system calls

A partial Context Switch is performedFlags and PC are pushed on the stackIf processor is executing at User Level, switch toKernel Level, and eventually switch to a kernel stackExecution jumps to a handler in the kernel → savethe user registers for restoring them later

Execution returns to User Level through a “return frominterrupt” instruction (IRET on x86)

Pop flags and PC from the stackEventually switch back to user stack

Real Time Operating Systems – p. 19

Page 20: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Simplified CPU Execution

To understand interrupts, consider simplified CPUexecution first

IncrementProgramCounter

ExecuteInstruction

Fetch Instruction

The CPU iteratively:Fetch an instruction (address given by PC)Increase the PCExecute the instruction (might update the PC onjump...)

Real Time Operating Systems – p. 20

Page 21: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

CPU Execution with Interrupts

More realistic execution model

InterruptsDisabled?

No

Yes

Fired?Interrupt

No

Yes

Hardware Exception

IncrementProgramCounter

ExecuteInstruction

Fetch Instruction

ProcessInterrupt

Interrupt: cannot fire during the execution of aninstruction

Hardware exception: caused by the execution of aninstruction

trap, syscall, sc, . . .I/O instructions at low privilege levelPage faults

Real Time Operating Systems – p. 21

Page 22: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Processing Interrupts

ProcessInterrupt

Interrupt table → addresses of the handlersInterrupt n fires ⇒ after eventually switching to KSand pushing flags and PC on the stack

Read the address contained in the nth entry of theinterrupt table, and jump to it!

Implemented in hardware or in softwarex86 → Interrupt Description Table composed byinterrupt gates. The CPU automatically jumps to thenth interrupt gateOther CPUs jump to a fixed address → a softwaredemultiplexer reads the interrupt table

Real Time Operating Systems – p. 22

Page 23: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Software Interrupt - System Call

τ 1

τ 2

KS

USInterruptSoftware

Blocks

New taskscheduled

Syscall

1. Task τ1 executes and invokes a system call (by issuinga software interrupt)

2. Execution passes from US to KS (the stack is changed,PC & flags are pushed, privilege level is increased)

3. The invoked syscall executes. Maybe, it is blocking

4. τ1 blocks → back to US, and τ2 is scheduled

Real Time Operating Systems – p. 23

Page 24: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Hardware Interrupt

τ 2

1τ KS

US

ISR

HardwareInterrupt

unblocks

1. While task τ2 is executing, an hardware interrupt arrives

2. Execution passes from US to KS (the stack is changed,PC & flags are pushed, privilege level is increased)

3. The proper Interrupt Service Routine executes

4. The ISR can unblock τ1 → when execution returns toUS, τ1 is scheduled

Real Time Operating Systems – p. 24

Page 25: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Summing up...

The execution flow enters the kernel for two reasons:Reacting to an event “coming from up” (a syscall)Reacting to an event “coming from down” (anhardware interrupt from a device)

The kernel executes in the context of the interruptedtask

A system call can block the invoking task, or canunblock a different task

An ISR can unblock a task

If a task is blocked / unblocked, when returning to userspace a context switch can happen

The scheduler is invoked when returning from KS to US

Real Time Operating Systems – p. 25

Page 26: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Example: I/O Operation

Consider a generic Input or Output to an externaldevice (example: a PCI card)

Performed by the kernelUser programs use a syscall for accessing thedevice

The operation if performed in 3 phases1. Setup: prepare the device for the I/O operation2. Wait: wait for the device to terminate the operation3. Cleanup: complete the operation

Various way to perform the operation: polling, PIO,DMA, ...

Real Time Operating Systems – p. 26

Page 27: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Polling

The user program invokes the kernel, and executionremains in kernel space until the operation is terminated

The kernel cyclically reads (polls) an interface statusregister to check if the operation is terminated1. The user program raises a software input2. Setup phase - in kernel: in case of input operation,

nothing is done; in case of output operation, write avalue to a card register

3. Wait - in kernel: cycle until a bit of the card statusregister becomes 1

4. Cleanup - in kernel: in case of input, read a valuefrom a card register; in case of output, nothing isdone. Eventually return to phase 1

5. IRETReal Time Operating Systems – p. 27

Page 28: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Interrupt

The user program invokes the kernel, but executionreturns to user space (the process blocks) while waitingfor the device

An interrupt will notify the kernel that phase 2 isterminated1. The user program raises a software input2. Setup phase - in kernel: instruct the device to raise

an input when it is ready for I/O3. Wait - return to user space: block the invoking task,

and schedule a new one (IRET)4. Cleanup - in kernel: the interrupt fires → enter

kernel, and perform the I/O operation5. Return to phase 2, or unblock the task if the

operation is terminated (IRET)Real Time Operating Systems – p. 28

Page 29: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Programmed I/O Mode

τ 1

τ 2

τ 1

ISR ISR ISR

OperationI/O

start i/o

Blocks KS

US

unblocks

Real Time Operating Systems – p. 29

Page 30: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

DMA / Bus Mastering

The user program invokes the kernel, but executionreturns to user space (the process blocks) while waitingfor the device

I/O operations are not performed by the kernel oninterrupt, but by a dedicated HW device. An interrupt israised when the whole I/O operation is terminated1. The user program raises a software input2. Setup phase - in kernel: instruct the DMA (or the

Bus Mastering Device) to perform the I/O3. Wait - return to user space: block the invoking task,

and schedule a new one (IRET)4. Cleanup - in kernel: the interrupt fires → the

operation is terminated. Stop device and DMA5. Unblock the task and invoke the scheduler (IRET)

Real Time Operating Systems – p. 30

Page 31: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

DMA / Bus Mastering - 2

τ 1

τ 2

τ 1

ISR

OperationI/O

Blocks KS

US

unblocks

start DMA

Real Time Operating Systems – p. 31

Page 32: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Example: Linux System Call

1 int close(int fd)2 {3 long __res;45 __asm__ volatile ("int $0x80"6 : "=a" (__res)7 : "0" (__NR_close),"b" ((long)(fd)));8 __syscall_return(type,__res);9 }

Don’t be scared!syscall return() is just converting a linux error

code in −1, properly filling errno

Linux uses a syscall1 macro to define it (seeasm/unistd.h)1 #define _syscall1(type,name,type1,arg1)2 type name(type1 arg1) \3 { \4 ...

Real Time Operating Systems – p. 32

Page 33: Real Time Operating Systemsdisi.unitn.it/~abeni/RTOS/2011/kernel.pdfReal-Time Operating Systems Real-Time operating system (RTOS):OS providing support to Real-Time applications Operating

Kernel Side (arch/*/kernel/entry.S)

1 ENTRY(system_call)2 pushl %eax # save orig_eax3 SAVE_ALL4 GET_THREAD_INFO(%ebp)5 cmpl $(nr_syscalls), %eax6 jae syscall_badsys7 syscall_call:8 call *sys_call_table(,%eax,4)9 movl %eax,EAX(%esp) # store the return value

10 /* ... */11 restore_all:12 /* ... */13 RESTORE_REGS14 addl $4, %esp15 1: iret

SAVE ALL pushes all the registers on the stack

The syscall number is in the eax register (accumulator)

After executing the syscall, the return value is in eax →

must be put in the stack to pop it in RESTORE REGS

Real Time Operating Systems – p. 33