Buscar

Fundamentos de Sistemas Operacionais - Unidade III - Resumo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Fundamento de S.O.s – Unidade III
5.1 – Intro. a processos
Os sistemas conseguem desenvolver grande variedade de tarefas simultaneamente, mas só notamos essa capacidade extraordinária quando ela falha, sobrecarrega e vemos queda de desempenho;
Um server de arquivos no cérebro dele no momento de pico de uso do sistema, veríamos dezenas, em casos centenas, de usuários fazendo milhares de requisições ao mesmo tempo, o antivírus varrendo tudo, o software de gerenciamento de redes monitorando e diversos discos RAID necessitam processar suas funcionalidades, é necessário que os processos estejam em plena ação;
Em todos os sistemas com “paralelismo” temos a CPU trabalhando algumas dezenas ou centenas de milissegundos numa única aplicação e subsequentemente na próxima até o ciclo se completar, devido a rapidez dos ciclos isso gera a sensação de que o ambiente está atendendo a várias aplicações simultaneamente;
Só em sistemas de múltiplos processadores que temos vários programas atendidos no mesmo instante, controlar várias atividades em paralelo é algo sendo desenvolvido e aprimorado com base no modelo de processos sequenciais.
5.1.1 Processo
O CPU pode executar um processo por vez, mesmo com dois cores (duas CPUs) ainda é o mesmo só um processo por vez;
Processo é uma atividade, possuindo um programa, entrada, saída e um estado;
Processos podem conter mais de uma tarefa, ou seja tarefa e processo são diferentes;
No núcleo de S.O. temos PCBs (Process Control Blocks) que armazena as informações referentes aos processos ativos no ambiente, cada processo tem um identificador único no sistema, o PID – Process IDentifier;
5.1.2 Criação de processos
Processos são criados e destruídos constantemente nos sistemas, essas ops. Disponibilizam aplicações por meio de chamadas de sistema que diferem entre S.O.s;
Para Sistemas de proposito gerais, é preciso algum mecanismo para criar e terminar processos durante a operação quando preciso;
Temos 4 eventos que criam processos: no inicio do sistema, um processo em execução procedendo a uma chamada de sistema de criação de um processo, requisição do usuário e batch job sendo iniciada;
Temos processos de 1º e 2º plano(daemons) estes de 2º não interagem diretamente com o user;
Processos ativos podem fazer system calls para criar novos processos;
Users podem iniciar um processo começando um programa em ambiente GUI ou no Shell;
Em caso de sistemas em lote, encontrados em mainframes, o user, admin ou até um alinhamento prévio pode submeter uma tarefa em lote para o sistemas, o S.O. criara um novo processo e o executara quando tiver recurso disponível e/ou redefinindo prioridades e eecutando o processo no momento determinado;
No Unix temos a chamada fork para criar um processo, ela cria uma replica do processo pai, e depois o filho executa “execve”, ou uma chamada similar pra mudar sua imagem de memoria e executar um novo programa;
No Windows uma chamada denominada CreateProcess de função do Win32 trata o processo de criação e carga do programa correto no novo processo;
Em ambos sistemas o processo pai e filho possuem seus próprios espaços de endereçamento da memoria, permitndo assim que não impacte um ao outro ao alterar palavra no endereçamento;
5.1.3 Término de processos
Quatro condições: normal,por erro, erro fatal e cancelado por terceiros;
No normal que é elo exit no Unix ou ExitProcess no Windows, termina após finalizar as tarefas previstas;
Processos que interagem com outros não concluem quando algum parâmetro errado é fornecido, tipo tentar dar o mesmo nome para dois arquivos, da então saída por erro;
Erro fatal é por erro de programa, por execução de instrução ilegal, referencia a memoria enxistennte ou divisão por 0;
Cancelamento por terceiros, é quando um processo executa uma chamada de sistema para cancelar outro processo, no Linux/unix é o kill e on Windows é TerminateProcess;
5.2 Comunicação entre processos
3 topicos: Como passam informação para ooutro, como garantir múltiplos processos não entrem em conflito e como haverá sequencia adequada quando existirem dependências;
5.2.1 – condição de corrida
Processos podem compartilhar aalgum armazenamento comum e serem capazes de ler e excrever, pode estar na memoria principal ou em arquivo compartilhado;
Como dois processos X e Y que decidem colocar um arquivo ArquivoX e ArquivoY, depois le a variável In do spool e armazena o 1 em sua var vaga_impressão_disponivel, então a CPU troca pra o achando que X já ocupou o tempo necessário, então Y ve o In vago e faz o mesmo que X em sua var, os dois contem a posição 1 indicando a vaga 1 na fila;
O Y continua armazenando seu aruivo na vaga 1 e atualiza a var In para conter valor 2, e então vai fazer suas tarefas subsequentes, e o X volta a executar daonde tinha parado, o encontrar o valor 1 da var vaga_impressão_disponivel, ele escreve seu arquivo la, ao executar a gravação do arquivo ele ocupa a posição 1 e apaga o Y, como ele atualiza a var In com o valor 2, não há nenhuma suspeita nada, mas o processo Y nunca terá saída;
Ou seja quando dois processos estão lendo ou escrevendo um dado compartilhado, o resultado depende de quem executa e quando executa;
5.2.2 Exclusão mútua e região crítica
Mutual Exclusion é o modo de assegurar que processos sejam impedidos de usar uma var ou um arq. Compartilhado que já esta em uso por outro processo, teríamos evitado a condição de corrida se aplicássemos a xclusão mutuaou por abstração evitado qu usassem a região critica simultaneamente;
Critical region/section é a parte dos programas em que há acesso à memoria ou arquivo compartilhado, mesmo que impeça a condição de disputa, isso não é suficiente para que processos paralelos colaborem corretamente e eficientemente usando dados compartilhados;
4 condiççoes para chegar a uma boa conclusão
2 ou mais procs. Nunca podem estar ao mesmo tempo em suas regiões criticas
Nada pode ser afirmado no que tange à velocidade ou ao número de cores
Nenhum procs. Executado fora da região critica pode bloquear outros
Nenhum processo deve esperar infinitamente para estar em sua região critica
5.2.3 Exclusão mutua com espera ociosa
Em sistemas mais antigos que possuíam somente uma CPU com um core, para evitar mais de um procs. Na região critica era aplicada a desativação de interrupções e reabilitalas quando o 1º procs. Saísse da região, quando desativa a CPU não consegue chavear outro processo;
Temos a opção por software, baseada em uma var. compartilhada chamada lock(trava) em que teríamos valores 0 ou 1, 1 se temos procs. Prévio em região critica, se 0 tem permissão para entrar em sua região critica, ou seja os procs. Checam antes se a var esta em 1; mas tem o mesmo rpoblemo da fila de impressão;
Oura opção é o chaveamento obrigatório pela variável turn, um novo procs. Precisa esperar até a turn seja chaveada de valor, mas precisa ficar testando até a liberação, em busy waiting(espera ociosa);
A trava da busy waiting é chamada de spin lock(tava giratória)

Outros materiais