Resumo Sistemas Operativos
Por: Paula Anselmo • 4/7/2017 • Resenha • 3.282 Palavras (14 Páginas) • 438 Visualizações
Gestão de Processos:
Processos:
Definição:
- Entidade lógica autónoma formada por alocação de recursos e execução de instruções – representa um programa em execução
- É executado numa “Máquina Virtual”
- Possui memória e outros recursos
- Engloba uma ou mais threads que partilham recursos do processo
- Recursos necessários: CPU, Memória e Dispositivos de E/S
- Recursos são alocados quando: se dá a criação do processo e na execução
Conceitos:
- Processador: Hardware responsável por toda a atividade do sistema; executa ações definidas em instruções máquina
- Processo: Entidade Ativa; executa um conjunto de ações determinadas por um programa
- Programa: Entidade Passiva; sequências de instruções sem atividade própria, essas instruções são executadas por processos.
Pseudo-paralelismo:
- Os sistemas operativos atuais são, na sua maior parte, multiprogramados
- A simulação do paralelismo advém da partilha concorrente do processador, que vem da existência de diversas atividades que disputam o acesso aos recursos do sistema
Características:
Um processo tem um PCB (bloco de controlo), contexto de execução, e um Address Space (Espaço de endereçamento), memória atribuída a cada processo pelo Sistema Operativo.
- Bloco de Controlo:
Esta estrutura contém toda a informação sobre o processo:
- Estado do Processo
- Contador de programa: contém o endereço da instrução seguinte a ser executada
- Registos de CPU: o valor corrente de todos os registos deve ser guardado em memória quando o processo transita de estado
- Parâmetros de escalonamento: inclui a prioridade do processo
- Informação de memória
- Informação de segurança e auditoria
- Informação referente a entrada/saída
PID (Process ID) é um identificar único do processo.
- Espaço de endereçamento:
[pic 1]
Estados Internos:
[pic 2]
[pic 3]
[pic 4]
[pic 5]
[pic 6]
[pic 7]
[pic 8]
Modelo Computacional:
- Estrutura de dados- Árvore
- Estrutura hierárquica
[pic 9]
[pic 10]
Operações sobre processos:
- Processos podem ser (são) executados concorrentemente:
- Criação e Destruição de forma dinâmica.
[pic 11]
Criação de processos:
Existem 4 eventos que podem causar a criação de um novo processo:
- Inicialização do sistema
- Execução de uma chamada de sistema dentro de um processo (“fork()”)
- A pedido de um utilizador; quando executa um programa
- Início de um “batch job”
Criação de processos filhos:
Quando um processo cria outro processo existem duas possibilidades:
- O “Pai” continua a executar corretamente com o “Filho”
- O “Pai” espera até que alguns ou todos os “Filhos” terminem.
Existem também duas possibilidades em termos do espaço de endereços dos “Filhos”:
- Adquire um duplicado exato do ”Pai”: programa e dados
- É carregado um novo programa[pic 12]
[pic 13]
Colaboração entre processos:
[pic 14]
[pic 15]
Término de um processo:
Um processo termina devido a uma das seguintes condições:
- Saída normal
- Saída com erro
- Erro fatal
- Morto por outro processo: chamada de sistema “kill()”.
O processo quando termina é retirado de execução e liberta o contexto e recursos por ele detidos.
Threads:
Definição:
- Uma thread é um fluxo de atividade que é executada no âmbito de um processo
- Thread ID é um contador do programa, o seu conjunto de registos e uma pilha (stack)
- Um processo pode ter apenas uma linha de execução (single threaded process) ou ter várias linhas de execução (multithreaded process)
Single thread vs Multithread
[pic 16]
Motivação:
Em muitos casos existem várias tarefas a serem realizadas quase ao mesmo tempo, ou seja, concorrentemente. Se uma tarefa bloqueia, as outras podem aproveitar o tempo de CPU do processo.
Por exemplo: quando um browser está a ser executado, podemos ter uma thread que está a carregar as imagens, outra que está a aceitar uma stream da rede e outra que está associada À entrada de dados do teclado.
Diferenças em relação aos processos:
A criação de uma thread é mais leve que a de um processo, a nova thread partilha o espaço de endereços, dados, recursos do processo onde foi criada. Trocar a execução entre threads também é significativamente mais rápida e mais eficiente do que trocar entre processos.
- Vantagens:
- Tempo de resposta: a aplicação continua a funcionar mesmo que uma das threads esteja bloqueada
- Partilha de recursos
- Economia: alocação de memória e recursos a um novo processo é custoso e moroso. Troca de contexto de processos também o é.
- Escalabilidade em arquiteturas multiprocessador: várias threads podem ser executadas em paralelo por vários CPU’s
- Desvantagens/Dificuldades
- Como planear/implementar a divisão de tarefas em atividades
- Equilíbrio da divisão de trabalhos pelas várias tarefas
- Necessidade se sincronização
- Testes e debugging
Modelos de multithreading:
O suporte para threads pode ser providenciado ao nível do utilizador ou ao nível do kernel (a maior parte dos SO’s suporta threads no seu kernel)
[pic 17]
[pic 18]
[pic 19]
[pic 20]
Implementação: Bibliotecas de Threads
As três bibliotecas mais usadas:
- POSIX Pthreads
- WIN32
- Java Threads
Problemas das Threads:
[pic 21]
[pic 22]
[pic 23]
[pic 24]
[pic 25]
Escalanador- “Scheduler”
Escalonamento (Um único CPU):
- É a base dos SO’s que suportam multi-programação
- Quando existem 2 ou mais processos no estado Executável, deve existir uma decisão que vai decidir qual se vai executar a seguir
- Quem vai decidir é o Escalanador
- O que coloca um novo processo na CPU é o dispatcher
- Objetivo: manter o CPU ocupado durante o maior tempo possível, obtendo a maximização da utilização do CPU
Maximização do CPU:
- Um processo está em execução até executar uma operação de E/S
- Dado que esta operação é demorada e deixa o CPU parado, o SO tira este processo do CPU
- O SO dá o CPU a outro processo à espera para ser executado
Escalanador (Scheduler):
- Responsável pela implementação do algoritmo de scheduling, que irá determinar qual o próximo processo a ser executado
- Coloca o próximo processo a ser executado no topo desta lista
- Esta lista é mantida em memória principal
- O Escalanador, após selecionar o processo, aloca CPU para esse processo
- Em geral, cada elemento dessa lista aponta para o Bloco de Controlo do Processo
Dispatcher:
- Responsável pela colocação efetiva de um processo no CPU
- Após a seleção do processo e alocação do CPU pelo Escalanador, o dispatcher dá o controlo do CPU ao processo
- O dispatcher deve ser rápido e eficiente
- Este processo chama-se latência do dispatcher
CPU bound: Processo com poucas rajadas de CPU mas longas
IO bound: Processos com muitas rajadas de CPU mas curtas
...