Você está na página 1de 2

Jhénifer Matos de Mendonça Pereira RGA: 2021.1906.

038-7
Lista 2

1- Um programa é um conjunto de instruções e dados armazenados em um arquivo executável,


enquanto um processo é uma instância em execução desse programa em um sistema operacional.

A Figura 1 representa um processo em memória. Cada instância em execução de um programa é


representada por um processo, que é composto por várias seções na memória.

Text: é a seção que contém o código executável do programa. Essa seção é somente leitura e contém
as instruções que serão executadas pelo processador.
Data: é a seção que contém as variáveis globais e estáticas do programa. Essas variáveis têm um
escopo global em todo o programa e são inicializadas antes do início da execução.
Heap: é a seção que contém a memória dinamicamente alocada durante a execução do programa. Essa
seção cresce conforme novos blocos de memória são alocados e diminui quando a memória é liberada.
Stack: é a seção que contém a pilha de execução do programa, que é usada para armazenar variáveis
locais e endereços de retorno de chamadas de função. Essa seção cresce e diminui conforme as
funções são chamadas e retornam.
Em resumo, a figura representa um processo em execução na memória, com suas diferentes seções
representando as várias áreas de memória usadas pelo programa em execução.

2- Multiprogramação é uma técnica utilizada pelos sistemas operacionais para permitir que vários
processos sejam executados simultaneamente na CPU. A ideia é manter a CPU ocupada a maior parte
do tempo possível, alternando entre a execução de vários processos. As vantagens da
multiprogramação incluem o aumento da utilização da CPU, a melhoria da eficiência do sistema, o
aumento do throughput e a redução do tempo de resposta para as tarefas do usuário. As desvantagens
incluem o aumento da complexidade do sistema operacional, a necessidade de gerenciamento de
recursos e a possibilidade de contenção de recursos.

3- Os processos podem ser criados em resposta a vários tipos de eventos, como a chegada de uma
solicitação do usuário, a execução de um programa, a resposta a uma interrupção ou a execução de
uma tarefa em segundo plano. Os processos são terminados quando concluem a execução de suas
tarefas, quando são encerrados pelo usuário ou quando ocorre um erro fatal que impossibilita a
continuação da execução.

4- As seis possíveis transições entre os estados de um processo são:


● Do estado novo (new) para o estado pronto (ready) quando o processo é criado.
● Do estado pronto (ready) para o estado executando (running) quando o processo é selecionado
para execução pela CPU.
● Do estado executando (running) para o estado pronto (ready) quando ocorre uma interrupção
de tempo ou quando o processo precisa aguardar por algum recurso.
● Do estado executando (running) para o estado bloqueado (waiting) quando o processo precisa
aguardar por algum recurso.
● Do estado bloqueado (waiting) para o estado pronto (ready) quando o recurso necessário pelo
processo se torna disponível.
● Do estado executando (running) para o estado terminado (terminated) quando o processo
conclui a execução de suas tarefas.
5- Não há transições do estado pronto (ready) para bloqueado (waiting) e nem do estado bloqueado
para executando (running) na Figura 2 porque essas transições dependem de eventos externos ao
processo, como a disponibilidade de recursos. Por exemplo, um processo só pode mudar do estado
pronto para bloqueado quando precisa aguardar por algum recurso externo ao sistema. No entanto, é
possível que alguma dessas transições ocorra em situações específicas, como quando ocorre uma
interrupção que faz com que o processo precise aguardar por algum recurso.

6- Durante as trocas/mudanças de contexto, o kernel realiza várias ações para garantir a correta
execução dos processos, incluindo a interrupção da execução do processo atual, a seleção de um novo
processo para execução, a atualização das estruturas de controle de processos, a mudança de contexto
da CPU para o novo processo e a retomada da execução do novo processo a partir do ponto em que foi
interrompido.

7- Uma tabela de processos é uma estrutura de dados utilizada pelos sistemas operacionais para
armazenar informações sobre os processos em execução no sistema. Essa tabela é geralmente mantida
pelo kernel do sistema operacional e contém informações como o ID do processo, o estado atual do
processo, a prioridade do processo, a quantidade de memória utilizada pelo processo, os recursos
alocados ao processo, entre outras informações relevantes.
Essa tabela é utilizada pelo sistema operacional para gerenciar os processos e suas interações com
outros processos e recursos do sistema. Além disso, a tabela de processos é usada para permitir que o
sistema operacional gerencie a alocação de recursos compartilhados entre os processos, como CPU,
memória e dispositivos de entrada e saída.

8-Três processos serão criados pelo programa.

9- Na linha A: 0 (no processo filho)


Na linha B : Sempre será 0
Na linha C: 2603 (no processo pai)
Na linha D: 2600 (no processo pai)

10- A saída da linha A será "PARENT: value = 5". Quando a chamada de sistema "fork()" é feita, o
valor da variável "value" é copiado para o processo filho. Portanto, o processo filho tem sua própria
cópia da variável "value" e pode modificá-la sem afetar o valor da variável no processo pai. No
processo filho, o valor da variável "value" é incrementado em 15, mas essa alteração não é refletida no
processo pai. Quando o processo pai imprime o valor da variável "value", ele ainda é igual a 5.

Você também pode gostar