Gerência de processos Estudos de caso - BSD Unix Escalonamento preemptivo com prioridades dinâmicas – Prioridades entre 0 e 127 0 a 49 Processos executando em modo kernel 50 a 127 Processos executando em modo usuário – 32 filas de pronto
Gerência de processos Estudos de caso - BSD Unix – Prioridade recalculada a cada 4 ticks (~ 40 ms) p usrpri = PUSER [ ] 2 × p nice p estcpu 4 p estcpu Estimativa para uso recente da CPU pelo processo Peso entre − 20 e 20 p nice
Gerência de processos Estudos de caso - BSD Unix – p_estcpu incrementado a cada tick, se o processo estiver executando Aprox. 90% do uso da CPU acumulado em 1 s é esquecido após um período de tempo, em função da carga no sistema. p estcpu = 2 × load 2 × load 1 ⋅ p estcpu p nice load Média amostrada da soma dos comprimentos da fila de pronto e da fila de bloqueado no minuto anterior
Gerência de processos Estudos de caso - BSD Unix – Para processos bloqueados por mais de 1 s, prioridades são recalculadas quando se tornam prontos. p estcpu = [ 2 × load 1 ] p slptime 2 × load × p estcpu p_slptime Tempo estimado do processo no estado de bloqueado (incrementado a cada 1 s).
Gerência de processos Estudos de caso - Windows NT Escalonamento preemptivo com prioridades dinâmicas – Unidade de escalonamento: thread – Threads possuem prioridade base e prioridade corrente (alterada temporariamente) – Prioridades entre 0 e 31 (31 = maior prioridade) 0 Thread ociosa 1 a 15 Níveis variáveis 16 a 31 Níveis de tempo-real
Gerência de processos Estudos de caso - Windows NT Win32 API mapeia prioridades de processos e threads para prioridades do NT
Gerência de processos Estudos de caso - Windows NT – Elevação da prioridade de threads ao sair de estado de bloqueio ou espera Prioridade decrementa em uma unidade a cada ciclo, até retornar à prioridade base da thread
Gerência de processos Estudos de caso - Windows NT – Elevação da prioridade de threads que vão entrar em estado de bloqueio ou espera Prioridade de threads interativas incrementa de 8 para 14 Quantum dobra thread fica pronta Prioridade volta ao normal quando termina o quantum – Incremento do quantum de threads do processo foreground Pode manter o valor, duplicar ou triplicar
Gerência de processos Estudos de caso - Windows NT – Elevação da prioridade de threads que estão sendo postergadas repetidamente Threads prontas a mais de 300 ticks (~ 4 s) ganham prioridade 15, e quantum é dobrado Prioridade volta ao normal assim que o quantum duplicado termina
Gerência de processos Operações sobre processos (Linux) Descrição de processos – Processos possuem um ID único (PID) – Possuem um usuário dono (UID) e um usuário efetivo (EUID), assim como grupo dono (GID) e grupo efetivo (EGID) – Prioridade base ( nice ) pode ser alterada – Toda a memória e objetos de sua posse estão protegidos de outros processos
Gerência de processos Operações sobre processos (Linux) Escalonamento no Linux: – Custo computacional independente do número de processos – Usa prioridades: processos são organizados em 140 filas (uma para cada prioridade) – Fila 1 tem prioridade mais alta – Dois conjuntos de filas: Filas ativas: processos sendo escalonados Filas expiradas: processos que consumiram todo o quantum de tempo
Gerência de processos Operações sobre processos (Linux) Escalonamento no Linux: filas
Gerência de processos Operações sobre processos (Linux) Filas ativas X expiradas: – Processo movida da fila ativa para expirada quando zera seu crédito de CPU – Seu novo crédito de CPU (e prioridade) é recalculado, definindo sua nova fila – Quando fila ativa de uma determinada prioridade fica vazia, é permutada pela fila expirada correspondente
Gerência de processos Operações sobre processos (Linux) Preempção de processos: – Processo em execução (estado rondando) preemptado imediatamente se um processo mais prioritário se torna apto – Processo preemptado volta para sua fila de prioridade, e seu crédito de CPU é reduzido de acordo com o tempo que ficou em execução
Gerência de processos Operações sobre processos (Linux) Prioridades dinâmicas: – Prioridades são recalculadas para se adaptarem ao comportamento do processo – Processos CPU-bound são penalizados, e IO bound são recompensados CPU bound : prioridades acrescidas de até 5 unidades IO bound : prioridades reduzidas em até 5 unidades – Interatividade calculada com base em quanto tempo um processo executa, comparado a quanto tempo fica bloqueado (em espera)
Gerência de processos Operações sobre processos (Linux) Prioridades dinâmicas: – O crédito de uso de CPU (chamado timeslice ) é modificado junto com a prioridade – Prioridades maiores → timeslices também maiores – Timeslice tem valores entre: 5 ms: menor valor possível 100 ms: valor típico 800 ms: valor máximo
Gerência de processos Outras referências Para saber mais: Vários. " The Design and Implementation of the 4.4 BSD Operating System ". Addison-Wesley, 1996. D. Solomon." Inside Windows NT,2nd ed. ". Microsoft Press,1998. R. Stevens." Advanced Programming in the Unix Environment ".Addison-Wesley, 1992. Páginas de manual do Linux (man pages)
Gerência de memória - Introdução Memória primária: recurso fundamental Todos os dados usados por processos e sistema operacional precisam em algum momento residir em memória primária Recurso escasso
Gerência de memória - Introdução Processo Linux em memória
Gerência de memória - Introdução Problemas quanto à gerência de memória – Alocação Controle de que partes da memória estão alocadas a que processos. Atendimento das necessidades de memória dos processos. – Proteção Um processo não pode alterar ou ler a memória de outro processo, a não ser que isto seja desejável. – Eficiência no uso Aproveitamento da memória disponível
Gerência de memória - Alocação Alocação com partições fixas – Espaço de endereçamento dividido em partições de tamanho fixo.
Gerência de memória - Alocação Alocação com partições variáveis – São alocadas aos processos suas necessidades exatas de memória Ex: processos A, B, C e D usando a memória ao longo do tempo. As áreas sombreadas são memória livre.
Gerência de memória - Alocação Alocação: problemas – Ambas abordagens apresentam sérios problemas: Fragmentação interna (partições fixas) Fragmentação externa (partições variáveis) – Atualmente usa-se endereçamento virtual Cada processo vê a memória como se fosse só sua Um processo não vê os demais processos
Gerência de memória - paginação Endereçamento virtual: paginação – Dividem-se os espaços de endereçamento real e virtual em pequenos blocos de mesmo tamanho. Os blocos virtuais são chamados de páginas. Os blocos reais são chamados de page frames. – Mapeiam-se páginas para page frames. – O mapeamento não precisa obedecer a nenhuma contiguidade.
Gerência de memória – paginação Paginação (cont.) – O mapeamento é feito através de tabelas de páginas . – Estas são indexadas pelo número de página. – Cada entrada da tabela (PTE) possui o número do page frame correspondente, mais bits de controle. – Cada processo possui sua tabela de páginas.
Gerência de memória Memória virtual: memória secundária usada como se fosse memória principal – Parece haver mais memória principal instalada. – Parte de um processo poder estar em memória principal, e parte na memória secundária – Ao se necessitar de parte de um processo que está na memória secundária, transfere-se-a para memória principal.
Gerência de memória – Memória Virtual Swap com transferências de processos por completo entre memória principal e memória secundária
Gerência de memória - Memória Virtual Situação em que parte das páginas que compõem um processo estão em memória principal, e parte estão no swap.
Gerência de memória - Memória Virtual O que acontece num falta de página: Referência Exceção (falta de página) Página está no swap Carrega-se a página faltosa Atualiza-se tabela de páginas Reinicia-se a instrução Além disto, caso não haja espaço na memória principal para receber a nova página, uma outra página deve ser escolhida para ser retirada de memória.
Gerência de memória - Memória Virtual Estatísticas de memória virtual no Linux com o programa vmstat kB trazidos da kB enviados Ocupação da memória virtual para memória memória virtual no último virtual no último intervalo intervalo Memória livre
Gerência de memória - Memória Virtual Uso de memória virtual: Processo maior que memória disponível foi executado ... Repare colunas swpd, free, si e so Processo terminou
Recommend
More recommend