Atps Programação Concorrente
Por: kidobe • 22/9/2015 • Trabalho acadêmico • 1.239 Palavras (5 Páginas) • 307 Visualizações
Gerenciamento de processos
Como esquema de gerenciamento de processos, precisamos de algo que seja rápido e eficaz para executar softwares de monitoramento em tempo real e emitir alertas ao prefeito da cidade. Escolhemos utilizar a multiprogramação, que em sistemas operacionais, essa técnica maximiza o uso da CPU fazendo a memória ser dividida em várias partes que contém uma tarefa(job) em cada. Enquanto um job realiza uma operação de entrada e saída, a CPU passa a executar outro job que esteja em outra parte da memória, evitando a ociosidade da CPU. Devido ao fato de termos um hardware “poderoso”, esse tipo de gerenciamento de processos também se fara útil no fato de utilizar o hardware de forma mais inteligente. Em nosso sistema, isso é de extrema importância, pois quanto mais rápido for o processamento das informações, mais rápido será a execução dos softwares.
Os softwares de monitoramento das ruas são necessários trabalhar em “real time” para monitorar o transito e manter a segurança, os alertas são necessários serem enviados com extrema rapidez para o prefeito, e a todo momento temos que ter monitoramentos de temperatura e estatísticas atualizadas, neste tipo de gerenciamento, acreditamos que isso tudo será possível.
A comunicação entre os processos
Processos interagem e cooperam na execução de tarefas e na troca de informações de forma controlada para dividir tarefas e aumentar a velocidade de processamento. Tudo que aumenta a velocidade do nosso sistema em questão ao processamento é bem-vindo.
Utilizaremos IPC (Inter-Process Communication) como forma de comunicação entre os processos.
Ao fornecer mecanismos de IPC, o S.O implementa “canais” de comunicação (implícitos ou explícitos) entre processos. Esse tipo de comunicação além de rápida é fácil de ser implementada e versátil.
Precisamos que os processos se comuniquem entre eles da forma mais rápida possível, para gerar alertas e garantir estatísticas atualizadas de nossos softwares de monitoramento.
Esquema de gerenciamento de memória
A memória consiste em um grande vetor de palavras ou bytes, cada um com seu endereço. Para ser executado, o processo precisa estar na memória, onde o gerenciamento da mesma, consiste na tarefa de subdividir e alocar a memória para acomodar os processos em execução.
Decidimos usar o swapping pois trata-se de uma técnica aplicada à gerência de memória, onde o sistema escolhe um programa residente que é levado da memória para o disco (Remoção), quando o programa tiver que ser executado novamente, ele é novamente carregado para a memória principal (Inserção).
O conceito de swapping permite um maior compartilhamento da memória principal e uma maior utilização dos recursos do sistema computacional, seu maior problema é o elevado custo das operações de inserção/remoção. Em momentos em que há pouca memória disponível, o sistema pode ficar dedicado a realização de swapping, deixando de executar outras tarefas e impedindo a execução dos demais processos. Esta situação é chamada de thrashing.
Mesmo com esse tipo de problema, trabalharemos com swapping em nosso sistema.
Pensamos que devido ao grande “poder” de nosso hardware, no caso os 200gb de memória principal, não iremos ter problema de thrashing.
A estrutura do kernel adotada (Microkernel ou Monolítico)
Antes de escolhermos qual iremos utilizar, vamos ver uma breve explicação de cada.
Microkernel é uma designação de um Sistema Operacional que possui apenas um núcleo que provê recursos mínimos necessários ao ambiente, outras funcionalidades são oferecidas através de programas chamados servidores. O Microkernel basicamente provê serviços como gerenciamento do espaço de memória, gerência de threads e comunicação entre os processos. Serviços como rede, vídeo e acesso a outros periféricos, não são considerados essenciais.
O Kernel Monolítico é justamente o oposto do Microkernel, sua principal característica é permitir que funções como rede, vídeo e acesso a outros periféricos sejam possíveis através do kernel-space. Isso é possível através do uso de módulos, o que significa que um módulo, apesar de não estar no mesmo código do kernel, é executado no espaço de memória do kernel. Sendo assim, apesar de modular, o kernel monolítico continua sendo único e centralizado. Isso pode levar a considerações errôneas sobre o conceito. Segue abaixo uma representação do kernel monolítico.
Decidimos trabalhar com a estrutura de microkerne, pois os recursos do sistema são acessados através de um protocolo cliente/servidor, e para incluir um novo serviço basta acrescentar um novo servidor. O microkernel possui um desempenho inferior ao modelo monolítico, mas podem-se alterar suas partes sem a necessidade de reiniciar a máquina permitindo a expansão para um sistema distribuído de forma mais fácil, o que será de
...