Buscar

Processos em Sistemas Operacionais

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 5 páginas

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

Prévia do material em texto

Faculdade Estácio do Pará 
Sistemas operacionais-CCT0728
Processos de Sistemas operacionais 
1-Definição e Conceito de processos em Sistemas Operacionais
Um sistema operacional não executa somente os programas que podemos ver. Imagine que os aplicativos que você roda reúnem diversas instruções e comandos, porém, são os processos que efetivamente executam esses comandos. Isso significa que um único aplicativo pode ter vários processos relacionados a ele. Por exemplo, o navegador Google Chrome, que executa uma nova tarefa a cada aba aberta. Essa medida permite que cada aba seja gerenciada individualmente e, mesmo que uma trave, as outras continuam trabalhando normalmente.
Simplificando, os processos representam tarefas em execução, mas nem todas têm relação direta com algum aplicativo. Muitas delas são executadas em pano de fundo e mantêm o sistema trabalhando - gerenciando redes, memória, disco, checagem antivírus etc. Logo, podemos definir processos como softwares que executam alguma ação e que podem ser controlados de alguma maneira, seja pelo usuário, pelo aplicativo correspondente ou pelo sistema operacional.
No geral, um processo é um programa em execução. Assim há uma diferenciação entre programas e processos. O programa é algo estático enquanto os processos são dinâmicos. Os programas são formados por sequências de comandos e instruções e não tem a possibilidade de alterar o seu estado. Os processos por sua vez, são quem executam os comandos dos programas, e à medida que os comandos são executados o processo pode sofrer alterações.
Outra forma de entender um processo é como um programa em execução. Para que a execução simultânea de diversos programas ocorra sem problemas é necessário que todas as informações do processo interrompido sejam salvas para que quando este voltar a ser executado não lhe falte nenhuma informação e possa continuar a execução exatamente no ponto onde estava quando foi interrompido.
2-Divisão de Processos 
Dentre os processos, podemos destacar dois principais tipos que estão relacionados a seu local de execução, no caso CPU e Entrada e Saída de dados.
Processos CPU-Bound e I/O Bound
Os processos podem ser classificados de acordo com o uso do processador ou dos dispositivos de E/S.
Um processo é definido como CPU-Bound quando passa a maior parte do tempo no estado de execução, utilizando o processador, ou pronto. Este tipo de processo faz muito pouco uso de leitura e escrita em dispositivos de E/S.
Um processo é definido como I/O Bound quando passa a maior parte do tempo no estado de espera, pois realiza muitas operações de leitura e escrita. A maioria das aplicações comerciais constitui este tipo de processo que faz consultas e atualizações em um banco de dados, por exemplo, durante o uso pelos usuários.
 
Processos foreground e background
Os processos também podem ser classificados pela forma de comunicação com o usuário ou com outros processos. A comunicação dos processos é feita por canais de entrada e saída que podem estar associados a terminais, impressoras, arquivos ou a outros processos.
Um processo é dito Foreground quando permite a comunicação direta do usuário com o processo durante o seu processamento. Os canais de entrada e saída são geralmente o teclado e o terminal, respectivamente. Desta forma, existe interação entre o usuário e o processo durante a execução do processo.
Um processo é dito Background quando não permite a comunicação direta do usuário com o processo durante a sua execução. O processamento batch é geralmente associado a processos background.
3-Estados de um processo
 Os processos executados pelo processador normalmente possuem necessidades distintas de duração, importância e comportamento. O sistema operacional tem a responsabilidade de gerenciar e estabelecer uma ordem de execução destes processos. Como visto anteriormente, no sistema multiprogramável há um padrão de compartilhamento do processador entre os diversos processos em execução. Assim há uma troca constante de processos em execução no processador o que faz com que o processo passe por estados distintos durante o seu ciclo de vida. Conforme avança a execução de um processo, o seu estado pode ser alterado tanto por eventos gerados pelo próprio processo como pelo sistema operacional. Os estados possíveis para um processo são: 
