Especificação de um Mecanismo Autonômico em CSP Adalberto R. Sampaio Junior Doutorado –...
Transcript of Especificação de um Mecanismo Autonômico em CSP Adalberto R. Sampaio Junior Doutorado –...
Especificação de um Mecanismo Autonômico
em CSPAdalberto R. Sampaio Junior
Doutorado – Cin/UFPE
2
Ambiente de execução do sistema
S = state?i -> signal!i -> ( next -> S [] execute?x -> Sidx(x) )Sidx(i) = state.i -> signal!i -> execute?x -> Sidx(x) )
3
Sistemas simulados
S1: não determinístico
4
Sistemas simulados
S1: determinísticoEstados válidos: 1, 2, 3, 5
5
Sistemas simulados
S3: determinísticoEstados válidos: 1, 2
6
Sistemas simulados
S4: determinísticoEstados válidos: 1, 5,3,2
7
Verificação de Traces
• Foi verificado se o ambiente e execução S poderia executar os sistemas S1, S2, S3, S4.• Traces• S \{|execute, next|} [T= S1• S \{|execute, next|} [T= S2• S \{|execute, next|} [T= S3• S \{|execute, next|} [T= S4
8
Mecanismo Autonômico
• Modelado com base na arquitetura Mape-K proposta pela IBM.• Quatro processos:• Monitor;• Analisador;• Planejador;• Executor;
• Uma base de conhecimento
9
Mecanismo Autonômico
• Monitor
check(n) = {s | s <- inter({sym.n},SYMPTOMS), member(sym.n,SYMPTOMS)}Monitor = signal?s -> monitor!s -> if empty(check(s)) then
next -> Monitor else symptom_detect!head(seq(check(s))) -> Monitor
10
Mecanismo Autonômico
• Analisador
request_change(n) = mapLookup(CHANGES,n)Analizer = symptom_detect?s -> if member(s, SYMPTOMS) then
change_plan!request_change(s) -> Analizer else Analizer
11
Mecanismo Autonômico
• Planejador
Planner = change_plan?cp -> (mapMember(ACTIONS, cp)) & apply!mapLookup(ACTIONS,cp) -> Planner
12
Mecanismo Autonômico
• Executor
Executor = apply?cp -> execute!cp -> Executor
13
Mecanismo Autonômico
Autonomic = ( ( Monitor [|{|symptom_detect|}|] Analizer ) [|{|change_plan|}|] Planner) [|{|apply|}|] Executor
14
Mecanismo Autonômico
• Base de conhecimento---------------Knowledge Base----------------- S2--SYMPTOMS = {sym.2, sym.3}--CHANGES = (| sym.2 => change.1, sym.3 => change.2 |)--ACTIONS = (| change.1 => 3, change.2 => 5 |)
-- S3--SYMPTOMS = {sym.2}--CHANGES = (| sym.2 => change.1 |)--ACTIONS = (| change.1 => 1 |)
-- S4SYMPTOMS = {sym.1, sym.2, sym.3, sym.5}CHANGES = (| sym.1 => change.1, sym.2 => change.2, sym.3 => change.3, sym.5 => change.4 |)ACTIONS = (| change.1 => 5, change.2 => 1, change.3 => 2, change.4 => 3 |)---------------end knowledge Base---------------
15
Execução do Sistema de Forma AutonômicaAu = S [|{|signal, execute, next|}|] Autonomic• Propriedades verificadas
• assert Au :[deadlock free]• assert Au :[deterministic]• assert Au :[divergence free]• assert S \{|execute, next|} [T= S1• assert S \{|execute, next|} [T= S2• assert S \{|execute, next|} [T= S3• assert S \{|execute, next|} [T= S4• TO_HIDE = {|symptom_detect, change_plan, apply, next, execute, monitor|}• assert Au \ TO_HIDE [T= S1• assert Au \ TO_HIDE [T= S2• assert Au \ TO_HIDE [T= S3• assert Au \ TO_HIDE [T= S4
16
Execução do Sistema de Forma Autonômica--
-- monitor.[n]
-- execute.[m]
A(n,m) = monitor.n -> execute.m -> A(n,m)
B(m,n) = execute.m -> monitor.n -> B(m,n)
assert Autonomic \ {|signal, symptom_detect, change_plan, apply|} [T= A(3,4)
assert Autonomic \ {|signal, symptom_detect, change_plan, apply|} [T= B(4,3)
17
Refinamento [FD=
---------------Centralized Monitor----------------- deterministic-- Monitorcheck(n) = {s | s <- inter({sym.n},SYMPTOMS), member(sym.n,SYMPTOMS)}Monitor = signal?s -> monitor!s -> if empty(check(s)) then next -> Monitor else symptom_detect!head(seq(check(s))) -> Monitor-------------------------------------------------
---------------Distributed Monitor---------------Non deterministic-- Monitor M(i) = sense?s -> if s == i then (signal.s -> monitor!s -> if empty (check(s)) then next -> M(i) else symptom_detect!head(seq(check(s))) -> M(i) ) else M(i)MMM = ||| i : STATES @ M(i)
assert MMM \ {|sense|} [T= Monitorassert MMM \ {|sense|} [FD= Monitor-------------------------------------------------
18
Obrigado!