Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouDavid Capote Alterado mais de 9 anos atrás
1
zeque - Grad. CC1 Sistemas Operacionais l Processos Plano de Apresentação O Modelo de Processo Definição Características Hierarquia Implementação Estados Transição de Estados O Modelo de Comunicação Comunicação Interprocessos Condição de competição Seções críticas Comunicação Interprocessos Exclusão mútua solução de software TSL Primitivas de comunicação sleep/wakeup semáforos contadores de eventos Monitor Problemas Clássicos
2
zeque - Grad. CC2 O Modelo de Processo Definição Definição l Um processo é um programa que está sendo executado l Um processo é uma atividade assíncrona Dados Inicializados Texto heap pilha do usuário argv, envp Área de usuário pilha do processo no kernel bss-block started by symbol Tabela de símbolos Dados Inicializados Texto Cabeçalho Número MágicoUNIX:ProgramasProcessos Arquivo Executável Espaço de Endereços
3
zeque - Grad. CC3 O Modelo de Processo Características Características l Processos seqüenciais l Multiprogramação l Processamento de Interrupçoes Tipos de Interrupções chamadas ao supervisor interrupções de dispositivos interrupções externas excessões falhas de máquina Chaveamento de processos
4
zeque - Grad. CC4 O Modelo de Processo Hierarquia de Processos Hierarquia de Processos l Processos de Sistema l Processos de Usuário Hierarquia na Criação Hierarquia na Criação l Processo PAI l Processo FILHO
5
zeque - Grad. CC5 O Modelo de Processo Implementação de Processo Implementação de Processo l Contexto: Representação de um processo por um conjunto de dados l Registro descritor ou bloco de controle: estado do processo, contador de instruções, apontador para pilha de execução, alocação de memória, arquivos, dispositivos contabilidade, escalonamento
6
zeque - Grad. CC6 O Modelo de Processo Estados de um Processo Estados de um Processo l pronto l bloqueado l em execução
7
zeque - Grad. CC7 O Modelo de Processo Transição de Estado de um Processo Transição de Estado de um Processo despacho (procId): pronto em execução tempoesgotado(procId): em execução pronto bloqueio(procId): em execução bloqueado desbloqueio(procId): bloqueado pronto Em execução Bloqueado Pronto Chamada ao sistema interrupção do relógio despacho atendimento do pedido Diagrama de transição de estados de um processo
8
zeque - Grad. CC8 O Modelo de Comunicação Sistema Operacional P1P1 P2P2 PnPn D1D1 D2D2 DkDk Chamada ao sistema Despacho Interrupção Inicia E/S
9
zeque - Grad. CC9 Comunicação Interprocessos l Condição de competição l Seções críticas l Exclusão mútua espera ocupado l Primitivas de comunicação espera bloqueado l Monitor l Problemas Clássicos
10
zeque - Grad. CC10 Comunicação Interprocessos Exclusão Mútua Exclusão Mútua l Desabilitando interrupções l Controlando por software (construção MUTEXBEGIN/MUTEXEND) processo p1processo p2 faça até acabarfaça até acabar calcule; calcule; MUTEXBEGIN MUTEXBEGIN acesse RC; acesse RC; MUTEXEND MUTEXEND calcule; calcule; fim. fim.
11
zeque - Grad. CC11 Comunicação Interprocessos Exclusão Mútua Exclusão Mútua l MUTEXBEGIN/MUTEXEND variáveis de bloqueio variáveis de bloqueio MUTEXBEGIN: enquanto (ocupado) faça ocupado = V; MUTEXEND: ocupado = F; alternância estrita alternância estrita MUTEXBEGIN: enquanto (vez = MinhaVez) faça ; MUTEXEND: Vez = VezOutro;
12
zeque - Grad. CC12 Comunicação Interprocessos Exclusão Mútua Exclusão Mútua l MUTEXBEGIN/MUTEXEND solução de Peterson solução de Peterson MUTEXBEGIN: necessidade(minha) = V; enquanto (necessidade(outro)) faça se vez = minha então faça necessidade(minha) = F; enquanto (vez = minha) faça ; necessidade(minha) = V; fim; fim; MUTEXEND: necessidade(minha) = F; vez = outro;
13
zeque - Grad. CC13 Comunicação Interprocessos Exclusão Mútua Exclusão Mútua l instrução TSL (Test and Set Lock) MUTEXBEGIN: TESTANDSET(ocupado) enquanto (codigo) faça TESTANDSET(ocupado); fim; MUTEXEND: ocupado = F;
14
zeque - Grad. CC14 Comunicação Interprocessos l sleep/wakeup l semáforos l contadores de eventos l monitores l passagem de mensagens l outras
15
zeque - Grad. CC15 Primitivas de Comunicação lock/unlock declare (g) gate; lock (g);... unlock(g); lock/unlock declare (g) gate; lock (g);... unlock(g); sleep/wakeup block/wakeup sleep;... wakeup(p); sleep/wakeup block/wakeup sleep;... wakeup(p);
16
zeque - Grad. CC16 Primitivas de Comunicação Semáforos Semáforos declare (s) semaphore initial (i); P(s); /* espera até que s>0 e então decrementa s */... V(s); /* incremanta s */
17
zeque - Grad. CC17 Primitivas de Comunicação Contadores de eventos Contadores de eventos declare (e) event_counter; Read(e); /* retorna o valor atual de e */ Advance(e); /* incrementa e */ Await(e,v); /* espera que e tenha um valor igual ou supeior a v */ declare (e) event; Completion(e)=...; /* true or false */... call p event(e); wait(e);
18
zeque - Grad. CC18 Monitor l Construção de concorrência Região Crítica condição j condição k Sinalizador PiPi entrada i Visão abstrata do Conceito de Monitor PkPk PrPr PtPt PcPc PbPb PjPj PxPx PvPv PaPa PqPq entrada i+1 entrada i-1
19
zeque - Grad. CC19 Monitor: Problemas Clássicos l Controle de um Recurso resource:Monitor; declare(in_use) bit; declare(available) condition; do in_use=false end do; acquire:Entry; if in_use then wait(available); in_use=true; end acquire; release:entry; in_use=false; signal(available); end release; end resource;
20
zeque - Grad. CC20 Monitor: Problemas Clássicos l O BUFFER Circular CircularBuffer: Monitor; declare(Buffer(5))character(80)varying; declare(head,tail,#Buffers,#Full)fixed; declare(BufferVacant,BufferOccupied)condition; do Head=1; Tail=1; #Buffers=5; #Full=0; end; Spool: Entry(Contents);... end Spool; UnSpool: Entry(Contents);... end UnSpool; end CircularBuffer;
21
zeque - Grad. CC21 Monitor: Problemas Clássicos l O BUFFER Circular (cont) Spool: Entry(Contents); declare(Contents)character(*)varying; if #Full=#Buffers then wait(BufferVacant); Buffer(Tail)=Contents; Tail=mod(Tail,#Buffers)+1; #Full=#Full+1; signal(BufferOccupied); end Spool;
22
zeque - Grad. CC22 Monitor: Problemas Clássicos l O BUFFER Circular (cont.) UnSpool: Entry(Contents); declare(Contents)character(*)varying; if #Full=0 then wait(BufferOccupied); Contents=Buffer(Head); Head=mod(Head,#Buffers)+1; #Full=#Full-1; signal(BufferVacant); end UnSpool;
23
zeque - Grad. CC23 Monitor: Problemas Clássicos l Leitores/Escritores FileAccess: Monitor; declare(true,false)bit; declare(#Reading)bit; declare(activeWriter)bit; declare(OkToRead,OkToWrite)condition; do true=1’b’; false=0’b’;#Reading=0; activeWriter=false; end;
24
zeque - Grad. CC24 Monitor: Problemas Clássicos l Leitores/Escritores (cont.) StartRead: Entry; if activeWriter| empty(OkToWrite) then wait(OkToRead); #Reading=#Reading+1; signal(OkToRead); end StartRead; EndRead: Entry; #Reading=#Reading-1; if #Reading=0 then signal(OkToWrite); end EndRead;
25
zeque - Grad. CC25 Monitor: Problemas Clássicos l Leitores/Escritores (cont.) StartWrite: Entry; if #Reading =0|activeWriter then wait(OkToWrite); activeWriter=true; end StartWrite; EndWrite: Entry; activeWriter=false; if empty(OkToRead) then signal(OkToRead) else signal(OkToWrite); end EndWrite; end FileAccess;
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.