s emb t11-processes
TRANSCRIPT
RMR©2012
Maths is not everything
Embedded Systems6 - Operating Systems
ProcessesContext Switching
MultitaskingUML and Processes
RMR©2012
Maths is not everything
Operating Systems
Processes
RMR©2012
Maths is not everything
Why we need it?
The alternative is to use sequential programming techniques
The programmer must construct the system so that it involves the cyclic execution of a program sequence to handle the various concurrent activities
This complicates the programmer's already difficult task and involves him/her in considerations of structures which are irrelevant to the control of the activities in hand
The resulting programs will be more obscure and inelegant
It makes decomposition of the problem more complex
Parallel execution of the program on more than one processor will be much more difficult to achieve
The placement of code to deal with faults is more problematic
3
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Why multiple processes?
Processes help us manage t iming complexity:
multiple rates
multimediaautomotive
asynchronous input
user interfacescommunication systems
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Example: engine control
Tasks:spark control
crankshaft sensing
fuel/air mixture
oxygen sensor
Kalman filter
enginecontroller
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Life without processes
Code turns into a mess:
interruptions of one task for another
spaghetti code
time
A
BCAC
A_code();…B_code();…if (C) C_code();…A_code();…switch (x) { case C: C(); case D: D(); ...
RMR©2012
Maths is not everything
Process Representation
CoroutinesFork and JoinCobeginExplicit Process Declaration
7
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Co-routines
ADR r14,co2aco1a … ADR r13,co1b MOV r15,r14co1b … ADR r13,co1c MOV r15,r14co1c ...
co2a … ADR r13,co2b MOV r15,r13co2b … ADR r13,co2c MOV r15,r13co2c …
Co-routine 1 Co-routine 2
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Co-routine methodology
Like subroutine, but caller determines the return address.Co-routines voluntarily give up control to other co-routines.Pattern of control transfers is embedded in the code.
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Processes
A process is a unique execution of a program.
Several copies of a program may run simultaneously or at different times.
A process has its own state:registers;
memory.
The operating system manages processes.
RMR©2012
Maths is not everything
Processes and Threads
All operating systems provide processes
Processes execute in their own virtual machine (VM) to avoid interference from other processes
Recent OSs provide mechanisms for creating threads within the same virtual machine; threads are sometimes provided transparently to the OS
Threads have unrestricted access to their VM
The programmer and the language must provide the protection from interference
Long debate over whether language should define concurrency or leave it up to the O.S.
Ada and Java provide concurrency
C, C++ do not11
RMR©2012
Maths is not everything
Concurrent Programming Constructs
AllowThe expression of concurrent execution through the notion of process
Process synchronization
Inter-process communication.
Processes may be: independent
cooperating
competing
12
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Processes and CPUs
Activation record: c o p y o f p r o c e s s state.Context switch:
current CPU context goes out;
new CPU context goes in. CPU
PC
registers
process 1
process 2
...
memory
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Processes in POSIX
Create a process with fork:
parent process keeps executing old program;
child process executes new program.
process a
process a process b
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
fork()
The fork process creates child:
childid = fork();if (childid == 0) { /* child operations */} else { /* parent operations */}
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
execv()
Overlays child code:childid = fork();if (childid == 0) { execv(“mychild”,childargs); perror(“execv”); exit(1);}
file with child code
RMR©2012
Maths is not everything
Cobegin
The cobegin (or parbegin or par) is a structured way of denoting the concurrent execution of a collection of statements:
cobegin S1; S2; S3; . . Sncoend
S1, S2 etc, execute concurrentlyThe statement terminates when S1, S2 etc have terminated17
RMR©2012
Maths is not everything
Explicit Process Declaration
The structure of a program can be made clearer if routines state whether they will be executed concurrentlyNote that this does not say when they will execute
task body Process is
begin
. . .
end;
Languages that support explicit process declaration may have explicit or implicit process/task creation
18
RMR©2012
Maths is not everything
Operating Systems
Context Switching
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Context switching
Who controls when the context is switched?How is the context switched?
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Co-operative multitasking
Improvement on co-routines:hides context switching mechanism;
still relies on processes to give up CPU.
Each process allows a context switch at cswitch() call.Separate scheduler chooses which process runs next.
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Problems with co-operative multitasking
Programming errors can keep other processes out:
process never gives up CPU;
process waits too long to switch, missing input.
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Context switching
Must copy all registers to activation record, keeping proper return value for PC.Must copy new activation record into CPU state.How does the program that copies the context keep its own context?
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Context switching in ARM
Save old process:
STMIA r13,{r0-r14}^
MRS r0,SPSR
STMDB r13,{r0,r15}
Start new process:
ADR r0,NEXTPROCLDR r13,[r0]LDMDB r13,{r0,r14}MSR SPSR,r0LDMIA r13,{r0-r14}^MOVS pc,r14
Save all-reg ⟶ PD
get status
Save SPR, PC ⟶ PD
get new PD
get new context
set status
set new PC
RMR©2012
Maths is not everything
Operating Systems
Multitasking
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Preemptive multitasking
Most powerful form of multitasking:OS controls when contexts switches;
OS determines what process runs next.
Use timer to call OS, switch contexts:
CPUti
merinterrupt
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Flow of control with preemption
time
P1 OS P1 OS P2
interrupt interrupt
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Preemptive context switching
Timer interrupt gives control to OS, which saves interrupted process’s state in an activation record.OS chooses next process to run.OS installs desired activation record as current CPU state.
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Why not use interrupts?
We could change the interrupt vector at every period, but:
we would need management code anyway;
we would have to know the next period’s process at the start of the current process.
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Processes and UML
A process is an active class---independent thread of control.
processClass1
myOperations()
startresume
myAttributes
Signals
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
UML signals
Signal: object that is passed between processes for active communication:
acomm: datasignal
RMR©2012
Maths is not everything
© 2
008
Way
ne W
olf
Designing with active objects
Can mix normal and active objects:
p1: processClass1
master: masterClass
w: wrapperClass
a: rawMsg
ahat: fullMsg