Prévia do material em texto
Conceituação e gerenciamento de processos Apresentação O processo é a abstração usada pelos sistemas operacionais para representar cada uma das tarefas, sendo executadas em um dado instante. Cada programa executado em um sistema operacional terá suas informações mantidas através de processos que são gerenciados pelo sistema. Um processo é composto por informações sobre valores dos registradores durante a sua execução; posições de memória relativas ao código; pilha de execução e dados do programa; seu relacionamento com outros processos; e o seu estado, que define se um processo está sendo executado, está disponível para ser executado ou se há algo que bloqueie a sua execução no momento. Uma das tarefas mais básicas de um sistema operacional é garantir que cada processo seja executado sem que haja interferência de outros. Em computadores modernos, com múltiplas CPUs e execução realmente paralela, o gerenciamento de processos é essencial para o correto funcionamento do sistema. Nesta Unidade de Aprendizagem, você aprenderá como um sistema operacional utiliza o conceito de processo para permitir a execução de múltiplos programas em um computador, desde a criação, o gerenciamento (passando pela máquina de estados de execução), até o término dos processos. Bons estudos. Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados: Explicar o modelo de um processo.• Reconhecer eventos de criação e de término de processos em um sistema operacional.• Reconhecer eventos de criação e de término de processos em um sistema operacional.• Desafio Gerenciadores de tarefa são aplicações que permitem que os usuários de um sistema operacional visualizem o andamento dos processos em execução. Sistemas operacionais com foco em usuários comuns, como Windows e Ubuntu Linux, possuem gerenciadores de tarefa gráficos, com interfaces de uso simples e com destaque para as principais informações necessárias para o entendimento do funcionamento do sistema, como uso de CPU, Memória, Disco e Rede de cada processo. A análise destes valores é importante para profissionais de TI ao realizar análises de performance de sistemas, redes ou aplicações. Também são disponibilizadas ferramentas de linha de comando com o mesmo objetivo, como o tasklist (Windows) e o top (Linux e outras variações de Unix), que geralmente são preferidas por profissionais mais experientes. Muitos problemas podem ser indicados pelo adequado acompanhamento dos valores disponíveis nestas aplicações. Considere a situação a seguir: Para compreender o que está acontecendo em ambos os computadores e identificar o problema que está ocorrendo na aplicação, responda as questões a seguir: a) Com base nas observações do gerenciador de tarefas e nos conhecimentos adquiridos sobre processos e seus estados, este problema pode ser causado por um excesso de chamadas de E/S realizadas pela aplicação? Justifique sua resposta. b) Por que em um dos computadores o consumo de CPU chega a 100% e inviabiliza o uso da interface gráfica do sistema operacional, e no outro computador a mesma aplicação aparenta usar menos processamento e o sistema continua usável, ainda que a aplicação em si esteja quase travada? c) Qual tipo de erro, a nível de código, pode estar causando este problema? Justifique sua resposta. Infográfico A máquina de estados de um processo define, a partir do estado atual do processo, quais mudanças de estado são possíveis. Sistemas operacionais como Windows e Linux usam máquinas mais complexas, mas de forma geral é possível resumir o número de estados em que um processo pode estar, que são três: 1. Em execução; 2. Pronto; e 3. Bloqueado (também chamado de Espera). Ao entrar em um destes estados, o processo só poderá ser alterado para outro respeitando o fluxo definido na máquina de estados. No Infográfico a seguir, você vai ver a máquina de estados de um processo, compreender o que está acontecendo com ele em cada um dos possíveis estados e entender que eventos podem disparar uma mudança de estado. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://statics-marketplace.plataforma.grupoa.education/sagah/cf5d242b-698d-449b-bc51-df1cf349c358/ec498a28-f361-4e4b-871a-3679eaf7572e.png Conteúdo do livro Em sistemas operacionais, quando se inicia um programa, automaticamente ele é atribuido a um processo. Os processos são gerenciados pelo sistema, de maneira que, durante toda a sua execução, são coletas informações importantes, como, por exemplo, os dados do programa que iniciou sua execução. Considerando os computadores modernos e sua evolução, temos a falsa sensação de que inúmeros processos são executados ao mesmo tempo. No entanto, as coisas não ocorrem bem dessa forma. No capítulo Conceituação e gerenciamento de processos, base teórica desta Unidade de Aprendizagem, você poderá compreender como de fato os processos se comportam, identificando que cada processo executado tem seu tempo de criação e finalização, bem como diferentes fases de execução. Boa leitura. SISTEMAS OPERACIONAIS OBJETIVOS DE APRENDIZAGEM > Explicar o modelo de um processo. > Reconhecer eventos de criação e de término de processos em um sistema operacional. > Apontar as mudanças de estado de um processo. Introdução O sistema operacional é responsável por gerenciar todos os programas em um computador. Sempre que se inicia um programa, um novo processo é criado. Sendo assim, entender esse conceito é fundamental para a compreensão do funciona- mento de sistemas e programas. Nos computadores modernos, os processos permitem operações simultâneas — ou dão a impressão de que isso está ocorrendo. Neste capítulo, você poderá entender como de fato os processos se compor- tam, incluindo os passos que ocorrem desde sua criação até sua finalização, bem como os estados em que os processos se encontram em cada etapa durante toda a sua execução. Conceituação e gerenciamento de processos Juliane Soares Modelo de processo Ao discutir sistemas operacionais, um dos conceitos mais essenciais é o de processo, que se refere a uma instância de programa de computador que o sistema operacional está executando no momento. Os processos são cruciais na manutenção dos recursos do sistema, permitindo a multitarefa e garantindo a estabilidade e a eficiência efetivas do sistema. Conforme Tanenbaum e Bos (2016), um processo pode ser pensado como um contêiner que armazena todas as informações necessárias para executar um programa. Todo software que pode ser executado em um computador — às vezes, até o sistema operacional — é dividido em vários processos sequenciais ou, simplesmente, processos. Como dissemos, um processo é essencialmente um programa que está sendo executado no momento, abrangendo os valores atuais de variáveis, contadores de programa e registradores. Cada processo funciona como se tivesse sua própria CPU virtual. Embora a CPU eventualmente mude de um processo para outro, é muito mais simples imaginar uma cole- ção de processos rodando concorrentemente, mesmo que seja apenas um pseudoparalelismo. Essa troca rápida entre processos é conhecida como “multiprogramação” (TANENBAUM; WOODHULL, 2008). A Figura 1 mostra um sistema computacional multiprogramado com quatro programas em memória. Figura 1. Multiprogramação com quatro programas. Fonte: Adaptada de Tanenbaum e Woodhull (2008). Um contador de programa Alternância de processos A B C D A Figura 2 exibe quatro processos, cada um com seu próprio fluxo de controle distinto, juntamente com seu contador de programa exclusivo, que opera de forma autônoma em relação aos outros processos. Note que há apenas um contador de programa físico presente; portanto, quando cada processo é executado, seu contador de programa lógico correspondente é Conceituação e gerenciamento de processos2 carregado no contador de programa físico. Após a conclusão, o contador de programafísico é armazenado no contador de programa lógico do processo na memória. Figura 2. Modelo conceitual. Fonte: Adaptada de Tanenbaum e Woodhull (2008). Quatro contadores de programa A B DC Na Figura 3, pode-se observar que, embora todos os processos tenham progredido por um longo período de tempo, apenas um processo está ativo em um determinado momento. Figura 3. Programa em execução. Fonte: Adaptada de Tanenbaum e Woodhull (2008). Pr oc es so D C B A Tempo Quando uma CPU alterna entre processos, segundo Tanenbaum e Woo- dhull (2008), é improvável que a velocidade na qual cada processo conclui sua computação seja consistente ou replicável se os mesmos processos forem executados novamente. Como resultado, os processos não devem ser programados com suposições de tempo pré-determinadas. Considere um processo de E/S (entrada/saída) que inicializa um streamer de fita para restaurar arquivos de backup. O processo espera em um loop por 10.000 ciclos para permitir que o streamer atinja a velocidade correta e, em seguida, lê o primeiro registro com um comando. Se a CPU decidir mudar para outro Conceituação e gerenciamento de processos 3 processo durante o loop de espera, o processo da fita poderá não ser execu- tado novamente até que o primeiro registro tenha passado pelo cabeçote de leitura. Quando um processo tem certos requisitos de tempo real que exigem que eventos específicos ocorram em um determinado momento, medidas especiais devem ser tomadas para garantir que isso seja atendido. Em geral, entretanto, a maioria dos processos não é afetada pela multiprogramação da CPU ou pelas velocidades variáveis de diferentes processos. A diferença entre um processo e um programa é sutil, mas decisiva. Como analogia, considere que um padeiro habilidoso está fazendo um bolo de aniversário para sua filha. O padeiro tem todos os ingredientes necessários, como farinha, ovos, açúcar e extrato de baunilha, além de uma cozinha bem-equipada. Nessa analogia, a receita representa o programa, que é essencialmente um algoritmo escrito em uma notação específica. O padeiro é o processador (CPU), e os ingredientes que compõem o bolo são os dados de entrada. O processo em si refere-se à atividade do padeiro lendo a receita, selecionando os ingredientes e realizando as etapas necessárias para assar o bolo (TANENBAUM; WOODHULL, 2008). Maziero (2019) explica que, dentro de um sistema operacional, todo pro- cesso é denotado por um bloco de controle de processo (PCB, do inglês process control block), também chamado de “tabela de processos”. Um PCB é mostrado na Figura 4. Figura 4. Bloco de controle de processo (PCB). Fonte: Adaptada de Silberschatz, Galvin e Gagne (2015). Estado do processo Número do processo Contador do programa Registradores Limites da memória Lista de arquivos abertos Conceituação e gerenciamento de processos4 A Figura 4 mostra que o PCB contém uma quantidade considerável de informações relacionadas a um processo específico, incluindo as apresentadas a seguir (SILBERSCHATZ; GALVIN; GAGNE, 2015). � Estado do processo: a condição da operação pode ser categorizada em vários estados, como novo, pronto, em execução, aguardando, parado, entre diversos outros. � Contador do programa: o contador do programa é um componente crucial na execução de qualquer processo. Ele serve para indicar o endereço da próxima instrução que será executada. � Registradores da CPU: o número e o tipo de registradores da CPU dife- rem com base na arquitetura do computador. Existem acumuladores, registradores de uso geral, registradores de índice e ponteiros de pilha, bem como informações de código de condição. Quando ocorre uma interrupção, essas informações de estado, juntamente com o contador do programa, devem ser preservadas para garantir a retomada adequada do processo posteriormente. � Informações de scheduling (escalonamento) da CPU: isso envolve a prioridade de um processo, bem como quaisquer parâmetros de es- calonamento e ponteiros para as filas de escalonamento relevantes. � Informações de gerenciamento da memória: as informações referentes ao gerenciamento de memória podem conter detalhes como o valor dos registradores limite e base, bem como tabelas de páginas ou tabelas de segmentos, dependendo do sistema de memória utilizado pelo sistema operacional. � Informações de contabilização: as informações referentes à contabili- zação consistem em vários elementos, como o uso de tempo real e CPU, as limitações de tempo, os números de identificação de trabalhos ou processos, os números de contas e outros itens semelhantes. � Informações de status de I/O (input/output), ou E/S (entrada/saída): as informações de status de E/S são uma coleção de vários detalhes, como a lista de dispositivos de E/S que foram alocados para um de- terminado processo. Elas abrangem também um registro de arquivos abertos, bem como outros dados relevantes. A estrutura operacional de um processo de sistema operacional contém uma infinidade de mecanismos e componentes que são responsáveis por direcionar, regular e facilitar a execução e interação de processos dentro do ambiente do sistema operacional. Essa abordagem permite a alocação Conceituação e gerenciamento de processos 5 eficiente de recursos, a multitarefa e a coordenação perfeita entre aplicativos, resultando em uma experiência estável e consistente. Um conceito fundamental a ser entendido é que um processo é um tipo específico de atividade. É composto de quatro componentes essenciais: um programa, entrada, saída e um estado. Um único processador pode ser alo- cado para vários processos, com um algoritmo de agendamento apropriado usado para determinar quando se deve pausar um processo e iniciar outro (BARBOSA, 2018). Além disso, o sistema operacional mantém uma tabela de processos, que guarda uma entrada para cada um deles, conforme apresenta o Quadro 1. Quadro 1. Tabela de gerenciamento de processos Registros Prioridade Sinais Contador de programa Parâmetros de escalonamento Momento em que um processo foi iniciado Palavra de estado do programa ID do processo Tempo de CPU usado Ponteiro da pilha Processo pai Tempo de CPU do processo filho Estado do processo Grupo de processo Tempo do alarme seguinte Fonte: Adaptado de Tanenbaum e Bos (2016). As informações armazenadas na tabela de processos permitem a coexis- tência de vários processos em um único computador, mesmo que não estejam todos ativos simultaneamente. As entradas em questão são uma fonte significativa de informações sobre o estado do processo, como seu contador de programa, ponteiro de pilha, alocação de memória, estado de arquivos abertos, bem como detalhes de contabilidade e agendamento e qualquer outra informação relevante que deva ser salva ao se fazer a transição do estado em execução para um es- tado pronto ou bloqueado, permitindo reinicializações contínuas, como se o processo nunca tivesse parado (TANENBAUM; BOS, 2016). O processo de uma interrupção começa com a preservação dos regis- tradores, normalmente dentro da entrada do processo existente na tabela de processos. Posteriormente, os dados que foram colocados na pilha pela Conceituação e gerenciamento de processos6 interrupção são removidos, e o ponteiro da pilha é direcionado para uma pilha provisória para uso do manipulador de processos. Tarefas como a conservação dos registradores e o ajuste do ponteiro da pilha são realizadas durante esse processo (TANENBAUM; BOS, 2016). Pequenas rotinas de linguagem são normalmente utilizadas para executar tarefas que não podem ser executadas por meio de linguagens de alto nível, como C. Essas rotinas são geralmente uniformes em todas as interrupções, pois têm a mesma função de preservar registros, independentemente do motivo da interrupção. Embora um processo possa ser interrompido várias vezes durante sua execução, o conceito subjacente é que o processo sem- pre retornará exatamente ao mesmo estadoem que estava antes de ser interrompido (TANENBAUM; BOS, 2016). A seguir, vamos abordar os eventos envolvidos em um processo. Eventos em processos Durante o ciclo de vida de um processo em um sistema operacional, dois eventos significativos são a criação e o término do processo. Nesta seção, vamos explorar mais detalhadamente cada um desses eventos, de acordo com Barbosa (2018) e Tanenbaum e Bos (2016). Criação do processo A criação de processos é um requisito fundamental para sistemas operacionais. A expressão “criação de processo” denota a formação de um novo processo pelo sistema operacional, uma tarefa que abrange as etapas apresentadas a seguir. 1. Inicialização do sistema: no momento em que um sistema operacional é iniciado, também são iniciados alguns processos. Isso inclui processos de primeiro plano, que interagem com os usuários e seus aplicativos, e processos de segundo plano, que têm uma função especializada, como um processo de atualização de e-mail quando uma nova mensagem é recebida. Os processos que funcionam em segundo plano para gerenciar determinadas atividades, como páginas da web, notícias, impressão ou e-mail, são chamados de “daemons”. Conceituação e gerenciamento de processos 7 É possível verificar os processos em execução no sistema operacional, a fim de identificar quais estão em primeiro e em segundo plano. No Unix, isso pode ser feito com o programa ps e, no Windows, o gerenciador de tarefas pode ser usado. 2. Realização de uma chamada de sistema por um processo em execu- ção para criação de processo: normalmente, um processo que está em execução vai executar uma chamada de sistema para criar outro processo ou vários novos processos para auxiliar em sua carga de trabalho. A criação de novos processos é especialmente valiosa quando a tarefa em questão pode ser dividida em vários processos distintos relacionados entre si, mas que podem operar de forma independente. Além disso, em um sistema multiprocessador, atribuir cada processo a uma CPU separada pode acelerar a conclusão da tarefa. Por exemplo, um processo de download aciona outro processo para ajudá-lo em sua tarefa. À medida que um processo faz o download dos dados, o outro os armazena no disco. 3. Um pedido de um usuário para criar um novo processo: em sistemas interativos, sempre que um usuário digitar um comando ou solicitar a abertura de um aplicativo, um novo processo será iniciado e executará o programa selecionado dentro do referido processo. Em sistemas Unix baseados em comandos que executam Window (interface gráfica do Unix), a janela iniciada é ocupada pelo novo processo. Por sua vez, no Windows, um processo inicialmente não tem uma janela, mas tem a capacidade de criar uma ou até várias janelas. Em ambos os sistemas, normalmente há várias janelas abertas a qualquer momento, e cada janela está executando algum tipo de processo. Com o mouse, os usuários podem selecionar uma janela de sua escolha e interagir com o processo correspondente, como fornecer as entradas necessárias. 4. Início de uma tarefa em lote: esses processos são executados em grandes computadores, conhecidos como mainframes. Por exemplo, considere o gerenciamento de estoque no final do dia em uma rede de lojas. Nesse caso, os usuários podem enviar tarefas em lote re- motamente ao sistema. Assim que o sistema operacional considerar que dispõe de recursos suficientes para executar outra tarefa, ele Conceituação e gerenciamento de processos8 criará um novo processo, e a próxima tarefa na fila de entrada será executada dentro deste. Em cada um desses casos, um novo processo é estabelecido por um pre- existente, sendo utilizada uma chamada de sistema de criação de processo. O processo recém-criado pode ser um processo do usuário que está em execução no momento, um processo do sistema iniciado pela entrada do usuário (p. ex., por um teclado ou mouse) ou um processo de manipulação em lote. O objetivo do processo de criação é executar uma chamada de sistema que vai gerar o novo processo. Essa chamada de sistema instrui o sistema operacional a criar um novo processo e denota, direta ou indiretamente, o programa que deve ser executado dentro dele. Término do processo Uma vez que todas as etapas necessárias para a criação de um processo tenham sido executadas, o processo recém-criado entra em um estado pronto e começa a executar suas tarefas designadas. Depois que essas tarefas forem concluídas, o processo pode ser encerrado. O encerramento do processo, também conhecido como “saída do processo”, ocorre quando um processo termina a execução ou é finalizado deliberadamente pelo sistema operacional ou por outro processo nas condições apresentadas a seguir. � Saída normal (voluntária): acontece quando um processo realiza todas as suas tarefas. Por exemplo, quando um compilador conclui a tradução de um programa, ele executa uma chamada para notificar o sistema operacional de que terminou, que é conhecida como “exit” no Unix e “Exit-Process” no Windows. Os programas que dependem de uma tela também oferecem suporte à rescisão voluntária. Programas como visualizadores da web, processadores de texto e outros softwares semelhantes contêm um ícone ou item de menu que o usuário pode ativar para sinalizar o processo de remoção de arquivos temporários que foram abertos e, então, encerrá-los. � Erro fatal (involuntário): é um erro causado pelo processo, muitas vezes decorrente de um erro de programa, como, por exemplo, a execução ilegal de uma instrução ou a divisão de um número por zero. Nesse caso, existe um processo de maior prioridade que supervisiona os outros processos e interrompe processos ilegais. Conceituação e gerenciamento de processos 9 � Saída por erro (voluntária): os processos interativos que dependem da entrada do usuário com base na tela não terminam ao receber parâmetros inválidos. Em vez disso, eles apresentam uma caixa de diálogo para solicitar que o usuário insira parâmetros válidos e tente novamente. Em certos sistemas operacionais, como o Unix, um processo pode solicitar a responsabilidade por determinados erros, resultando na interrupção do processo, em vez de ser encerrado quando ocorre um erro. � Cancelamento por outro processo: ocorre quando um processo com permissão emite uma chamada ao sistema para executar o cancela- mento de outro processo. A chamada de sistema kill é usada para esse propósito no Unix, ao passo que TerminateProcess executa a mesma função no Win32. No entanto, é importante observar que o processo que está iniciando o can- celamento precisa ter a autorização necessária para matar outro processo, independentemente do sistema operacional em uso. A manutenção da estabilidade e da eficiência do sistema se dá pela ade- quada liberação de recursos por meio da finalização do processo. Esses eventos de criação e finalização de processo são parte integrante da operação de um sistema operacional. Eles permitem coordenar a criação, a execução e a finalização de vários processos. Na próxima seção, serão apresentados os estados de um processo. Mudanças de estado de um processo Embora cada processo funcione como sua própria entidade autônoma com seu contador de programa exclusivo, registradores, pilha, arquivos abertos, alarmes e outros estados internos, é comum que os processos exijam intera- ção, comunicação e sincronização com outros processos. Isso pode ser visto em situações em que um processo produz uma saída que outro processo requer como entrada. Nesses casos, os dados devem ser transferidos entre os processos (TANENBAUM; WOODHULL, 2008). À medida que um processo avança em sua vida útil em um sistema ope- racional, ele pode passar por vários estados, que geralmente incluem os apresentados a seguir (MACHADO; MAIA, 2007; TANENBAUM; BOS, 2016). Conceituação e gerenciamento de processos10 � Em execução: quando um processo está passando pelo processamento da CPU, diz-se que ele está em execução. ACPU alterna entre os pro- cessos para otimizar o uso do processador. � Pronto: um processo está no estado pronto quando preencheu todas as condições necessárias para execução e agora aguarda iniciação. A sequência na qual os processos são executados é regida pelo sistema operacional, que dita os critérios para sua execução. � Em espera, ou bloqueado: quando um processo está em estado de espera ou bloqueado, ele não pode ser executado, mesmo que a CPU esteja livre e desocupada. Em vez disso, ele precisa aguardar um evento externo, como um comando do usuário ou um recurso, como informa- ções do dispositivo de entrada/saída, antes de poder ser executado. A Figura 5 mostra a transição entre esses três estados. Figura 5. Transição entre estados do processo. Fonte: Adaptada de Tanenbaum e Bos (2016). 23 4 1 Em execução Bloqueado Pronto A seguir, descrevemos a forma como ocorrem esses quatro passos, de acordo com Tanenbaum e Bos (2016). 1. O processo é bloqueado enquanto aguarda uma entrada: quando um sistema operacional detecta que um processo não pode continuar, este é considerado “bloqueado”. Dependendo do sistema, o processo pode entrar em um estado bloqueado executando uma chamada de sistema como pause, ou isso pode acontecer automaticamente quando se tenta ler de um canal ou arquivo especial (como um terminal) sem entrada disponível. 2. O escalonador seleciona outro processo para executar: ocorre quando o escalonador decide que o processo em andamento foi executado por tempo suficiente, e é o momento de deixar outro processo ter algum tempo de CPU. Conceituação e gerenciamento de processos 11 3. O escalonador seleciona o processo em execução: quando um pro- cesso estiver em execução por um determinado período de tempo, o escalonador escolherá executar um processo diferente. Essa decisão é tomada pelo escalonador para garantir que outros processos te- nham a oportunidade de utilizar a CPU. Depois que todos os outros processos tiverem sua vez, o escalonador escolhe o próximo processo a ser executado. Isso acontece quando é a vez de o primeiro processo utilizar a CPU mais uma vez. 4. A entrada torna-se disponível: quando um processo recebe a entrada que estava esperando, ele passa de um estado de espera para o es- tado de entrada disponível. Se não houver nenhum outro processo em execução no momento, o processo fará a transição para o estado em execução. No entanto, se outro processo já estiver em execução, o processo terá que esperar no estado pronto até que a CPU esteja disponível. Dependendo da implementação e das necessidades de um sistema ope- racional específico, pode haver versões ou estados adicionais, além dos mencionados. Por exemplo, certos sistemas podem apresentar um estado “suspenso”, em que um processo é temporariamente retirado da memória e colocado em um disco para liberar memória para outros processos. Eventos como decisões de agendamento da CPU, operações de E/S, sin- cronização de processos e interações do usuário geralmente regulam as transições entre os estados. Para aumentar o uso de recursos e a eficiência do sistema, o agendador de processos do sistema operacional determina a sequência na qual os processos mudam entre os estados. Neste capítulo, vimos que um processo se refere à execução de um pro- grama em um computador. Sendo assim, é fundamental compreender seu comportamento, como ele inicia e como termina, bem como os estados de sua vida útil no sistema. Os processos podem ser iniciados ou encerrados dinamicamente, e é importante entender que, quando um aplicativo está sendo compartilhado por vários usuários, cada usuário normalmente terá um processo em alguma fase de execução. Em síntese, os processos são essenciais para o funcionamento de um sistema operacional. Conceituação e gerenciamento de processos12 Referências BARBOSA, C. S. Sistemas operacionais. Londrina: Educacional, 2018. MACHADO, F. B.; MAIA, L. P. Arquitetura de sistemas operacionais. 4. ed. Rio de Janeiro: LTC, 2007. MAZIERO, C. A. Sistemas operacionais: conceitos e mecanismos. Curitiba: UFPR, 2019. SILBERSCHATZ, A.; GALVIN, P. B.; GAGNE, G. Fundamentos de sistemas operacionais. 9. ed. Rio de Janeiro: LTC, 2015. TANEMBAUM, A. S.; BOS, H. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson, 2016. TANENBAUM, A. S.; WOODHULL, A. S. Sistemas operacionais: projeto e implementação. 3. ed. Porto Alegre: Bookman, 2008. Conceituação e gerenciamento de processos 13 Dica do professor Processos precisam ser constantemente criados e terminados pelo Sistema Operacional, que acontecem em determinados eventos. Desenvolvedores e administradores de sistemas que precisam interagir com processos criam aplicações e garantem o bom funcionamento de computadores, aplicando os conhecimentos destes eventos em suas atividades do dia a dia. Nesta Dica do Professor, você vai estudar sobre a criação e o término de processos. Também verá que eventos podem causar o início de um processo e também o que leva um processo a ser encerrado. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://fast.player.liquidplatform.com/pApiv2/embed/cee29914fad5b594d8f5918df1e801fd/b5c87684690382d2c8551b95af60c045 Exercícios 1) Programas com interface de linha de comando (command line interface - CLI), apesar de não intuitivos para usuários normais de computadores, são populares entre programadores devido à sua praticidade e agilidade quando o utilizador conhece seus comandos e atalhos. Estes programas são muito dependentes de entrada do usuário, podendo solicitar que seu utilizador digite comandos para poder efetuar seu trabalho. Assinale a alternativa correta sobre o estado no qual o processo de um programa CLI se encontra enquanto aguarda que seu utilizador digite um comando: A) Executando. B) Pronto. C) Bloqueado ou Espera. D) Terminado. E) Em transição. 2) A diferença entre programa e processo é essencial para compreender como um sistema operacional executa suas atividades. Enquanto um programa é a implementação de um algoritmo para completar uma tarefa, um processo é a representação da execução deste algoritmo por um computador. Sabendo disso, assinale a alternativa que contém apenas elementos da tabela de processo: A) Contador de programa; ponteiros para base e topo da pilha; valores dos registradores; e estado do processo. B) Atributos de instância; métodos estáticos e de classe; constantes; e máquina de estados do processo. C) Linhas de código; arquivo-objeto; compilador; e ambiente de execução. D) Chamadas de sistema; escalonadores; memória; e modelo de processos. E) Hierarquia de processos; estados de processos; código fonte; e gerenciamento de memória. 3) O modelo de processo é uma característica bastante importante para sistemas operacionais modernos. A partir deste modelo, é definido como um sistema específico irá executar os programas que seus usuários desejarem. O modelo de processos de um computador multiprogramado permite que vários programas estejam em execução em um determinado momento, passando para o usuário a impressão de que o computador está fazendo todas as atividades simultaneamente. Considerando um computador com apenas um núcleo de processamento e três programas sendo executados, cada um com seu processo sendo gerenciado pelo sistema operacional, assinale a alternativa correta. A) Os três processos estão sendo executados pelo processador ao mesmo tempo, não havendo necessidade de manutenção de tabela de processos. B) Um dos processos está sendo executado e os outros dois estão prontos ou bloqueados. Apenas os processos bloqueados têm registros na tabela de processos. C) Os três processos estão sendo executados pelo processador ao mesmo tempo. Todos os três processos têm registros na tabela de processos D) Um dos processos está sendo executado e os outros dois estão prontos ou bloqueados. Todos os três processos têm registros na tabela de processos.E) Um dos processos está sendo executado e os outros dois estão prontos ou bloqueados. Apenas o processo em execução tem registro na tabela de processos. 4) Frequentemente, programadores têm a necessidade de iniciar novos programas a partir do software que estão criando. Isto pode servir para facilitar o desenvolvimento de uma determinada funcionalidade, efetuar ajustes de configuração ou aproveitar um software já existente que não fornece APIs para acesso às suas funcionalidades na linguagem usada pelo programador. Assinale a alternativa correta em relação a como um programador usando Java, C# ou Python deve efetuar a criação de um novo processo em um programa que será executado em um sistema operacional moderno. A) Solicitar que o usuário inicie manualmente o outro programa e bloqueie o processo, devendo ele informar que o programa foi terminado para desbloquear e continuar a execução. B) Incluir trechos de código assembly para mudar o contexto do processador para Kernel Mode e posteriormente solicitar a troca de contexto para um novo processo. C) Efetuar chamadas de sistema explícitas utilizando código nas linguagens citadas na questão, para que o sistema operacional viabilize a criação dos novos processos. D) Iniciar uma nova tarefa em lote e despachá-la para o sistema operacional para que o sistema possa executá-la quando houverem recursos computacionais livres. E) Utilizar métodos, funções ou classes de bibliotecas que abstraem as chamadas de sistema e efetuam a criação do processo de acordo com o sistema operacional em execução. 5) Aplicações desenvolvidas para uso em servidores Web devem ser projetadas tendo em mente que em vários momentos este servidor receberá um grande número de requisições paralelas. Software de servidores Web, como o Apache, possuem configurações para que cada nova requisição recebida dispare a criação de um novo processo independente para tratá-la. Um Administrador de Sistemas está analisando um problema em que um servidor Web com baixo uso de processador e bastante memória disponível não está sendo capaz de atender todas as requisições. Ao listar os processos que estão sendo executados, há centenas de processos do servidor Web, mas nenhum usando recursos da CPU. Assinale uma alternativa que contém uma explicação possível para o problema em questão. A) Os processos do servidor Web estão todos bloqueados, devido à escassez de banda de E/S com o disco rígido do servidor. B) A tabela de processos do sistema operacional está cheia, não permitindo a criação de novos processos. C) O modelo de processo do sistema operacional utilizado no servidor é inadequado para a execução de um servidor Web. D) Há um erro na aplicação que está causando um término por saída involuntária dos processos. E) O código da aplicação contém um erro em um dos laços (for ou while), causando um loop infinito. Na prática Ferramentas de Gerenciamento de Tarefas gráficas são bastante úteis, tanto para usuários comuns quanto para Desenvolvedores e Administradores de Sistemas. Sistemas como o Microsoft Windows e o Ubuntu Linux dedicam esforços contínuos para melhorar a visualização das informações de processos sendo executados, aumentando a quantidade de dados disponíveis para que o usuário entenda como está a saúde do sistema. Um bom profissional conhece as funcionalidades deste tipo de ferramenta e é capaz de interpretar as informações disponíveis. Neste Na Prática, confira algumas ações que podem ser tomadas a partir do Gerenciador de Tarefas do Windows 10 e do Monitor do Sistema do Ubuntu Linux 18.04LTS. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://statics-marketplace.plataforma.grupoa.education/sagah/4c338cb7-c2eb-4187-80b6-6b0e5837efbc/a4a2dc10-f739-4f6a-892e-8c63d77e54ba.png Saiba + Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do professor: Comandos Linux - Gerenciamento de Processos Acesse este conteúdo que faz parte de uma aula explicando particularidades da máquina de estado de processos em Linux, incluindo guia rápido de comandos úteis para gerenciamento de processos neste Sistema Operacional. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Como usar o Gerenciador de Tarefas no Windows 10 Tem dúvidas sobre como usar o Gerenciador de Tarefas do Windows 10? Acesse este site e confira algumas dicas. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. RedHat Linux - Ferramentas de Monitoramento de Linha de Comando Embutida Neste site, você verá uma sugestão de ferramentas para gerenciamento de sistemas e consequentemente dos seus processos no RedHat Linux. Clique para conhecer. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. http://roitier.pro.br/wp-content/uploads/2019/09/Aula10-Gerenciamento-de-Processos.pdf https://www.techtudo.com.br/dicas-e-tutoriais/noticia/2017/02/como-usar-o-gerenciador-de-tarefas-no-windows-10.html https://access.redhat.com/documentation/pt-br/red_hat_enterprise_linux/6/html/performance_tuning_guide/s-analyzeperf-cli-tools Sistemas Operacionais - Processo Neste site você terá acesso a um resumo com as principais informações sobre gerenciamento de processos. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. Utilizando o Process Explorer O Process Explorer é um utilitário de gerenciamento de tarefas mais completo que o Gerenciador de Tarefas do Windows. Este link explica como instalar e usar a ferramenta. Clique para saber mais. Aponte a câmera para o código e acesse o link do conteúdo ou clique no código para acessar. https://www.gsigma.ufsc.br/~popov/aulas/so1/cap6so.html https://social.technet.microsoft.com/wiki/contents/articles/2541.utilizando-o-process-explorer-pt-br.aspx