• Pronto: este estado indica que o processo aguarda para ser executado. Como normalmente há vários processos em estado de Pronto, primeiramente o sistema operacional efetua um enfileiramento destes processos. Em seguida utiliza um mecanismo denominado escalonamento com o objetivo de determinar a ordem e os critérios de uso do processador pelos processos. 
• Em Execução: este estado indica que o processo está sendo executado pelo processador. A troca de um processo por outro na utilização do processador deve respeitar os critérios de escalonamento. 
• Em Espera: este estado indica que o processo está aguardando por um evento externo ou ser atendida alguma chamada ao sistema operacional. Os processos neste estado são organizados em fila e assim que o evento esperado ou o retorno da chamada ao sistema operacional acontece, o processo é transferido para o estado de pronto.
4-Subprocessos e Threads: Conceitos básicos e herança
Um subprocesso designa um processo criado dentro de uma estrutura hierárquica; onde a dependência com o processo mais alto faz com que o subprocesso deixe de existir caso o processo mais alto do qual ele depende seja eliminado.
Thread é um pequeno programa que trabalha como um subsistema, sendo uma forma de um processo se autodividir em duas ou mais tarefas. É o termo em inglês para Linha ou Encadeamento de Execução. Essas tarefas múltiplas podem ser executadas simultaneamente para rodar mais rápido do que um programa em um único bloco ou praticamente juntas, mas que são tão rápidas que parecem estar trabalhando em conjunto ao mesmo tempo.
Os diversos threads que existem em um programa podem trocar dados e informações entre si e compartilhar os mesmos recursos do sistema, incluindo o mesmo espaço de memória. Assim, um usuário pode utilizar uma funcionalidade do sistema enquanto outras linhas de execução estão trabalhando e realizando outros cálculos e operações. É como se um usuário virtual estivesse trabalhando de forma oculta no mesmo computador que você ao mesmo tempo.
Devido à maneira rápida que a mudança de uma thread e outra acontece, aparentemente é como se elas estivessem sendo executadas paralelamente de maneira simultânea em hardwares equipados com apenas uma CPU. Esses sistemas são chamados de monothread. Já para os hardwares que possuem mais de uma CPU, os threads são realmente feitas concorrencialmente e recebem o nome de multithread.
5-Comunicação de processos: conceitos e problemas tais como starvation e deadlock
Muitos problemas solucionados por um programa não são executados sequencialmente, são divididos em várias tarefas interdependentes que relacionam entre si a fim de atingir um objetivo comum. Os códigos dos programas são estruturados de tal forma que permitem serem executados concorrentemente através de múltiplos processos ou threads. Programas com estas características são chamados de aplicações concorrentes. Aplicações concorrentes proporcionam um melhor desempenho mesmo não havendo um paralelismo real na execução dos processos ou threads. Onde há o paralelismo real, em casos de sistemas com múltiplos processadores, as aplicações concorrentes melhora ainda mais estas vantagens. Programas desenvolvidos para serem executados de modo sequencial, que executam apenas um único fluxo por vez, não se beneficiam das vantagens oferecidas por um sistema com múltiplos processadores. Programas como editores de texto, navegadores web e jogos, caso fossem um programa sequencial, não teríamos a alta interatividade que temos nestas aplicações. Os editoresde texto, por exemplo, permitem a digitação enquanto efetuam a revisão ortográfica. Os 50 • capítulo 2 navegadores web interagem com usuário através das páginas de Internet ao mesmo tempo em que tarefas de comunicação com a rede estão sendo executadas. Os bancos de dados, essencial nas aplicações atuais, principalmente aplicações empresariais como Sistema integrado de gestão empresarial (SIGE ou ERP – Enterprise Resource Planning) são outro exemplo de aplicações concorrentes. Um sistema ERP integra todos os dados e processos de uma organização em um único sistema e estes dados são armazenados em um banco de dados. Caso o banco de dados utilizado por um ERP fosse sequencial, atenderia um único usuário por vez. Logo se um usuário estivesse dando entrada de mercadoria no estoque, todo o restante da empresa estaria parado, aguardando o término desta tarefa, tornando este tipo de sistema inviável para uma empresa.
 
Para que os processos concorrentes possam cooperar entre si, é necessário que haja uma comunicação entre eles para troca e compartilhamento de informações, além de um sincronismo, efetuado pelos sistemas operacionais para que as atividades sejam executadas sem erros. Diversos mecanismos podem ser utilizados para efetuar a comunicação entre os processos, como variáveis compartilhadas na memória principal, quanto à memória é compartilhada entre os processos. Quando a memória não é compartilhada, os processos podem trocar mensagens para compartilhar as informações entre si.
A starvation ou inanição ocorre quando um processo nunca é executado ("morre de fome"), pois processos de prioridade maior sempre o impedem de ser executado. Em um ambiente computacional multitarefa, a execução de diversos processos simultâneos deve seguir uma regra de escalonamento destes para uso do processador. Isso se deve ao fato de que, durante a mudança de contexto pelo processador, é feita a escolha do próximo processo a ser executado a partir da prioridade deste. Quando o escalonamento não é feito adequadamente, pode haver inanição. Uma solução para esta situação é a delegação de um tempo máximo de espera.
Já o deadlock refere-se a uma situação em que ocorre um impasse, e dois ou mais processos ficam impedidos de continuar suas execuções - ou seja, ficam bloqueados, esperando uns pelos outros.[1] Trata-se de um problema bastante estudado em sistemas operacionais e banco de dados, pois é inerente à própria natureza desses sistemas.
O deadlock ocorre com um conjunto de processos e recursos não-preemptíveis, onde um ou mais processos desse conjunto está aguardando a liberação de um recurso por um outro processo, o qual, por sua vez, aguarda a liberação de outro recurso alocado ou dependente do primeiro processo.

Continue navegando